<?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 Re: Dynamic internaltable in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/dynamic-internaltable/m-p/3542266#M852169</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Veera,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Refer the below related threads&lt;/P&gt;&lt;P&gt;[&lt;A class="jive_macro jive_macro_message" href="https://community.sap.com/" __jive_macro_name="message" modifiedtitle="true" __default_attr="2712199"&gt;&lt;/A&gt;]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;[&lt;A class="jive_macro jive_macro_message" href="https://community.sap.com/" __jive_macro_name="message" modifiedtitle="true" __default_attr="2401645"&gt;&lt;/A&gt;]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;[http://help.sap.com/saphelp_nw2004s/helpdata/en/fc/eb35de358411d1829f0000e829fbfe/content.htm]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;[https://www.sdn.sap.com/irj/sdn/weblogs?blog=/pub/wlg/2071] &lt;B&gt;[original link is broken]&lt;/B&gt; &lt;B&gt;[original link is broken]&lt;/B&gt; &lt;B&gt;[original link is broken]&lt;/B&gt;;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;EX:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Dynamic internal table is internal table that we create on the fly with flexible column numbers. &lt;/P&gt;&lt;P&gt;For sample code, please look at this code tutorial. Hopefully it can help you &lt;SPAN __jive_emoticon_name="wink"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Check this link:&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.saptechnical.com/Tutorials/ABAP/DynamicInternaltable/DynamicInternalTable.htm" target="test_blank"&gt;http://www.saptechnical.com/Tutorials/ABAP/DynamicInternaltable/DynamicInternalTable.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Sample code:&lt;/P&gt;&lt;P&gt;DATA: l_cnt(2) TYPE n,&lt;/P&gt;&lt;P&gt;l_cnt1(3) TYPE n,&lt;/P&gt;&lt;P&gt;l_nam(12),&lt;/P&gt;&lt;P&gt;l_con(18) TYPE c,&lt;/P&gt;&lt;P&gt;l_con1(18) TYPE c,&lt;/P&gt;&lt;P&gt;lf_mat TYPE matnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SORT it_bom_expl BY bom_comp bom_mat level.&lt;/P&gt;&lt;P&gt;CLEAR: l_cnt1, &amp;lt;fs_dyn_wa&amp;gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Looping the component internal table &lt;/P&gt;&lt;P&gt;LOOP AT it_bom_expl INTO gf_it_bom_expl.&lt;/P&gt;&lt;P&gt;CLEAR: l_cnt1.&lt;/P&gt;&lt;P&gt;AT NEW bom_comp.&lt;/P&gt;&lt;P&gt;CLEAR: l_cnt, &amp;lt;fs_dyn_wa&amp;gt;, lf_mat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For every new bom component the material data is moved to &lt;/P&gt;&lt;P&gt;temp material table which will be used for assigning the levels &lt;/P&gt;&lt;P&gt;checking the count &lt;/P&gt;&lt;P&gt;it_mat_temp] = it_mat[.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Component data is been assigned to the field symbol which is checked &lt;/P&gt;&lt;P&gt;against the field of dynamic internal table and the value of the &lt;/P&gt;&lt;P&gt;component number is been passed to the dynamic internal table field &lt;/P&gt;&lt;P&gt;value. &lt;/P&gt;&lt;P&gt;ASSIGN COMPONENT c_comp_list OF STRUCTURE &amp;lt;fs_dyn_wa&amp;gt; TO&lt;/P&gt;&lt;P&gt;&amp;lt;fs_check&amp;gt;.&lt;/P&gt;&lt;P&gt;&amp;lt;fs_check&amp;gt; = gf_it_bom_expl-bom_comp.&lt;/P&gt;&lt;P&gt;ENDAT.&lt;/P&gt;&lt;P&gt;AT NEW bom_mat.&lt;/P&gt;&lt;P&gt;CLEAR l_con.&lt;/P&gt;&lt;P&gt;ENDAT.&lt;/P&gt;&lt;P&gt;lf_mat = gf_it_bom_expl-bom_mat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Looping the temp internal table and looping the dynamic internal table &lt;/P&gt;&lt;P&gt;*by reading line by line into workarea, the materialxxn is been assigned&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;to field symbol which will be checked and used. &lt;/P&gt;&lt;P&gt;LOOP AT it_mat_temp.&lt;/P&gt;&lt;P&gt;l_nam = c_mat.&lt;/P&gt;&lt;P&gt;l_cnt1 = l_cnt1 + 1.&lt;/P&gt;&lt;P&gt;CONCATENATE l_nam l_cnt1 INTO l_nam.&lt;/P&gt;&lt;P&gt;LOOP AT &amp;lt;fs_dyn_table2&amp;gt; ASSIGNING &amp;lt;fs_dyn_wa2&amp;gt;.&lt;/P&gt;&lt;P&gt;ASSIGN COMPONENT l_nam OF STRUCTURE &amp;lt;fs_dyn_wa2&amp;gt; TO &amp;lt;fs_xy&amp;gt;.&lt;/P&gt;&lt;P&gt;ENDLOOP.&lt;/P&gt;&lt;P&gt;IF &amp;lt;fs_xy&amp;gt; = lf_mat.&lt;/P&gt;&lt;P&gt;CLEAR lf_mat.&lt;/P&gt;&lt;P&gt;l_con1 = l_con.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Checking whether the material exists for a component and if so it is &lt;/P&gt;&lt;P&gt;been assigned to the field symbol which is checked against the field &lt;/P&gt;&lt;P&gt;of dynamic internal table and the level of the component number &lt;/P&gt;&lt;P&gt;against material is been passed to the dynamic internal table field &lt;/P&gt;&lt;P&gt;value. &lt;/P&gt;&lt;P&gt;IF &amp;lt;fs_xy&amp;gt; = gf_it_bom_expl-bom_mat.&lt;/P&gt;&lt;P&gt;ASSIGN COMPONENT l_nam OF STRUCTURE &amp;lt;fs_dyn_wa&amp;gt; TO &amp;lt;fs_check&amp;gt;.&lt;/P&gt;&lt;P&gt;CLEAR l_con.&lt;/P&gt;&lt;P&gt;MOVE gf_it_bom_expl-level TO l_con.&lt;/P&gt;&lt;P&gt;CONCATENATE c_val_l l_con INTO l_con.&lt;/P&gt;&lt;P&gt;CONDENSE l_con NO-GAPS.&lt;/P&gt;&lt;P&gt;IF l_con1 NE space.&lt;/P&gt;&lt;P&gt;CONCATENATE l_con1 l_con INTO l_con SEPARATED BY c_comma.&lt;/P&gt;&lt;P&gt;CLEAR l_con1.&lt;/P&gt;&lt;P&gt;l_cnt = l_cnt - 1.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;&amp;lt;fs_check&amp;gt; = l_con.&lt;/P&gt;&lt;P&gt;l_cnt = l_cnt + 1.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;AT END OF bom_comp.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;At end of every new bom component the count is moved to the field &lt;/P&gt;&lt;P&gt;symbol which is checked against the field of dynamic internal table &lt;/P&gt;&lt;P&gt;and the count is been passed to the dynamic internal table field &lt;/P&gt;&lt;P&gt;value. &lt;/P&gt;&lt;P&gt;ASSIGN COMPONENT c_count OF STRUCTURE &amp;lt;fs_dyn_wa&amp;gt; TO &amp;lt;fs_check&amp;gt;.&lt;/P&gt;&lt;P&gt;&amp;lt;fs_check&amp;gt; = l_cnt.&lt;/P&gt;&lt;P&gt;INSERT &amp;lt;fs_dyn_wa&amp;gt; INTO TABLE &amp;lt;fs_dyn_table&amp;gt;.&lt;/P&gt;&lt;P&gt;ENDAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDLOOP. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Pls. reward if useful...&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 24 Mar 2008 08:42:44 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2008-03-24T08:42:44Z</dc:date>
    <item>
      <title>Dynamic internaltable</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/dynamic-internaltable/m-p/3542265#M852168</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;plz help me i want know about dynamic internal table.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 24 Mar 2008 08:38:56 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/dynamic-internaltable/m-p/3542265#M852168</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-03-24T08:38:56Z</dc:date>
    </item>
    <item>
      <title>Re: Dynamic internaltable</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/dynamic-internaltable/m-p/3542266#M852169</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Veera,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Refer the below related threads&lt;/P&gt;&lt;P&gt;[&lt;A class="jive_macro jive_macro_message" href="https://community.sap.com/" __jive_macro_name="message" modifiedtitle="true" __default_attr="2712199"&gt;&lt;/A&gt;]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;[&lt;A class="jive_macro jive_macro_message" href="https://community.sap.com/" __jive_macro_name="message" modifiedtitle="true" __default_attr="2401645"&gt;&lt;/A&gt;]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;[http://help.sap.com/saphelp_nw2004s/helpdata/en/fc/eb35de358411d1829f0000e829fbfe/content.htm]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;[https://www.sdn.sap.com/irj/sdn/weblogs?blog=/pub/wlg/2071] &lt;B&gt;[original link is broken]&lt;/B&gt; &lt;B&gt;[original link is broken]&lt;/B&gt; &lt;B&gt;[original link is broken]&lt;/B&gt;;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;EX:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Dynamic internal table is internal table that we create on the fly with flexible column numbers. &lt;/P&gt;&lt;P&gt;For sample code, please look at this code tutorial. Hopefully it can help you &lt;SPAN __jive_emoticon_name="wink"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Check this link:&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.saptechnical.com/Tutorials/ABAP/DynamicInternaltable/DynamicInternalTable.htm" target="test_blank"&gt;http://www.saptechnical.com/Tutorials/ABAP/DynamicInternaltable/DynamicInternalTable.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Sample code:&lt;/P&gt;&lt;P&gt;DATA: l_cnt(2) TYPE n,&lt;/P&gt;&lt;P&gt;l_cnt1(3) TYPE n,&lt;/P&gt;&lt;P&gt;l_nam(12),&lt;/P&gt;&lt;P&gt;l_con(18) TYPE c,&lt;/P&gt;&lt;P&gt;l_con1(18) TYPE c,&lt;/P&gt;&lt;P&gt;lf_mat TYPE matnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SORT it_bom_expl BY bom_comp bom_mat level.&lt;/P&gt;&lt;P&gt;CLEAR: l_cnt1, &amp;lt;fs_dyn_wa&amp;gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Looping the component internal table &lt;/P&gt;&lt;P&gt;LOOP AT it_bom_expl INTO gf_it_bom_expl.&lt;/P&gt;&lt;P&gt;CLEAR: l_cnt1.&lt;/P&gt;&lt;P&gt;AT NEW bom_comp.&lt;/P&gt;&lt;P&gt;CLEAR: l_cnt, &amp;lt;fs_dyn_wa&amp;gt;, lf_mat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For every new bom component the material data is moved to &lt;/P&gt;&lt;P&gt;temp material table which will be used for assigning the levels &lt;/P&gt;&lt;P&gt;checking the count &lt;/P&gt;&lt;P&gt;it_mat_temp] = it_mat[.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Component data is been assigned to the field symbol which is checked &lt;/P&gt;&lt;P&gt;against the field of dynamic internal table and the value of the &lt;/P&gt;&lt;P&gt;component number is been passed to the dynamic internal table field &lt;/P&gt;&lt;P&gt;value. &lt;/P&gt;&lt;P&gt;ASSIGN COMPONENT c_comp_list OF STRUCTURE &amp;lt;fs_dyn_wa&amp;gt; TO&lt;/P&gt;&lt;P&gt;&amp;lt;fs_check&amp;gt;.&lt;/P&gt;&lt;P&gt;&amp;lt;fs_check&amp;gt; = gf_it_bom_expl-bom_comp.&lt;/P&gt;&lt;P&gt;ENDAT.&lt;/P&gt;&lt;P&gt;AT NEW bom_mat.&lt;/P&gt;&lt;P&gt;CLEAR l_con.&lt;/P&gt;&lt;P&gt;ENDAT.&lt;/P&gt;&lt;P&gt;lf_mat = gf_it_bom_expl-bom_mat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Looping the temp internal table and looping the dynamic internal table &lt;/P&gt;&lt;P&gt;*by reading line by line into workarea, the materialxxn is been assigned&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;to field symbol which will be checked and used. &lt;/P&gt;&lt;P&gt;LOOP AT it_mat_temp.&lt;/P&gt;&lt;P&gt;l_nam = c_mat.&lt;/P&gt;&lt;P&gt;l_cnt1 = l_cnt1 + 1.&lt;/P&gt;&lt;P&gt;CONCATENATE l_nam l_cnt1 INTO l_nam.&lt;/P&gt;&lt;P&gt;LOOP AT &amp;lt;fs_dyn_table2&amp;gt; ASSIGNING &amp;lt;fs_dyn_wa2&amp;gt;.&lt;/P&gt;&lt;P&gt;ASSIGN COMPONENT l_nam OF STRUCTURE &amp;lt;fs_dyn_wa2&amp;gt; TO &amp;lt;fs_xy&amp;gt;.&lt;/P&gt;&lt;P&gt;ENDLOOP.&lt;/P&gt;&lt;P&gt;IF &amp;lt;fs_xy&amp;gt; = lf_mat.&lt;/P&gt;&lt;P&gt;CLEAR lf_mat.&lt;/P&gt;&lt;P&gt;l_con1 = l_con.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Checking whether the material exists for a component and if so it is &lt;/P&gt;&lt;P&gt;been assigned to the field symbol which is checked against the field &lt;/P&gt;&lt;P&gt;of dynamic internal table and the level of the component number &lt;/P&gt;&lt;P&gt;against material is been passed to the dynamic internal table field &lt;/P&gt;&lt;P&gt;value. &lt;/P&gt;&lt;P&gt;IF &amp;lt;fs_xy&amp;gt; = gf_it_bom_expl-bom_mat.&lt;/P&gt;&lt;P&gt;ASSIGN COMPONENT l_nam OF STRUCTURE &amp;lt;fs_dyn_wa&amp;gt; TO &amp;lt;fs_check&amp;gt;.&lt;/P&gt;&lt;P&gt;CLEAR l_con.&lt;/P&gt;&lt;P&gt;MOVE gf_it_bom_expl-level TO l_con.&lt;/P&gt;&lt;P&gt;CONCATENATE c_val_l l_con INTO l_con.&lt;/P&gt;&lt;P&gt;CONDENSE l_con NO-GAPS.&lt;/P&gt;&lt;P&gt;IF l_con1 NE space.&lt;/P&gt;&lt;P&gt;CONCATENATE l_con1 l_con INTO l_con SEPARATED BY c_comma.&lt;/P&gt;&lt;P&gt;CLEAR l_con1.&lt;/P&gt;&lt;P&gt;l_cnt = l_cnt - 1.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;&amp;lt;fs_check&amp;gt; = l_con.&lt;/P&gt;&lt;P&gt;l_cnt = l_cnt + 1.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;AT END OF bom_comp.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;At end of every new bom component the count is moved to the field &lt;/P&gt;&lt;P&gt;symbol which is checked against the field of dynamic internal table &lt;/P&gt;&lt;P&gt;and the count is been passed to the dynamic internal table field &lt;/P&gt;&lt;P&gt;value. &lt;/P&gt;&lt;P&gt;ASSIGN COMPONENT c_count OF STRUCTURE &amp;lt;fs_dyn_wa&amp;gt; TO &amp;lt;fs_check&amp;gt;.&lt;/P&gt;&lt;P&gt;&amp;lt;fs_check&amp;gt; = l_cnt.&lt;/P&gt;&lt;P&gt;INSERT &amp;lt;fs_dyn_wa&amp;gt; INTO TABLE &amp;lt;fs_dyn_table&amp;gt;.&lt;/P&gt;&lt;P&gt;ENDAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDLOOP. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Pls. reward if useful...&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 24 Mar 2008 08:42:44 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/dynamic-internaltable/m-p/3542266#M852169</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-03-24T08:42:44Z</dc:date>
    </item>
    <item>
      <title>Re: Dynamic internaltable</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/dynamic-internaltable/m-p/3542267#M852170</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Generally if u declare a Internal Table u will pre-define the number of fields in the internal table.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF u dont the number of fields and if u know the number of fields only at the Runtime ...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If may be any number such internal table is called as DYNAMIC internal Tables.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;see this example code to create DYNAMIC INTERNAL TABLE and to display in in ALV.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;REPORT z_alv_dynamic_data.
