<?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 internal table in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/dynamic-internal-table/m-p/4558817#M1076098</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here the code that you need to solve your issue:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;
CONSTANTS:
  gco_cost TYPE c LENGTH 4 VALUE 'COST'.

TYPES:
  BEGIN OF gty_line,
    key1  TYPE c LENGTH 1,
    key2  TYPE c LENGTH 1,
    key3  TYPE c LENGTH 1,
    keywk TYPE n LENGTH 2,
    cost  TYPE n LENGTH 3,
  END OF gty_line,
  gty_t_table TYPE STANDARD TABLE OF gty_line WITH NON-UNIQUE KEY
    key1 key2 key3.

DATA:
  gt_table        TYPE         gty_t_table,
  gs_table        LIKE LINE OF gt_table,
  gr_table        TYPE REF TO  gty_line,
  gr_struct_typ   TYPE REF TO  cl_abap_datadescr,
  gr_dyntable_typ TYPE REF TO  cl_abap_tabledescr,
  gt_dyntable     TYPE REF TO  data,
  gs_dyntable     TYPE REF TO  data,
  gt_component    TYPE         cl_abap_structdescr=&amp;gt;component_table,
  gv_field        TYPE         cl_abap_structdescr=&amp;gt;component-name,
  gv_i            TYPE         n VALUE 1.

FIELD-SYMBOLS:
  &amp;lt;fs_table&amp;gt; TYPE INDEX TABLE,
  &amp;lt;fs_line&amp;gt;  TYPE ANY,
  &amp;lt;fs_field&amp;gt; TYPE ANY.

PERFORM fill_table USING:
  'A' 'B' 'C' 01 100,
  'A' 'B' 'C' 02 200,
  'A' 'B' 'C' 03 300,
  'B' 'D' 'E' 01 400,
  'B' 'D' 'F' 01 500.

PERFORM add_component USING:
  'KEY1'  gs_table-key1,
  'KEY2'  gs_table-key2,
  'KEY3'  gs_table-key3,
  'COST1' gs_table-cost.

READ TABLE gt_table INDEX 1 INTO gs_table.
LOOP AT gt_table REFERENCE INTO gr_table FROM 2.
  IF gs_table-key1 = gr_table-&amp;gt;key1 AND
     gs_table-key2 = gr_table-&amp;gt;key2 AND
     gs_table-key3 = gr_table-&amp;gt;key3.
    gs_table = gr_table-&amp;gt;*.

    gv_i = gv_i + 1.
    CONCATENATE gco_cost gv_i INTO gv_field.

    PERFORM add_component USING gv_field gs_table-cost.
  ENDIF.
ENDLOOP.

gr_struct_typ  ?= cl_abap_structdescr=&amp;gt;create( p_components = gt_component ).
gr_dyntable_typ = cl_abap_tabledescr=&amp;gt;create( p_line_type = gr_struct_typ ).

CREATE DATA:
  gt_dyntable TYPE HANDLE gr_dyntable_typ,
  gs_dyntable TYPE HANDLE gr_struct_typ.

ASSIGN:
  gs_dyntable-&amp;gt;* TO &amp;lt;fs_line&amp;gt;,
  gt_dyntable-&amp;gt;* TO &amp;lt;fs_table&amp;gt;.

