SAP ABAP Dynamic Internal Table and Processing 02

Embed Size (px)

DESCRIPTION

ABAP dynamic

Citation preview

SAP ABAP Dynamic Internal table and Processing 02Another 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 TYPE REF TO cl_abap_structdescr, tabletype TYPE REF TO cl_abap_tabledescr, comp_tab TYPE cl_abap_structdescr=>component_table, new_comp_tab LIKE comp_tab, linetype TYPE REF TO cl_abap_structdescr, dref TYPE REF TO data.

FIELD-SYMBOLS: LIKE LINE OF comp_tab.FIELD-SYMBOLS: 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: TYPE STANDARD TABLE.

ASSIGN lv_dref->* TO .

SELECT * FROM sflight INTO TABLE .

sflighttype ?= cl_abap_typedescr=>describe_by_name('SFLIGHT'). comp_tab = sflighttype->get_components( ).

LOOP AT comp_tab ASSIGNING . CASE -name. WHEN 'CARRID' OR 'CONNID' OR 'FLDATE' OR 'PRICE' OR 'CURRENCY'. APPEND 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 .

SELECT * FROM sflight INTO CORRESPONDING FIELDS OF TABLE .

FIELD-SYMBOLS: TYPE ANY. FIELD-SYMBOLS: TYPE ANY. LOOP AT ASSIGNING . WRITE: /. LOOP AT new_comp_tab ASSIGNING . ASSIGN COMPONENT sy-tabix OF STRUCTURE TO . WRITE: . ENDLOOP. ENDLOOP.