CONSTANTS :
  c_x VALUE 'X'.
*---------------------------------------------------------------------*
SELECTION-SCREEN :
BEGIN OF LINE, COMMENT 1(35) v_1 FOR FIELD p_table.         "#EC NEEDED
PARAMETERS p_table TYPE dd03l-tabname OBLIGATORY.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN :
BEGIN OF LINE, COMMENT 1(35) v_2 FOR FIELD p_max.           "#EC NEEDED
PARAMETERS p_max(2) TYPE n DEFAULT '20' OBLIGATORY.
SELECTION-SCREEN END OF LINE.
*---------------------------------------------------------------------*
AT SELECTION-SCREEN.

  PERFORM f_check_table.

*---------------------------------------------------------------------*
INITIALIZATION.

  v_1 = 'Table'.
  v_2 = 'Maximum of records'.

  GET PARAMETER ID 'DTB' FIELD p_table.
  IF p_table IS INITIAL.
    p_table = 'SPFLI'.
  ENDIF.

*---------------------------------------------------------------------*
START-OF-SELECTION.

  PERFORM f_display_data.

*---------------------------------------------------------------------*
*      Form  F_DISPLAY_DATA
*---------------------------------------------------------------------*
FORM f_display_data.

  TYPE-POOLS: slis.                    " ALV Global Types

