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: 

Create Internal table base on input

Former Member
0 Kudos

Hi Expert,

I want define two internal table of same type i.e.

say my input is 'USR02' than i want two internal table define as below

data : itab1 like (table_name) occurs 0 with header line.

data : itab2 like (table_name) occurs 0 with header line.

where (table_name) = USR02 in above case.

now these 2 tables i am going to used in downloading data from USR02 table into file that i can do by using gui_download function module.

so can any please tell me how to create internal table of same type depend on input to program.

thanks in advance.

~John

5 REPLIES 5

naimesh_patel
Active Contributor
0 Kudos

Hello,

See this code.

Regards,

Naimesh

REPORT ZPRA_DYNAMIC.

PARAMETERS: p_tab TYPE dd02l-tabname,

compon TYPE i.

DATA: field1 TYPE c VALUE '5',

field2(2) TYPE c VALUE '10',

field3(6) TYPE c ,

ref_tab TYPE REF TO data.

FIELD-SYMBOLS: <fs> TYPE STANDARD TABLE.

create DATA ref_tab TYPE standard TABLE of (P_TAB).

ASSIGN ref_tab->* TO <fs>.

PERFORM test TABLES <fs> USING field1 .

*&----


*

*& Form test

*&----


FORM test TABLES p_field1 USING p_field3.

FIELD-SYMBOLS <fs_wa> TYPE ANY.

FIELD-SYMBOLS <fs_comp> TYPE ANY.

CREATE DATA ref_tab TYPE (p_tab).

ASSIGN ref_tab->* TO <fs_wa>.

SELECT * FROM (p_tab) INTO TABLE <fs> .

LOOP AT <fs> INTO <fs_wa>.

ASSIGN COMPONENT compon OF STRUCTURE <fs_wa> TO <fs_comp>.

WRITE:/ <fs_comp>.

ENDLOOP.

ENDFORM. " test

Former Member
0 Kudos

hi John,

I feel that one table will be sufficient for downloading the data ... for that do it in this way

data : itab1 like USR02 occurs 0 with header line.

*data : itab2 like USR02 occurs 0 with header line.

*Based on your selection criteria select the fileds that you want to download in to itab1

i.e, select * from USR02 into table itab1 where ...

now use GUI_DOWNLOAD FM in this way...

  • Download internal table to presentation server file(PC)

if not itab1[] is initial.
  DATA: ld_filename TYPE string,
* Pre version 4.7 declaration e_file like rlgrap-filename.

  call function 'GUI_DOWNLOAD'
       exporting
            filename         = ld_filename
            filetype         = 'ASC'
       tables
            data_tab         = itab1[]
       exceptions
            file_open_error  = 1
            file_write_error = 2
            others           = 3.

endif.

Reward if it helps...

Former Member
0 Kudos

Hai John

Check the following Code

=====================================

REPORT zmaschl_create_data_dynamic .

TYPE-POOLS: slis.

DATA: it_fcat TYPE slis_t_fieldcat_alv,

is_fcat LIKE LINE OF it_fcat.

DATA: it_fieldcat TYPE lvc_t_fcat,

is_fieldcat LIKE LINE OF it_fieldcat.

DATA: new_table TYPE REF TO data.

DATA: new_line TYPE REF TO data.

FIELD-SYMBOLS: <l_table> TYPE ANY TABLE,

<l_line> TYPE ANY,

<l_field> TYPE ANY.

  • Build fieldcat

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

i_structure_name = 'SYST'

CHANGING

ct_fieldcat = it_fcat[].

LOOP AT it_fcat INTO is_fcat WHERE NOT reptext_ddic IS initial.

MOVE-CORRESPONDING is_fcat TO is_fieldcat.

is_fieldcat-fieldname = is_fcat-fieldname.

is_fieldcat-ref_field = is_fcat-fieldname.

is_fieldcat-ref_table = is_fcat-ref_tabname.

APPEND is_fieldcat TO it_fieldcat.

ENDLOOP.

  • Create a new Table

CALL METHOD cl_alv_table_create=>create_dynamic_table

EXPORTING

it_fieldcatalog = it_fieldcat

IMPORTING

ep_table = new_table.

  • Create a new Line with the same structure of the table.

ASSIGN new_table->* TO <l_table>.

CREATE DATA new_line LIKE LINE OF <l_table>.

ASSIGN new_line->* TO <l_line>.

  • Test it...

DO 30 TIMES.

ASSIGN COMPONENT 'SUBRC' OF STRUCTURE <l_line> TO <l_field>.

<l_field> = sy-index.

INSERT <l_line> INTO TABLE <l_table>.

ENDDO.

LOOP AT <l_table> ASSIGNING <l_line>.

