For project reason I need to fill some excel.

The content of each column comes from content in SE11:

In order to avoid such boring task, I write a small ABAP class to automate it.

This class will first read corresponding database table name based on CRM settype id, then call function module DDIF_NAMETAB_GET to get all metadata of each table field, and then send the data to clipboard.

Once done, put the focus on the first cell of content row, press Ctrl+V, all the data from clipboard will be copied into excel automatically.

The source code could be found below:

class ZCL_EXCEL_TOOL definition  public  final  create public .public section.  methods GET_SETTYPE_FIELDS    importing      !IV_SETTYPE_ID type COMT_FRGTYPE_ID default 'COMM_PR_SHTEXT' .  PROTECTED SECTION.private section.  types:    BEGIN OF ty_column,        a_index       TYPE char3,        b_table       TYPE dd03l-tabname,        c_fieldname   TYPE dd03l-fieldname,        d_element     TYPE dd03l-rollname,        e_datatype    TYPE x031l-dtyp,        f_length      TYPE char4,        g_description TYPE char40,      END OF ty_column .  types:    tt_column TYPE STANDARD TABLE OF ty_column WITH KEY a_index b_table c_fieldname .  types:    BEGIN OF ty_clipdata,        data TYPE c LENGTH 500,      END   OF ty_clipdata .  types:    tt_formatted TYPE STANDARD TABLE OF ty_clipdata .  data MT_COLUMN type TT_COLUMN .  data MT_FORMATTED type TT_FORMATTED .  constants C_TAB type CHAR1 value CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB ##NO_TEXT.  methods CONVERT .  methods GET_FIELD_LABEL    importing      !IV_TAB_NAME type DDOBJNAME      !IV_FIELD_NAME type DFIES-FIELDNAME    returning      value(RV_LABEL) type STRING .ENDCLASS.CLASS ZCL_EXCEL_TOOL IMPLEMENTATION.* <SIGNATURE>---------------------------------------------------------------------------------------+* | Instance Private Method ZCL_EXCEL_TOOL->CONVERT* +-------------------------------------------------------------------------------------------------+* +--------------------------------------------------------------------------------------</SIGNATURE>  METHOD convert.    LOOP AT mt_column ASSIGNING FIELD-SYMBOL(<raw>).      APPEND INITIAL LINE TO mt_formatted ASSIGNING FIELD-SYMBOL(<converted>).      CONCATENATE <raw>-a_index <raw>-b_table <raw>-c_fieldname <raw>-d_element <raw>-e_datatype      <raw>-f_length <raw>-g_description INTO <converted> SEPARATED BY c_tab.    ENDLOOP.  ENDMETHOD.* <SIGNATURE>---------------------------------------------------------------------------------------+* | Instance Private Method ZCL_EXCEL_TOOL->GET_FIELD_LABEL* +-------------------------------------------------------------------------------------------------+* | [--->] IV_TAB_NAME                    TYPE        DDOBJNAME* | [--->] IV_FIELD_NAME                  TYPE        DFIES-FIELDNAME* | [<-()] RV_LABEL                       TYPE        STRING* +--------------------------------------------------------------------------------------</SIGNATURE>  METHOD get_field_label.    CALL FUNCTION 'DDIF_FIELDLABEL_GET'      EXPORTING        tabname   = iv_tab_name        fieldname = iv_field_name        langu     = sy-langu      IMPORTING        label     = rv_label.  ENDMETHOD.* <SIGNATURE>---------------------------------------------------------------------------------------+* | Instance Public Method ZCL_EXCEL_TOOL->GET_SETTYPE_FIELDS* +-------------------------------------------------------------------------------------------------+* | [--->] IV_SETTYPE_ID                  TYPE        COMT_FRGTYPE_ID (default ='COMM_PR_SHTEXT')* +--------------------------------------------------------------------------------------</SIGNATURE>  METHOD get_settype_fields.    DATA: lv_tab  TYPE comc_settype-frgtype_tab,          lv_ret  TYPE int4,          lt_list TYPE STANDARD TABLE OF x031l.    SELECT SINGLE frgtype_tab INTO lv_tab FROM comc_settype WHERE frgtype_id = iv_settype_id.    IF sy-subrc <> 0.      WRITE: / 'no database table maintained for settype: ', iv_settype_id.      RETURN.    ENDIF.    CALL FUNCTION 'DDIF_NAMETAB_GET'      EXPORTING        tabname   = CONV ddobjname( lv_tab )        status    = 'A'      TABLES        x031l_tab = lt_list      EXCEPTIONS        not_found = 1        OTHERS    = 2.    IF sy-subrc <> 0.      WRITE:/ 'table metadata parse error'.      RETURN.    ENDIF.    LOOP AT lt_list ASSIGNING FIELD-SYMBOL(<list>).      APPEND INITIAL LINE TO mt_column ASSIGNING FIELD-SYMBOL(<insert>).      <insert>-a_index = sy-tabix.      <insert>-b_table = lv_tab.      <insert>-c_fieldname = <list>-fieldname.      <insert>-d_element = <list>-rollname.      <insert>-e_datatype = <list>-dtyp.      <insert>-f_length = CONV i( <list>-exlength ). "cast CL_ABAP_ELEMDESCR( CL_ABAP_ELEMDESCR=>describe_by_name( <list>-rollname ) )->output_length.      <insert>-g_description = get_field_label( EXPORTING iv_tab_name = CONV #( lv_tab ) iv_field_name = <list>-fieldname ).    ENDLOOP.    convert( ).    cl_gui_frontend_services=>clipboard_export(    EXPORTING        no_auth_check        = abap_true        IMPORTING          data                 = mt_formatted        CHANGING          rc                   = lv_ret        EXCEPTIONS          cntl_error           = 1          error_no_gui         = 2          not_supported_by_gui = 3      ).  ENDMETHOD.ENDCLASS.