* Macro definition
  DEFINE m_sort.
    add 1 to ls_sort-spos.
    ls_sort-fieldname = &amp;amp;1.
    ls_sort-up = c_x.
    append ls_sort to lt_sort.
  END-OF-DEFINITION.

  DATA:
    ls_dd03l    TYPE dd03l,            " Table Fields
    lt_dd03l    TYPE TABLE OF dd03l,   " Table Fields
    lp_struct   TYPE REF TO data,
    lp_table    TYPE REF TO data,      " Pointer to dynamic table
    of_sdescr   TYPE REF TO cl_abap_structdescr,
    ls_layout   TYPE slis_layout_alv,
    ls_lvc_cat  TYPE lvc_s_fcat,
    lt_lvc_cat  TYPE lvc_t_fcat,       " Field catalog
    ls_sort     TYPE slis_sortinfo_alv,
    lt_sort     TYPE slis_t_sortinfo_alv,  " Sort table
    ls_fieldcat TYPE slis_fieldcat_alv,
    lt_fieldcat TYPE slis_t_fieldcat_alv.  " Field catalog

  FIELD-SYMBOLS :
    &amp;lt;fieldcat&amp;gt;   TYPE slis_fieldcat_alv,
    &amp;lt;lt_data&amp;gt;    TYPE STANDARD TABLE,      " Data to display
    &amp;lt;fs&amp;gt;         TYPE ANY,
    &amp;lt;components&amp;gt; TYPE abap_compdescr.

