Application Development and Automation 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: 
Read only

Create Dynamic Structure in ABAP

Former Member
0 Likes
31,962

Hi experts,

I have the following question:

I want to build a dynamic structure without knowing a type or something. Something like this:

DATA: lv_type_cl TYPE REF TO cl_abap_type_ex.

DATA: lv_struc_cl TYPE REF TO cl_abap_struc_ex.

DATA: lv_structure_final TYPE any_structure.

lv_type_cl->add_element( 'ID', INT4).

lv_type_cl->add_element( 'NAME', STRING).

lv_type_cl->add_element('EMAIL', STRING).

lv_struc_cl->set_type( lv_type_cl ).

lv_structure_final = lv_struc_cl->create_structure( ).

I hope this explanation is useful for you. Any hints are appreciated.

Thanks in advance!

Best regards,

hhermann

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
10,319

Hello Heinrich,

You can try with this link:

http://wiki.sdn.sap.com/wiki/display/ABAP/Dynamic+Internal+table

Best regards,

Javi

5 REPLIES 5
Read only

Former Member
0 Likes
10,320

Hello Heinrich,

You can try with this link:

http://wiki.sdn.sap.com/wiki/display/ABAP/Dynamic+Internal+table

Best regards,

Javi

Read only

0 Likes
10,319

Thank you very much, solved my problem!

Read only

Former Member
0 Likes
10,319

Hi,

Check out the below links.

<Link farm removed by moderator>

Hope it will be useful for you.

Message was edited by: Vinod Kumar

Read only

Former Member
0 Likes
10,319

Hi experts,

got a new problem... I get an exception: GENERATE_SUBPOOL_DIR_FULL when I call these method 37 times...

I need this code more than 36 times... What can I do ?

Thanks in advance

Best regards,

hhermann

TYPE-POOLS : abap.

  DATA: lo_nd_massnahmen_kopf           TYPE REF TO if_wd_context_node.

  DATA: lt_massnahmen_kopf              TYPE wd_this->

elements_massnahmen_kopf.

  FIELD-SYMBOLS: <fs_massnahmen_kopf>   TYPE wd_this->

element_massnahmen_kopf.

  DATA: lo_nd_massnahmen_plan           TYPE REF TO if_wd_context_node.

  DATA: lt_massnahmen_plan              TYPE wd_this->

elements_massnahmen_plan.

  FIELD-SYMBOLS: <fs_massnahmen_plan>   TYPE wd_this->

element_massnahmen_plan.

  DATA: lv_conf_kt                      TYPE REF TO

cl_salv_wd_config_table.

  DATA: rootnode_info         TYPE REF TO if_wd_context_node_info.

  DATA: budget_kt_info        TYPE REF TO if_wd_context_node_info.

  DATA: budget_kt_node        TYPE REF TO if_wd_context_node.

  DATA: lo_cmp_usage_kt       TYPE REF TO if_wd_component_usage.

  DATA: lo_ifc_kt             TYPE REF TO iwci_salv_wd_table.

  DATA: table_descr           TYPE REF TO cl_abap_tabledescr.

  DATA: struct_descr          TYPE REF TO cl_abap_structdescr.

  DATA: table_gen             TYPE REF TO cl_abap_tabledescr.

  DATA: lo_column             TYPE REF TO cl_salv_wd_column.

  DATA: lr_header             TYPE REF TO cl_salv_wd_column_header.

lo_nd_massnahmen_kopf = wd_context->get_child_node( name = wd_this-> wdctx_massnahmen_kopf ).

lo_nd_massnahmen_kopf->get_static_attributes_table( IMPORTING table = lt_massnahmen_kopf ).

lo_nd_massnahmen_plan = wd_context->get_child_node( name = wd_this-> wdctx_massnahmen_plan ).

lo_nd_massnahmen_plan->get_static_attributes_table( IMPORTING table = lt_massnahmen_plan ).

  TYPES: BEGIN OF ls_kt,

    name TYPE string,

         END OF ls_kt.

  DATA: ls_kt TYPE ls_kt.

  DATA: lt_kt TYPE TABLE OF ls_kt.

  "Dynamische Tabellen

  FIELD-SYMBOLS: <dyn_table> TYPE STANDARD TABLE,

<dyn_wa> TYPE any,

<dyn_field> TYPE any.

  DATA:  dy_table            TYPE REF TO data,

dy_line             TYPE REF TO data.

*--------------------------------------------------------------------*

* Kostenträger erfassen

*--------------------------------------------------------------------*

  IF lt_massnahmen_plan IS NOT INITIAL.

    LOOP AT lt_massnahmen_plan ASSIGNING <fs_massnahmen_plan>.

      ls_kt-name = <fs_massnahmen_plan>-kotrgr.

      APPEND ls_kt TO lt_kt.

      CLEAR: ls_kt.

    ENDLOOP.

    SORT lt_kt DESCENDING BY name.

    DELETE ADJACENT DUPLICATES FROM lt_kt COMPARING name.

*--------------------------------------------------------------------*

* Dynamische Struktur bauen

*--------------------------------------------------------------------*

    DATA: ls_xfc TYPE lvc_s_fcat.

    DATA: lt_xfc TYPE lvc_t_fcat.

    "Feste Headerspalte ganz links

ls_xfc-fieldname = 'HEADER'.

    ls_xfc-datatype = 'CHAR'.

    ls_xfc-inttype = 'C'.

ls_xfc-intlen  = 30.

    APPEND ls_xfc TO lt_xfc.

    CLEAR: ls_xfc.

    "Feste Aktuelle Summe ganz links

ls_xfc-fieldname = 'SUM'.

    ls_xfc-datatype = 'PACK'.

    ls_xfc-inttype = 'P'.

    ls_xfc-intlen = 16.

    ls_xfc-decimals = 2.

    APPEND ls_xfc TO lt_xfc.

    CLEAR: ls_xfc.

    "Festes Delta ganz links

ls_xfc-fieldname = 'DELTA'.

    ls_xfc-datatype = 'PACK'.

    ls_xfc-inttype = 'P'.

    ls_xfc-intlen = 16.

    ls_xfc-decimals = 2.

    APPEND ls_xfc TO lt_xfc.

    CLEAR: ls_xfc.

    LOOP AT lt_kt INTO ls_kt.

ls_xfc-fieldname = ls_kt-name.

ls_xfc-datatype = 'PACK'.

ls_xfc-inttype = 'P'.

      ls_xfc-intlen = 16.

ls_xfc-decimals = 2.

      APPEND ls_xfc TO lt_xfc.

      CLEAR: ls_xfc.

    ENDLOOP.

    CALL METHOD cl_alv_table_create=>create_dynamic_table

      EXPORTING

it_fieldcatalog  = lt_xfc

i_length_in_byte = 'X'

      IMPORTING

ep_table         = dy_table.

    ASSIGN dy_table->* TO <dyn_table>.

    CREATE DATA dy_line LIKE LINE OF <dyn_table>.

    ASSIGN dy_line->* TO <dyn_wa>.

Read only