02-21-2008 11:55 PM
I need to create an internal table dynamically for the field names in another internal. Kindly help me.
For Eg.
Internal Table IT_FNAME has following field names
FNAME
-
WERKS
BUKRS
MATNR
MAKTX
Internal table IT_OUT should be dynamically created with the above fields.
Thanks
02-22-2008 12:32 AM
Here is a sample code to create an internal table dynamically.
TYPE-POOLS:
abap.
DATA:
gr_structdescr TYPE REF TO cl_abap_structdescr,
gr_tabledescr TYPE REF TO cl_abap_tabledescr,
gt_components TYPE abap_component_tab,
gw_component TYPE LINE OF abap_component_tab,
gt_keys TYPE abap_keydescr_tab,
gw_key TYPE LINE OF abap_keydescr_tab,
gr_wa TYPE REF TO data,
gr_itab TYPE REF TO data.
FIELD-SYMBOLS:
<gw_wa> TYPE ANY,
<gt_itab> TYPE ANY TABLE.
START-OF-SELECTION.
* determine components of structure -> GT_COMPONENTS
MOVE 'COMP1' TO gw_component-name.
gw_component-type ?= cl_abap_elemdescr=>get_string( ).
INSERT gw_component INTO TABLE gt_components.
MOVE 'COMP2' TO gw_component-name.
gw_component-type ?= cl_abap_elemdescr=>get_i( ).
INSERT gw_component INTO TABLE gt_components.
* get structure descriptor -> GR_STRUCTDESCR
gr_structdescr ?= cl_abap_structdescr=>create( gt_components ).
* create work area of structure GR_STRUCTDESCR -> GR_WA
CREATE DATA gr_wa TYPE HANDLE gr_structdescr.
ASSIGN gr_wa->* TO <gw_wa>.
* determine key components -> GT_KEYS
MOVE 'COMP1' TO gw_key-name.
INSERT gw_key INTO TABLE gt_keys.
* create descriptor for internal table -> GR_TABLEDESCR
gr_tabledescr ?= cl_abap_tabledescr=>create( p_line_type = gr_structdescr
p_table_kind = cl_abap_tabledescr=>tablekind_hashed
p_unique = abap_true
p_key = gt_keys
p_key_kind = cl_abap_tabledescr=>keydefkind_user ).
* create internal table -> GR_ITAB
CREATE DATA gr_itab TYPE HANDLE gr_tabledescr.
ASSIGN gr_itab->* TO <gt_itab>.
sy-subrc = sy-subrc.
Regards
Sudhir Atluru
02-22-2008 12:32 AM
Here is a sample code to create an internal table dynamically.
TYPE-POOLS:
abap.
DATA:
gr_structdescr TYPE REF TO cl_abap_structdescr,
gr_tabledescr TYPE REF TO cl_abap_tabledescr,
gt_components TYPE abap_component_tab,
gw_component TYPE LINE OF abap_component_tab,
gt_keys TYPE abap_keydescr_tab,
gw_key TYPE LINE OF abap_keydescr_tab,
gr_wa TYPE REF TO data,
gr_itab TYPE REF TO data.
FIELD-SYMBOLS:
<gw_wa> TYPE ANY,
<gt_itab> TYPE ANY TABLE.
START-OF-SELECTION.
* determine components of structure -> GT_COMPONENTS
MOVE 'COMP1' TO gw_component-name.
gw_component-type ?= cl_abap_elemdescr=>get_string( ).
INSERT gw_component INTO TABLE gt_components.
MOVE 'COMP2' TO gw_component-name.
gw_component-type ?= cl_abap_elemdescr=>get_i( ).
INSERT gw_component INTO TABLE gt_components.
* get structure descriptor -> GR_STRUCTDESCR
gr_structdescr ?= cl_abap_structdescr=>create( gt_components ).
* create work area of structure GR_STRUCTDESCR -> GR_WA
CREATE DATA gr_wa TYPE HANDLE gr_structdescr.
ASSIGN gr_wa->* TO <gw_wa>.
* determine key components -> GT_KEYS
MOVE 'COMP1' TO gw_key-name.
INSERT gw_key INTO TABLE gt_keys.
* create descriptor for internal table -> GR_TABLEDESCR
gr_tabledescr ?= cl_abap_tabledescr=>create( p_line_type = gr_structdescr
p_table_kind = cl_abap_tabledescr=>tablekind_hashed
p_unique = abap_true
p_key = gt_keys
p_key_kind = cl_abap_tabledescr=>keydefkind_user ).
* create internal table -> GR_ITAB
CREATE DATA gr_itab TYPE HANDLE gr_tabledescr.
ASSIGN gr_itab->* TO <gt_itab>.
sy-subrc = sy-subrc.
Regards
Sudhir Atluru
02-28-2008 3:27 PM