* Dynamic creation of a structure
  CREATE DATA lp_struct TYPE (p_table).
  ASSIGN lp_struct-&amp;gt;* TO &amp;lt;fs&amp;gt;.

* Fields Structure
  of_sdescr ?= cl_abap_typedescr=&amp;gt;describe_by_data( &amp;lt;fs&amp;gt; ).

  LOOP AT of_sdescr-&amp;gt;components ASSIGNING &amp;lt;components&amp;gt;.
*   Build Fieldcatalog
    ls_lvc_cat-fieldname = &amp;lt;components&amp;gt;-name.
    ls_lvc_cat-ref_table = p_table.
    APPEND ls_lvc_cat TO lt_lvc_cat.
*   Build Fieldcatalog
    ls_fieldcat-fieldname = &amp;lt;components&amp;gt;-name.
    ls_fieldcat-ref_tabname = p_table.
    APPEND ls_fieldcat TO lt_fieldcat.
  ENDLOOP.

* Add checkbox
  CLEAR ls_lvc_cat.
  ls_lvc_cat-fieldname = 'CHECKBOX'.
  APPEND ls_lvc_cat TO lt_lvc_cat.

* Create internal table
  CALL METHOD cl_alv_table_create=&amp;gt;create_dynamic_table
    EXPORTING
      it_fieldcatalog = lt_lvc_cat
    IMPORTING
      ep_table        = lp_table.

  ASSIGN lp_table-&amp;gt;* TO &amp;lt;lt_data&amp;gt;.

