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: 

Creating Dynamic Internal table with a dynamic name

Former Member
0 Kudos

Hi,

I want to create dynamic internal tables with dynamic names.

For example:

Suppose I have a table with three fields.

1. Structure name

2.Fields

3.file

And the structure of the internal table is as follows:

TYPES:BEGIN OF table_type,

struct TYPE char70,

fields TYPE tt_type OCCURS 0,

File TYPE ttab_type OCCURS 0,

END OF table_type.

Suppose I have one record inside my internal table with struct as "STRUCTURE", fields have an internal table content of set of fields and File has some set of records.

Now I want to create dynamic internal table whose name will be "STRUCTURE" , the fields of the dynamic internal table structure[] will be as in fields, and the records will be as in File.

Like this if i have 100 records in my internal table then I have to create 100 dynamic internal table dynamically.

Can anyone suggest how to do this?

Edited by: Jjammy on Jul 22, 2009 7:52 AM

1 ACCEPTED SOLUTION

venkat_o
Active Contributor
0 Kudos

Hi,

Check the sample program and develop your program accordingly.

<font color=blue><pre>

REPORT ztest_notepad.

&----


*& Declarations

&----


*Type-pools

TYPE-POOLS:

slis.

*Types

TYPES:

ty_fcat TYPE lvc_s_fcat,

ty_fcatalog TYPE slis_fieldcat_alv.

*Work areas

DATA:

wa_fcat TYPE ty_fcat,

wa_fcatalog TYPE ty_fcatalog.

*Internal tables

DATA:

it_fcat TYPE STANDARD TABLE OF ty_fcat,

it_fcatalog TYPE STANDARD TABLE OF ty_fcatalog.

*Type reference

DATA:

it_dyn_tab TYPE REF TO data,

wa_newline TYPE REF TO data.

*Filed symbols

FIELD-SYMBOLS:

<gt_table> TYPE STANDARD TABLE,

<fs_dyntable>,

<fs_fldval> TYPE ANY,

<l_field> TYPE ANY.

*Variables

DATA:

l_fieldname TYPE lvc_s_fcat-fieldname,

l_tabname TYPE lvc_s_fcat-tabname,

l_fieldtext TYPE lvc_s_fcat-seltext,

l_index TYPE char2.

"Selection-screen

PARAMETERS:

p_colms TYPE i.

&----


*& start-of-selection.

&----


START-OF-SELECTION.

PERFORM build_fieldcat.

PERFORM create_dynamic_table.

DO 20 TIMES.

DO p_colms TIMES.

l_index = sy-index.

CONCATENATE 'FIELD' l_index INTO l_fieldname.

ASSIGN COMPONENT l_fieldname OF STRUCTURE <fs_dyntable> TO <l_field>.

<l_field> = sy-index.

ENDDO.

INSERT <fs_dyntable> INTO TABLE <gt_table>.

ENDDO.

LOOP AT it_fcat INTO wa_fcat.

PERFORM fieldcatalog1 USING: wa_fcat-fieldname

wa_fcat-tabname

wa_fcat-seltext.

ENDLOOP.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

i_callback_program = 'ZTEST_NOTEPAD'

it_fieldcat = it_fcatalog

TABLES

t_outtab = <gt_table>.

&----


*& Form BUILD_FIELDCAT

&----


FORM build_fieldcat .

CLEAR: l_fieldname,

l_tabname,

l_fieldtext,

l_index.

DO p_colms TIMES.

CLEAR l_index.

l_index = sy-index.

CONCATENATE 'FIELD' l_index INTO l_fieldname.

CONCATENATE 'Field' l_index INTO l_fieldtext.

l_tabname = '<GT_TABLE>'.

PERFORM fieldcatalog USING: l_fieldname

l_tabname

l_fieldtext.

ENDDO.

ENDFORM. " BUILD_FIELDCAT

&----


*& Form CREATE_DYNAMIC_TABLE

&----


FORM create_dynamic_table .

CALL METHOD cl_alv_table_create=>create_dynamic_table

EXPORTING

it_fieldcatalog = it_fcat

IMPORTING

ep_table = it_dyn_tab.

ASSIGN it_dyn_tab->* TO <gt_table>.

  • Create dynamic work area and assign to FS

CREATE DATA wa_newline LIKE LINE OF <gt_table>.

ASSIGN wa_newline->* TO <fs_dyntable>.

ENDFORM. " CREATE_DYNAMIC_TABLE

&----


*& Form FIELDCATALOG

&----


FORM fieldcatalog USING field table f_txt.

wa_fcat-fieldname = field.

wa_fcat-tabname = table.

wa_fcat-seltext = f_txt.

APPEND wa_fcat TO it_fcat.

CLEAR wa_fcat.