CLEAR gv_i.
SORT gt_table BY key1 key2 key3.
READ TABLE gt_table INDEX 1 INTO gs_table.
LOOP AT gt_table REFERENCE INTO gr_table.
  IF gs_table-key1 NE gr_table-&amp;gt;key1 OR
     gs_table-key2 NE gr_table-&amp;gt;key2 OR
     gs_table-key3 NE gr_table-&amp;gt;key3.
    gs_table = gr_table-&amp;gt;*.

    APPEND &amp;lt;fs_line&amp;gt; TO &amp;lt;fs_table&amp;gt;.
    CLEAR: &amp;lt;fs_line&amp;gt;, gv_i.
  ENDIF.
  IF gv_i = 0.
    gv_i = 1.

    ASSIGN COMPONENT 'KEY1'  OF STRUCTURE &amp;lt;fs_line&amp;gt; TO &amp;lt;fs_field&amp;gt;.
    &amp;lt;fs_field&amp;gt; = gr_table-&amp;gt;key1.
    ASSIGN COMPONENT 'KEY2'  OF STRUCTURE &amp;lt;fs_line&amp;gt; TO &amp;lt;fs_field&amp;gt;.
    &amp;lt;fs_field&amp;gt; = gr_table-&amp;gt;key2.
    ASSIGN COMPONENT 'KEY3'  OF STRUCTURE &amp;lt;fs_line&amp;gt; TO &amp;lt;fs_field&amp;gt;.
    &amp;lt;fs_field&amp;gt; = gr_table-&amp;gt;key3.
    ASSIGN COMPONENT 'COST1' OF STRUCTURE &amp;lt;fs_line&amp;gt; TO &amp;lt;fs_field&amp;gt;.
    &amp;lt;fs_field&amp;gt; = gr_table-&amp;gt;cost.
  ELSE.
    gv_i = gv_i + 1.
    CONCATENATE gco_cost gv_i INTO gv_field.

    ASSIGN COMPONENT gv_field OF STRUCTURE &amp;lt;fs_line&amp;gt; TO &amp;lt;fs_field&amp;gt;.
    &amp;lt;fs_field&amp;gt; = gr_table-&amp;gt;cost.
  ENDIF.
ENDLOOP.
APPEND &amp;lt;fs_line&amp;gt; TO &amp;lt;fs_table&amp;gt;.

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  FILL_TABLE
*&amp;amp;---------------------------------------------------------------------*
FORM fill_table
  USING p_key1 TYPE gty_line-key1 p_key2 TYPE gty_line-key2
        p_key3 TYPE gty_line-key3 p_keywk TYPE gty_line-keywk
        p_cost TYPE gty_line-cost.

  DATA ls_line LIKE LINE OF gt_table.

  ls_line-key1  = p_key1.
  ls_line-key2  = p_key2.
  ls_line-key3  = p_key3.
  ls_line-keywk = p_keywk.
  ls_line-cost  = p_cost.

  APPEND ls_line TO gt_table.
ENDFORM.                    "FILL_TABLE

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  ADD_COMPONENT
*&amp;amp;---------------------------------------------------------------------*
FORM add_component
  USING p_field TYPE cl_abap_structdescr=&amp;gt;component-name
        p_type  TYPE any.

  DATA ls_component TYPE cl_abap_structdescr=&amp;gt;component.

  ls_component-name = p_field.
  ls_component-type ?= cl_abap_datadescr=&amp;gt;describe_by_data( p_type ).
  APPEND ls_component TO gt_component.
ENDFORM.                    "add_component
&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The &lt;STRONG&gt;FILL_TABLE&lt;/STRONG&gt; form was created just to fill data like your example.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 30 Sep 2008 14:28:38 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2008-09-30T14:28:38Z</dc:date>
    <item>
      <title>dynamic internal table</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/dynamic-internal-table/m-p/4558815#M1076096</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;I have internal table itab with the following fields and values&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Keyfield1 Keyfield2 keyfield3 keyfieldWeek   Cost&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;A	B	C	01                100&lt;/P&gt;&lt;P&gt;A	B	C	02	    200&lt;/P&gt;&lt;P&gt;A	B	C	03                300	&lt;/P&gt;&lt;P&gt;B	D	E	01                400&lt;/P&gt;&lt;P&gt;B	D	F	02                500&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;and I have to create a final dynamic internal table from this&lt;/P&gt;&lt;P&gt;like &lt;/P&gt;&lt;P&gt;A B C 100 200 300&lt;/P&gt;&lt;P&gt;B D E 400&lt;/P&gt;&lt;P&gt;B D F 500&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If only the week field is changing, I have to add a field and add it horizontanly.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks in advance,&lt;/P&gt;&lt;P&gt;Beena&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 30 Sep 2008 12:02:23 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/dynamic-internal-table/m-p/4558815#M1076096</guid>
      <dc:creator>Bema</dc:creator>
      <dc:date>2008-09-30T12:02:23Z</dc:date>
    </item>
    <item>
      <title>Re: dynamic internal table</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/dynamic-internal-table/m-p/4558816#M1076097</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Your requiremnt for me is not clear, please explain this in detail.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Murthy.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 30 Sep 2008 12:20:05 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/dynamic-internal-table/m-p/4558816#M1076097</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-09-30T12:20:05Z</dc:date>
    </item>
    <item>
      <title>Re: dynamic internal table</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/dynamic-internal-table/m-p/4558817#M1076098</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here the code that you need to solve your issue:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;