* Read data
  SELECT * FROM (p_table) UP TO p_max ROWS
    INTO CORRESPONDING FIELDS OF TABLE &amp;lt;lt_data&amp;gt;
   ORDER BY PRIMARY KEY.

  IF &amp;lt;lt_data&amp;gt; IS INITIAL.
*   No table entries found for specified key
    MESSAGE i429(mo).
    EXIT.
  ENDIF.

* Read key field to Build Sort Table
  SELECT * FROM dd03l INTO TABLE lt_dd03l
                     WHERE tabname  = p_table
                       AND fieldname &amp;lt;&amp;gt; '.INCLUDE'
                       AND as4vers  = '0000'
                       AND as4local = 'A'
                       AND keyflag = c_x.

  SORT lt_dd03l BY position.

* Build Sort Table
  LOOP AT lt_dd03l INTO ls_dd03l.
    READ TABLE lt_fieldcat ASSIGNING &amp;lt;fieldcat&amp;gt;
                            WITH KEY fieldname = ls_dd03l-fieldname.
    CHECK sy-subrc EQ 0.
*   Build Sort Table
    m_sort ls_dd03l-fieldname.
    &amp;lt;fieldcat&amp;gt;-key = c_x.
  ENDLOOP.

* Layout
  ls_layout-zebra = c_x.
  ls_layout-colwidth_optimize = c_x.
  ls_layout-group_change_edit = c_x.
  ls_layout-box_fieldname = 'CHECKBOX'.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      is_layout   = ls_layout
      it_fieldcat = lt_fieldcat
      it_sort     = lt_sort
    TABLES
      t_outtab    = &amp;lt;lt_data&amp;gt;.