ENDFORM. " FIELDCATALOG

&----


*& Form FIELDCATALOG1

&----


FORM fieldcatalog1 USING field table f_txt.

wa_fcatalog-fieldname = field.

wa_fcatalog-tabname = table.

wa_fcatalog-seltext_m = f_txt.

APPEND wa_fcatalog TO it_fcatalog.

CLEAR wa_fcatalog.

ENDFORM. " FIELDCATALOG1 </pre>

</font>

Thanks

Venkat.O

1 REPLY 1

venkat_o
Active Contributor
0 Kudos

Hi,

Check the sample program and develop your program accordingly.

<font color=blue><pre>

REPORT ztest_notepad.

&----


*& Declarations

&----


*Type-pools

TYPE-POOLS:

slis.

*Types

TYPES:

ty_fcat TYPE lvc_s_fcat,

ty_fcatalog TYPE slis_fieldcat_alv.

*Work areas

DATA:

wa_fcat TYPE ty_fcat,

wa_fcatalog TYPE ty_fcatalog.

*Internal tables

DATA:

it_fcat TYPE STANDARD TABLE OF ty_fcat,

it_fcatalog TYPE STANDARD TABLE OF ty_fcatalog.

*Type reference

DATA:

it_dyn_tab TYPE REF TO data,

wa_newline TYPE REF TO data.

*Filed symbols

FIELD-SYMBOLS:

<gt_table> TYPE STANDARD TABLE,

<fs_dyntable>,

<fs_fldval> TYPE ANY,

<l_field> TYPE ANY.

*Variables

DATA:

l_fieldname TYPE lvc_s_fcat-fieldname,

l_tabname TYPE lvc_s_fcat-tabname,

l_fieldtext TYPE lvc_s_fcat-seltext,

l_index TYPE char2.

"Selection-screen

PARAMETERS:

p_colms TYPE i.

&----


*& start-of-selection.

&----


START-OF-SELECTION.

PERFORM build_fieldcat.

PERFORM create_dynamic_table.

DO 20 TIMES.

DO p_colms TIMES.

l_index = sy-index.

CONCATENATE 'FIELD' l_index INTO l_fieldname.

ASSIGN COMPONENT l_fieldname OF STRUCTURE <fs_dyntable> TO <l_field>.

<l_field> = sy-index.

ENDDO.

INSERT <fs_dyntable> INTO TABLE <gt_table>.

ENDDO.

LOOP AT it_fcat INTO wa_fcat.

PERFORM fieldcatalog1 USING: wa_fcat-fieldname

wa_fcat-tabname

wa_fcat-seltext.

ENDLOOP.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

i_callback_program = 'ZTEST_NOTEPAD'

it_fieldcat = it_fcatalog

TABLES

t_outtab = <gt_table>.

&----


*& Form BUILD_FIELDCAT

&----


FORM build_fieldcat .

CLEAR: l_fieldname,

l_tabname,

l_fieldtext,

l_index.

DO p_colms TIMES.

CLEAR l_index.

l_index = sy-index.

CONCATENATE 'FIELD' l_index INTO l_fieldname.

CONCATENATE 'Field' l_index INTO l_fieldtext.

l_tabname = '<GT_TABLE>'.

PERFORM fieldcatalog USING: l_fieldname

l_tabname

l_fieldtext.

ENDDO.

ENDFORM. " BUILD_FIELDCAT

&----


*& Form CREATE_DYNAMIC_TABLE

&----


FORM create_dynamic_table .

CALL METHOD cl_alv_table_create=>create_dynamic_table

EXPORTING

it_fieldcatalog = it_fcat

IMPORTING

ep_table = it_dyn_tab.

ASSIGN it_dyn_tab->* TO <gt_table>.

  • Create dynamic work area and assign to FS

CREATE DATA wa_newline LIKE LINE OF <gt_table>.

ASSIGN wa_newline->* TO <fs_dyntable>.

ENDFORM. " CREATE_DYNAMIC_TABLE

&----


*& Form FIELDCATALOG

&----


FORM fieldcatalog USING field table f_txt.

wa_fcat-fieldname = field.

wa_fcat-tabname = table.

wa_fcat-seltext = f_txt.

APPEND wa_fcat TO it_fcat.

CLEAR wa_fcat.

ENDFORM. " FIELDCATALOG

&----


*& Form FIELDCATALOG1

&----


FORM fieldcatalog1 USING field table f_txt.

wa_fcatalog-fieldname = field.

wa_fcatalog-tabname = table.

wa_fcatalog-seltext_m = f_txt.

APPEND wa_fcatalog TO it_fcatalog.

CLEAR wa_fcatalog.

ENDFORM. " FIELDCATALOG1 </pre>

</font>

Thanks

Venkat.O