Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Create Internal Table Dynamically

Former Member
0 Kudos

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

1 ACCEPTED SOLUTION

Former Member

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

2 REPLIES 2

Former Member

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

Former Member
0 Kudos

Solved Problem