ENDFORM.                               " F_DISPLAY_DATA
*---------------------------------------------------------------------*
*      Form  F_CHECK_TABLE
*---------------------------------------------------------------------*
FORM f_check_table .

  DATA :
    l_tabclass  TYPE tabclass,            " Table category
    l_viewclass TYPE viewclass.           " View Type

* Read table category
  SELECT SINGLE tabclass viewclass
           INTO (l_tabclass, l_viewclass)
           FROM dd02l
          WHERE tabname  = p_table
            AND as4local = 'A'
            AND as4vers  = '0000'.
  IF sy-subrc NE 0.
*   Table &amp;amp; is not active in the Dictionary
    MESSAGE e402(mo) WITH p_table.
  ELSEIF l_tabclass = 'INTTAB'.
*   &amp;amp; is a structure, not a table
    MESSAGE e403(mo) WITH p_table.
  ELSEIF l_tabclass = 'VIEW' AND l_viewclass NE 'D'.
*   Only use views of type "Maintenance view"
    MESSAGE e309(sv).
  ENDIF.

ENDFORM.                    " F_CHECK_TABLE
*************** END OF PROGRAM Z_ALV_DYNAMIC_DATA *********************&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Balakumar.G.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Reward points if helpful.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 24 Mar 2008 08:45:24 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/dynamic-internaltable/m-p/3542267#M852170</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-03-24T08:45:24Z</dc:date>
    </item>
    <item>
      <title>Re: Dynamic internaltable</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/dynamic-internaltable/m-p/3542268#M852171</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Following report is the sample report for Dynaimc alv report.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REPORT YSS_DYNAMIC_ALV.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPE-POOLS: SLIS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FIELD-SYMBOLS: &amp;lt;DYN_TABLE&amp;gt; TYPE STANDARD TABLE,&lt;/P&gt;&lt;P&gt;&amp;lt;DYN_WA&amp;gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: ALV_FLDCAT TYPE SLIS_T_FIELDCAT_ALV,&lt;/P&gt;&lt;P&gt;IT_FLDCAT TYPE LVC_T_FCAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.&lt;/P&gt;&lt;P&gt;PARAMETERS: P_FLDS(5) TYPE C.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF BLOCK B1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;build the dynamic internal table &lt;/P&gt;&lt;P&gt;PERFORM BUILD_DYN_ITAB.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;write 5 records to the alv grid &lt;/P&gt;&lt;P&gt;DO 5 TIMES.&lt;/P&gt;&lt;P&gt;PERFORM BUILD_REPORT.&lt;/P&gt;&lt;P&gt;ENDDO.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;call the alv grid. &lt;/P&gt;&lt;P&gt;PERFORM CALL_ALV.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Build_dyn_itab &lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;FORM BUILD_DYN_ITAB.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: NEW_TABLE TYPE REF TO DATA,&lt;/P&gt;&lt;P&gt;NEW_LINE TYPE REF TO DATA,&lt;/P&gt;&lt;P&gt;WA_IT_FLDCAT TYPE LVC_S_FCAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Create fields . &lt;/P&gt;&lt;P&gt;DO P_FLDS TIMES.&lt;/P&gt;&lt;P&gt;CLEAR WA_IT_FLDCAT.&lt;/P&gt;&lt;P&gt;WA_IT_FLDCAT-FIELDNAME = SY-INDEX.&lt;/P&gt;&lt;P&gt;WA_IT_FLDCAT-DATATYPE = 'CHAR'.&lt;/P&gt;&lt;P&gt;WA_IT_FLDCAT-INTLEN = 5.&lt;/P&gt;&lt;P&gt;APPEND WA_IT_FLDCAT TO IT_FLDCAT .&lt;/P&gt;&lt;P&gt;ENDDO.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Create dynamic internal table and assign to FS &lt;/P&gt;&lt;P&gt;CALL METHOD CL_ALV_TABLE_CREATE=&amp;gt;CREATE_DYNAMIC_TABLE&lt;/P&gt;&lt;P&gt;EXPORTING&lt;/P&gt;&lt;P&gt;IT_FIELDCATALOG = IT_FLDCAT&lt;/P&gt;&lt;P&gt;IMPORTING&lt;/P&gt;&lt;P&gt;EP_TABLE = NEW_TABLE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ASSIGN NEW_TABLE-&amp;gt;* TO &amp;lt;DYN_TABLE&amp;gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Create dynamic work area and assign to FS &lt;/P&gt;&lt;P&gt;CREATE DATA NEW_LINE LIKE LINE OF &amp;lt;DYN_TABLE&amp;gt;.&lt;/P&gt;&lt;P&gt;ASSIGN NEW_LINE-&amp;gt;* TO &amp;lt;DYN_WA&amp;gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM. "build_dyn_itab&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*********************************************************************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Form build_report &lt;/P&gt;&lt;P&gt;*********************************************************************&lt;/P&gt;&lt;P&gt;FORM BUILD_REPORT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: FIELDNAME(20) TYPE C.&lt;/P&gt;&lt;P&gt;DATA: FIELDVALUE(5) TYPE C.&lt;/P&gt;&lt;P&gt;DATA: INDEX(3) TYPE C.&lt;/P&gt;&lt;P&gt;FIELD-SYMBOLS: &amp;lt;FS1&amp;gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DO P_FLDS TIMES.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;INDEX = SY-INDEX.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Set up fieldvalue &lt;/P&gt;&lt;P&gt;CONCATENATE 'FLD' INDEX INTO&lt;/P&gt;&lt;P&gt;FIELDVALUE.&lt;/P&gt;&lt;P&gt;CONDENSE FIELDVALUE NO-GAPS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;assign component index of structure &amp;lt;dyn_wa&amp;gt; to &amp;lt;fs1&amp;gt;. &lt;/P&gt;&lt;P&gt;&amp;lt;fs1&amp;gt; = fieldvalue. &lt;/P&gt;&lt;P&gt;ENDDO.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Append to the dynamic internal table &lt;/P&gt;&lt;P&gt;APPEND &amp;lt;DYN_WA&amp;gt; TO &amp;lt;DYN_TABLE&amp;gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM. "build_report&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CALL_ALV &lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;FORM CALL_ALV.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: WA_CAT LIKE LINE OF ALV_FLDCAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DO P_FLDS TIMES.&lt;/P&gt;&lt;P&gt;CLEAR WA_CAT.&lt;/P&gt;&lt;P&gt;WA_CAT-FIELDNAME = SY-INDEX.&lt;/P&gt;&lt;P&gt;WA_CAT-SELTEXT_S = SY-INDEX.&lt;/P&gt;&lt;P&gt;WA_CAT-OUTPUTLEN = '5'.&lt;/P&gt;&lt;P&gt;APPEND WA_CAT TO ALV_FLDCAT.&lt;/P&gt;&lt;P&gt;ENDDO.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Call ABAP List Viewer (ALV) &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;IT_FIELDCAT = ALV_FLDCAT&lt;/P&gt;&lt;P&gt;TABLES&lt;/P&gt;&lt;P&gt;T_OUTTAB = &amp;lt;DYN_TABLE&amp;gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM. "call_alv&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Reward if helpful.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 24 Mar 2008 09:11:43 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/dynamic-internaltable/m-p/3542268#M852171</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-03-24T09:11:43Z</dc:date>
    </item>
  </channel>
</rss>

