<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic how to extend structures at runtime in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-extend-structures-at-runtime/m-p/925639#M59801</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hello,&lt;/P&gt;&lt;P&gt;is there any chance to&lt;/P&gt;&lt;P&gt;extend a data structure at runtime?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;normally you define a structure with&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: begin of x,&lt;/P&gt;&lt;P&gt;      field1 type c,&lt;/P&gt;&lt;P&gt;      field2 type n.&lt;/P&gt;&lt;P&gt;data: end of x.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;this structure is the basis for your internal tables etc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;it would be definitely nice to add a third field at runtime if it is needed.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;in other programming languages it would also be possible to add elements to an array. the question ist: how can i add fields to the structure dynamically?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;it could be useful for a lot of situations.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;dynamically generated fieldcatalogue for example.&lt;/P&gt;&lt;P&gt;i think i could succeed in changing the structure by using field symbols in combination with dynamically creating data objects by the "CREATE DATA" statement.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;has anyone already done something similar?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 04 Mar 2005 11:57:26 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2005-03-04T11:57:26Z</dc:date>
    <item>
      <title>how to extend structures at runtime</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-extend-structures-at-runtime/m-p/925639#M59801</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hello,&lt;/P&gt;&lt;P&gt;is there any chance to&lt;/P&gt;&lt;P&gt;extend a data structure at runtime?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;normally you define a structure with&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: begin of x,&lt;/P&gt;&lt;P&gt;      field1 type c,&lt;/P&gt;&lt;P&gt;      field2 type n.&lt;/P&gt;&lt;P&gt;data: end of x.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;this structure is the basis for your internal tables etc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;it would be definitely nice to add a third field at runtime if it is needed.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;in other programming languages it would also be possible to add elements to an array. the question ist: how can i add fields to the structure dynamically?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;it could be useful for a lot of situations.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;dynamically generated fieldcatalogue for example.&lt;/P&gt;&lt;P&gt;i think i could succeed in changing the structure by using field symbols in combination with dynamically creating data objects by the "CREATE DATA" statement.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;has anyone already done something similar?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 04 Mar 2005 11:57:26 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-extend-structures-at-runtime/m-p/925639#M59801</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2005-03-04T11:57:26Z</dc:date>
    </item>
    <item>
      <title>Re: how to extend structures at runtime</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-extend-structures-at-runtime/m-p/925640#M59802</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Gideon,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It is possible using ABAP runtime program generation like in code below.&lt;/P&gt;&lt;P&gt;This program generate a dinamic ALV with N fields. There is a parameter where the user type how many fields he wants to display (or generate).&lt;/P&gt;&lt;P&gt;Then form f_create_dynamic_table generate an internal table with N fields according to the number in the parameter.&lt;/P&gt;&lt;P&gt;You can change the program to generate a dinamic structure if you want, in fact it already does it.&lt;/P&gt;&lt;P&gt;Just cut and paste the program and execute in your system.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Mauricio&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REPORT zasmm008.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;$&lt;/STRONG&gt;$ Declarações -&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="---------------------------------------" /&gt;&lt;P&gt;TYPE-POOLS:&lt;/P&gt;&lt;P&gt;  kkblo.    "Tipos para lista especial&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FIELD-SYMBOLS:&lt;/P&gt;&lt;P&gt;   TYPE table.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PARAMETERS p_qtd TYPE i OBLIGATORY DEFAULT 10.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;$&lt;/STRONG&gt;$ Eventos -&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="-------------------------------------------" /&gt;&lt;P&gt;INITIALIZATION.&lt;/P&gt;&lt;P&gt;  %_p_qtd_%_app_%-text = 'Dinamic fields quantity'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;  CHECK p_qtd &amp;gt; 0 AND p_qtd &amp;lt; 100.&lt;/P&gt;&lt;P&gt;  PERFORM f_create_dynamic_table.&lt;/P&gt;&lt;P&gt;  PERFORM f_fill_dynamic_table.&lt;/P&gt;&lt;P&gt;  PERFORM f_create_alv.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;$&lt;/STRONG&gt;$ Forms -&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="---------------------------------------------" /&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="-------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  f_create_dynamic_table&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="-------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM f_create_dynamic_table.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    lv_line           TYPE i,&lt;/P&gt;&lt;P&gt;    lv_word(72)       TYPE c,&lt;/P&gt;&lt;P&gt;    lv_form(30)       TYPE c VALUE 'TABLE_CREATE',&lt;/P&gt;&lt;P&gt;    lv_message(240)   TYPE c,&lt;/P&gt;&lt;P&gt;    lp_table          TYPE REF TO data,&lt;/P&gt;&lt;P&gt;    lp_struc          TYPE REF TO data,&lt;/P&gt;&lt;P&gt;    lv_name           LIKE sy-repid,&lt;/P&gt;&lt;P&gt;    lv_cont(02)       TYPE n,&lt;/P&gt;&lt;P&gt;    lv_lng            TYPE i,&lt;/P&gt;&lt;P&gt;    lv_typesrting(6)  TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;The dynamic internal table stucture&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DATA: BEGIN OF lt_struct OCCURS 0,&lt;/P&gt;&lt;P&gt;          fildname(8) TYPE c,&lt;/P&gt;&lt;P&gt;          abptype TYPE c,&lt;/P&gt;&lt;P&gt;          length TYPE i,&lt;/P&gt;&lt;P&gt;        END OF lt_struct.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;The dynamic program source table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DATA: BEGIN OF lt_inctabl OCCURS 0,&lt;/P&gt;&lt;P&gt;          line(72),&lt;/P&gt;&lt;P&gt;        END OF lt_inctabl.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Sample dynamic internal table stucture&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DO p_qtd TIMES.&lt;/P&gt;&lt;P&gt;    ADD 1 TO lv_cont.&lt;/P&gt;&lt;P&gt;    CONCATENATE 'FIELD' lv_cont INTO lt_struct-fildname.&lt;/P&gt;&lt;P&gt;    lt_struct-abptype = 'C'.&lt;/P&gt;&lt;P&gt;    lt_struct-length = '4'.&lt;/P&gt;&lt;P&gt;    APPEND lt_struct.&lt;/P&gt;&lt;P&gt;  ENDDO.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Create the dynamic internal table definition in the dyn. program&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  lt_inctabl-line = 'PROGRAM ZDYNPRO.'.&lt;/P&gt;&lt;P&gt;  APPEND lt_inctabl.&lt;/P&gt;&lt;P&gt;  lt_inctabl-line = 'FORM TABLE_CREATE CHANGING P_TABLE P_STRUC.'.&lt;/P&gt;&lt;P&gt;  APPEND lt_inctabl.&lt;/P&gt;&lt;P&gt;  lt_inctabl-line = 'DATA: BEGIN OF DYNTAB OCCURS 0,'.&lt;/P&gt;&lt;P&gt;  APPEND lt_inctabl.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT lt_struct.&lt;/P&gt;&lt;P&gt;    lt_inctabl-line = lt_struct-fildname.&lt;/P&gt;&lt;P&gt;    lv_lng = strlen( lt_struct-fildname ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF NOT lt_struct-length IS INITIAL .&lt;/P&gt;&lt;P&gt;      lv_typesrting(1) = '('.&lt;/P&gt;&lt;P&gt;      lv_typesrting+1 = lt_struct-length.&lt;/P&gt;&lt;P&gt;      lv_typesrting+5 = ')'.&lt;/P&gt;&lt;P&gt;      CONDENSE lv_typesrting NO-GAPS.&lt;/P&gt;&lt;P&gt;      lt_inctabl-line+lv_lng = lv_typesrting.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    lt_inctabl-line+15 = 'TYPE'.&lt;/P&gt;&lt;P&gt;    lt_inctabl-line+21 = lt_struct-abptype.&lt;/P&gt;&lt;P&gt;    lt_inctabl-line+22 = ','.&lt;/P&gt;&lt;P&gt;    APPEND lt_inctabl.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;  lt_inctabl-line = 'END OF DYNTAB.'.&lt;/P&gt;&lt;P&gt;  APPEND lt_inctabl.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  lt_inctabl-line = 'DATA: POINTER TYPE REF TO DATA.'.&lt;/P&gt;&lt;P&gt;  APPEND lt_inctabl.&lt;/P&gt;&lt;P&gt;  lt_inctabl-line = 'CREATE DATA POINTER LIKE DYNTAB[].'.&lt;/P&gt;&lt;P&gt;  APPEND lt_inctabl.&lt;/P&gt;&lt;P&gt;  lt_inctabl-line = 'P_TABLE = POINTER.'.&lt;/P&gt;&lt;P&gt;  APPEND lt_inctabl.&lt;/P&gt;&lt;P&gt;  lt_inctabl-line = 'CREATE DATA POINTER LIKE LINE OF DYNTAB.'.&lt;/P&gt;&lt;P&gt;  APPEND lt_inctabl.&lt;/P&gt;&lt;P&gt;  lt_inctabl-line = 'P_STRUC = POINTER.'.&lt;/P&gt;&lt;P&gt;  APPEND lt_inctabl.&lt;/P&gt;&lt;P&gt;  lt_inctabl-line = 'ENDFORM.'.&lt;/P&gt;&lt;P&gt;  APPEND lt_inctabl.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CATCH SYSTEM-EXCEPTIONS generate_subpool_dir_full = 9.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    GENERATE SUBROUTINE POOL lt_inctabl[] NAME lv_name&lt;/P&gt;&lt;P&gt;             MESSAGE lv_message LINE lv_line WORD lv_word.&lt;/P&gt;&lt;P&gt;  ENDCATCH.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM (lv_form) IN PROGRAM (lv_name) CHANGING lp_table lp_struc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Dynamic table in &amp;lt;tb&amp;gt; and its header line in &amp;lt;st&amp;gt;&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ASSIGN lp_table-&amp;gt;*  TO .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " f_create_dynamic_table&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="-------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  f_create_alv&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="-------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM f_create_alv.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    ls_layout    TYPE slis_layout_alv,&lt;/P&gt;&lt;P&gt;    lv_cont(02)  TYPE n,&lt;/P&gt;&lt;P&gt;    lt_fieldcat  TYPE slis_t_fieldcat_alv WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DO p_qtd TIMES.&lt;/P&gt;&lt;P&gt;    CLEAR lt_fieldcat.&lt;/P&gt;&lt;P&gt;    ADD 1 TO lv_cont.&lt;/P&gt;&lt;P&gt;    CONCATENATE 'FIELD' lv_cont INTO lt_fieldcat-fieldname.&lt;/P&gt;&lt;P&gt;    CONCATENATE 'Campo' lv_cont INTO lt_fieldcat-seltext_s&lt;/P&gt;&lt;P&gt;                SEPARATED BY space.&lt;/P&gt;&lt;P&gt;    lt_fieldcat-seltext_m = lt_fieldcat-seltext_s.&lt;/P&gt;&lt;P&gt;    lt_fieldcat-seltext_l = lt_fieldcat-seltext_s.&lt;/P&gt;&lt;P&gt;    lt_fieldcat-outputlen = 10.&lt;/P&gt;&lt;P&gt;    APPEND lt_fieldcat.&lt;/P&gt;&lt;P&gt;  ENDDO.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ls_layout-zebra = 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            is_layout     = ls_layout&lt;/P&gt;&lt;P&gt;            it_fieldcat   = lt_fieldcat[]&lt;/P&gt;&lt;P&gt;       TABLES&lt;/P&gt;&lt;P&gt;            t_outtab      = &lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            program_error = 1&lt;/P&gt;&lt;P&gt;            OTHERS        = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " f_create_alv&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  f_fill_dynamic_table&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM f_fill_dynamic_table.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    lv_line(2)   TYPE n,&lt;/P&gt;&lt;P&gt;    lv_field(2)  TYPE n.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DO 20 TIMES.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ADD 1 TO lv_line.&lt;/P&gt;&lt;P&gt;    CLEAR lv_field.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    DO p_qtd TIMES.&lt;/P&gt;&lt;P&gt;      ADD 1 TO lv_field.&lt;/P&gt;&lt;P&gt;      ASSIGN COMPONENT lv_field OF STRUCTURE .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDDO.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " f_fill_dynamic_table&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 04 Mar 2005 12:10:48 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-extend-structures-at-runtime/m-p/925640#M59802</guid>
      <dc:creator>MauricioMiao</dc:creator>
      <dc:date>2005-03-04T12:10:48Z</dc:date>
    </item>
    <item>
      <title>Re: how to extend structures at runtime</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-extend-structures-at-runtime/m-p/925641#M59803</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hey mauricio, thanks for your quick and useful answer.&lt;/P&gt;&lt;P&gt;all problems are solved. &lt;/P&gt;&lt;P&gt;&lt;SPAN __jive_emoticon_name="happy"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;i didn´t know&lt;/P&gt;&lt;P&gt;the statement &lt;/P&gt;&lt;P&gt;"GENERATE SUBROUTINE POOL" before. &lt;/P&gt;&lt;P&gt;have a nice weekend!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 04 Mar 2005 13:23:40 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-extend-structures-at-runtime/m-p/925641#M59803</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2005-03-04T13:23:40Z</dc:date>
    </item>
  </channel>
</rss>