CONSTANTS:
  gco_cost TYPE c LENGTH 4 VALUE 'COST'.

TYPES:
  BEGIN OF gty_line,
    key1  TYPE c LENGTH 1,
    key2  TYPE c LENGTH 1,
    key3  TYPE c LENGTH 1,
    keywk TYPE n LENGTH 2,
    cost  TYPE n LENGTH 3,
  END OF gty_line,
  gty_t_table TYPE STANDARD TABLE OF gty_line WITH NON-UNIQUE KEY
    key1 key2 key3.

DATA:
  gt_table        TYPE         gty_t_table,
  gs_table        LIKE LINE OF gt_table,
  gr_table        TYPE REF TO  gty_line,
  gr_struct_typ   TYPE REF TO  cl_abap_datadescr,
  gr_dyntable_typ TYPE REF TO  cl_abap_tabledescr,
  gt_dyntable     TYPE REF TO  data,
  gs_dyntable     TYPE REF TO  data,
  gt_component    TYPE         cl_abap_structdescr=&amp;gt;component_table,
  gv_field        TYPE         cl_abap_structdescr=&amp;gt;component-name,
  gv_i            TYPE         n VALUE 1.

FIELD-SYMBOLS:
  &amp;lt;fs_table&amp;gt; TYPE INDEX TABLE,
  &amp;lt;fs_line&amp;gt;  TYPE ANY,
  &amp;lt;fs_field&amp;gt; TYPE ANY.

PERFORM fill_table USING:
  'A' 'B' 'C' 01 100,
  'A' 'B' 'C' 02 200,
  'A' 'B' 'C' 03 300,
  'B' 'D' 'E' 01 400,
  'B' 'D' 'F' 01 500.

PERFORM add_component USING:
  'KEY1'  gs_table-key1,
  'KEY2'  gs_table-key2,
  'KEY3'  gs_table-key3,
  'COST1' gs_table-cost.

READ TABLE gt_table INDEX 1 INTO gs_table.
LOOP AT gt_table REFERENCE INTO gr_table FROM 2.
  IF gs_table-key1 = gr_table-&amp;gt;key1 AND
     gs_table-key2 = gr_table-&amp;gt;key2 AND
     gs_table-key3 = gr_table-&amp;gt;key3.
    gs_table = gr_table-&amp;gt;*.

    gv_i = gv_i + 1.
    CONCATENATE gco_cost gv_i INTO gv_field.

    PERFORM add_component USING gv_field gs_table-cost.
  ENDIF.
ENDLOOP.

gr_struct_typ  ?= cl_abap_structdescr=&amp;gt;create( p_components = gt_component ).
gr_dyntable_typ = cl_abap_tabledescr=&amp;gt;create( p_line_type = gr_struct_typ ).

CREATE DATA:
  gt_dyntable TYPE HANDLE gr_dyntable_typ,
  gs_dyntable TYPE HANDLE gr_struct_typ.

ASSIGN:
  gs_dyntable-&amp;gt;* TO &amp;lt;fs_line&amp;gt;,
  gt_dyntable-&amp;gt;* TO &amp;lt;fs_table&amp;gt;.

