‎2006 Jul 14 10:25 AM
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
‎2006 Jul 14 10:32 AM
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
‎2006 Jul 14 10:48 AM
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...
‎2006 Jul 14 10:53 AM
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
‎2006 Jul 14 12:11 PM
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.
‎2006 Jul 14 12:13 PM
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.