ASSIGN COMPONENT 'SUBRC' OF STRUCTURE <l_line> TO <l_field>.

WRITE <l_field>.

ENDLOOP.

Regards

Sreeni

0 Kudos

Hi Sreenivaaulu,

I am sending my program here is :

TABLES:vbak,kuagv,vbkd,rv45a,vbap.

*1st internal table.

DATA:BEGIN OF t_vbak OCCURS 0,

auart LIKE vbak-auart,

vkorg LIKE vbak-vkorg,

END OF t_vbak.

*2nd internal table

DATA:BEGIN OF t_vbkd OCCURS 0,

bstkd LIKE vbkd-bstkd,

bstdk LIKE vbkd-bstdk,

END OF t_vbkd.

*3rd Internal table

DATA:BEGIN OF t_vbap OCCURS 0,

werks LIKE vbap-werks,

END OF t_vbap.

*Main internal table.

DATA: BEGIN OF t_sale OCCURS 0,

auart LIKE vbak-auart,

vkorg LIKE vbak-vkorg,

bstkd LIKE vbkd-bstkd,

bstdk LIKE vbkd-bstdk,

werks LIKE vbap-werks,

END OF t_sale.

DATA:fname(120),ftype(10),fsize TYPE i.

PARAMETER p_order LIKE vbak-auart .

START-OF-SELECTION.

SELECT auart vkorg FROM vbak INTO CORRESPONDING FIELDS OF TABLE t_vbak.

move-corresponding t_vbak to t_sale.

SELECT bstkd bstdk FROM vbkd INTO CORRESPONDING FIELDS OF TABLE t_vbkd

.

move-corresponding t_vbkd to t_sale.

SELECT werks FROM vbap INTO CORRESPONDING FIELDS OF TABLE t_vbap.

move-corresponding t_vbap to t_sale.

END-OF-SELECTION.

CALL FUNCTION 'DOWNLOAD'

EXPORTING

codepage = 'SPACE'

filename = 'd:\ag5'

filetype = 'DAT'

item = 'This is first file'

TABLES

data_tab = t_sale

.

LOOP AT t_sale.

WRITE:/ t_sale-auart,t_sale-vkorg,t_sale-bstkd,t_sale-bstdk.

ENDLOOP.

Former Member
0 Kudos

Hi john,

1.

For this purpose,

in my program,

there is an INDEPENDENT FORM

<b>whose inputs are

TABLE NAME / STRUCTURE NAME</b>

and from those, it consructs dynamic table.

2. Here is the program.

the dynamic table name will be

<DYNTABLE>.

3. U can use this program (FORM in this program)

to generate any kind of internal table

by specifying TABLE NAME .

4.

REPORT abc.

*----


COMPULSORY

FIELD-SYMBOLS: <dyntable> TYPE ANY TABLE.

FIELD-SYMBOLS: <dynline> TYPE ANY.

DATA: lt TYPE lvc_t_fcat.

DATA: ls TYPE lvc_s_fcat.

FIELD-SYMBOLS: <fld> TYPE ANY.

DATA : fldname(50) TYPE c.

*----


parameters : iname LIKE dd02l-tabname.

*----


START-OF-SELECTION.

*----


PERFORM

PERFORM mydyntable USING lt.

BREAK-POINT.

*----


  • INDEPENDENT FORM

*----


FORM mydyntable USING ptabname.

*----


Create Dyn Table From FC

FIELD-SYMBOLS: <fs_data> TYPE REF TO data.

FIELD-SYMBOLS: <fs_1>.

FIELD-SYMBOLS: <fs_2> TYPE ANY TABLE.

DATA: lt_data TYPE REF TO data.

data : lt TYPE lvc_t_fcat .

DATA : ddfields LIKE ddfield OCCURS 0 WITH HEADER LINE.

*----


CALL FUNCTION 'DD_NAMETAB_TO_DDFIELDS'

EXPORTING

tabname = iname

TABLES

ddfields = ddfields.

.

*----


CONSTRUCT FIELD LIST

LOOP AT ddfields.

ls-fieldname = ddfields-fieldname.

APPEND ls TO lt.

ENDLOOP.

ASSIGN lt_data TO <fs_data>.

CALL METHOD cl_alv_table_create=>create_dynamic_table

EXPORTING

it_fieldcatalog = lt

IMPORTING

ep_table = <fs_data>

EXCEPTIONS

generate_subpool_dir_full = 1

OTHERS = 2.

IF sy-subrc <> 0.

ENDIF.

*----


Assign Dyn Table To Field Sumbol

ASSIGN <fs_data>->* TO <fs_1>.

ASSIGN <fs_1> TO <fs_2>.

ASSIGN <fs_1> TO <dyntable>.

ENDFORM. "MYDYNTABLE

regards,

amit m.