CLEAR gv_i.
SORT gt_table BY key1 key2 key3.
READ TABLE gt_table INDEX 1 INTO gs_table.
LOOP AT gt_table REFERENCE INTO gr_table.
  IF gs_table-key1 NE gr_table-&amp;gt;key1 OR
     gs_table-key2 NE gr_table-&amp;gt;key2 OR
     gs_table-key3 NE gr_table-&amp;gt;key3.
    gs_table = gr_table-&amp;gt;*.

    APPEND &amp;lt;fs_line&amp;gt; TO &amp;lt;fs_table&amp;gt;.
    CLEAR: &amp;lt;fs_line&amp;gt;, gv_i.
  ENDIF.
  IF gv_i = 0.
    gv_i = 1.

    ASSIGN COMPONENT 'KEY1'  OF STRUCTURE &amp;lt;fs_line&amp;gt; TO &amp;lt;fs_field&amp;gt;.
    &amp;lt;fs_field&amp;gt; = gr_table-&amp;gt;key1.
    ASSIGN COMPONENT 'KEY2'  OF STRUCTURE &amp;lt;fs_line&amp;gt; TO &amp;lt;fs_field&amp;gt;.
    &amp;lt;fs_field&amp;gt; = gr_table-&amp;gt;key2.
    ASSIGN COMPONENT 'KEY3'  OF STRUCTURE &amp;lt;fs_line&amp;gt; TO &amp;lt;fs_field&amp;gt;.
    &amp;lt;fs_field&amp;gt; = gr_table-&amp;gt;key3.
    ASSIGN COMPONENT 'COST1' OF STRUCTURE &amp;lt;fs_line&amp;gt; TO &amp;lt;fs_field&amp;gt;.
    &amp;lt;fs_field&amp;gt; = gr_table-&amp;gt;cost.
  ELSE.
    gv_i = gv_i + 1.
    CONCATENATE gco_cost gv_i INTO gv_field.

    ASSIGN COMPONENT gv_field OF STRUCTURE &amp;lt;fs_line&amp;gt; TO &amp;lt;fs_field&amp;gt;.
    &amp;lt;fs_field&amp;gt; = gr_table-&amp;gt;cost.
  ENDIF.
ENDLOOP.
APPEND &amp;lt;fs_line&amp;gt; TO &amp;lt;fs_table&amp;gt;.

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  FILL_TABLE
*&amp;amp;---------------------------------------------------------------------*
FORM fill_table
  USING p_key1 TYPE gty_line-key1 p_key2 TYPE gty_line-key2
        p_key3 TYPE gty_line-key3 p_keywk TYPE gty_line-keywk
        p_cost TYPE gty_line-cost.

  DATA ls_line LIKE LINE OF gt_table.

  ls_line-key1  = p_key1.
  ls_line-key2  = p_key2.
  ls_line-key3  = p_key3.
  ls_line-keywk = p_keywk.
  ls_line-cost  = p_cost.

  APPEND ls_line TO gt_table.
ENDFORM.                    "FILL_TABLE

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  ADD_COMPONENT
*&amp;amp;---------------------------------------------------------------------*
FORM add_component
  USING p_field TYPE cl_abap_structdescr=&amp;gt;component-name
        p_type  TYPE any.

  DATA ls_component TYPE cl_abap_structdescr=&amp;gt;component.

  ls_component-name = p_field.
  ls_component-type ?= cl_abap_datadescr=&amp;gt;describe_by_data( p_type ).
  APPEND ls_component TO gt_component.
ENDFORM.                    "add_component
&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The &lt;STRONG&gt;FILL_TABLE&lt;/STRONG&gt; form was created just to fill data like your example.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 30 Sep 2008 14:28:38 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/dynamic-internal-table/m-p/4558817#M1076098</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-09-30T14:28:38Z</dc:date>
    </item>
  </channel>
</rss>

