You are on page 1of 2

SAP ABAP Dynamic Internal table and Processing 02

Another method of creating and processing dynamic internal table in ABAP.

REPORT zpwtest . DATA: lv_tablename TYPE string VALUE 'SFLIGHT'. DATA: lv_dref TYPE REF TO data. DATA: sflighttype tabletype comp_tab new_comp_tab linetype dref TYPE TYPE TYPE LIKE TYPE TYPE REF TO cl_abap_structdescr, REF TO cl_abap_tabledescr, cl_abap_structdescr=>component_table, comp_tab, REF TO cl_abap_structdescr, REF TO data.

FIELD-SYMBOLS: <wa_comp> LIKE LINE OF comp_tab. FIELD-SYMBOLS: <table> TYPE ANY TABLE. *&---------------------------------------------------------------------& * Start of Selection *&---------------------------------------------------------------------& START-OF-SELECTION. * Creation of dynamic internal table CREATE DATA lv_dref TYPE TABLE OF (lv_tablename). FIELD-SYMBOLS: <fs> TYPE STANDARD TABLE. ASSIGN lv_dref->* TO <fs>. SELECT * FROM sflight INTO TABLE <fs>. sflighttype ?= cl_abap_typedescr=>describe_by_name('SFLIGHT'). comp_tab = sflighttype->get_components( ). LOOP AT comp_tab ASSIGNING <wa_comp>. CASE <wa_comp>-name. WHEN 'CARRID' OR 'CONNID' OR 'FLDATE' OR 'PRICE' OR 'CURRENCY'. APPEND <wa_comp> TO new_comp_tab. ENDCASE. ENDLOOP. linetype = cl_abap_structdescr=>create( new_comp_tab ). tabletype = cl_abap_tabledescr=>create( p_line_type = linetype p_table_kind = cl_abap_tabledescr=>tablekind_std ). CREATE DATA dref TYPE HANDLE tabletype. ASSIGN dref->* TO <table>. SELECT * FROM sflight INTO CORRESPONDING FIELDS OF TABLE <table>. FIELD-SYMBOLS: <wa_data> TYPE ANY. FIELD-SYMBOLS: <wa_field> TYPE ANY. LOOP AT <table> ASSIGNING <wa_data>. WRITE: /. LOOP AT new_comp_tab ASSIGNING <wa_comp>.

ASSIGN COMPONENT sy-tabix OF STRUCTURE <wa_data> TO <wa_field>. WRITE: <wa_field>. ENDLOOP. ENDLOOP.

You might also like