‎2008 Apr 16 11:20 AM
Hi guru's...
can someone provide me how to use dynamic interal table.
I have done a coding in which I want to use *it_data_tab * as dynamic internal table and instead of DISPLAY_BASIC_LIST
which another FM can i Use.
*&---------------------------------------------------------------------*
*& Report YAKP_TEST6
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT yakp_test6.
TYPES : BEGIN OF ts_col ,
col TYPE alsmex_tabline-col,
size TYPE i ,
END OF ts_col.
TYPES : BEGIN OF ts_header,
title(60) TYPE c ,
END OF ts_header.
DATA : w_fname TYPE rlgrap-filename,
w_begincol TYPE i VALUE '1' ,
w_beginrow TYPE i VALUE '1' ,
w_endcol TYPE i VALUE '100' ,
w_endrow TYPE i VALUE '32000' ,
w_datalength TYPE i ,
w_totalrecords TYPE i ,
w_index(4) TYPE n ,
w_cell(22),
wheader TYPE char1.
CONSTANTS : c_x TYPE char1 VALUE 'X'.
DATA : it_tab1 TYPE TABLE OF alsmex_tabline,
it_tab2 TYPE TABLE OF alsmex_tabline,
is_tab1 TYPE alsmex_tabline,
is_tab2 TYPE alsmex_tabline,
it_listheader TYPE TABLE OF ts_header,
is_listheader TYPE ts_header,
it_col TYPE TABLE OF ts_col,
is_col TYPE ts_col.
TYPES : BEGIN OF ts_data_tab ,
value_0001(50),
value_0002(50),
value_0003(50),
value_0004(50),
value_0005(50),
value_0006(50),
value_0007(50),
value_0008(50),
value_0009(50),
value_0010(50),
value_0011(50),
value_0012(50),
value_0013(50),
value_0014(50),
value_0015(50),
value_0016(50),
value_0017(50),
value_0018(50),
value_0019(50),
value_0020(50),
value_0021(50),
value_0022(50),
value_0023(50),
value_0024(50),
value_0025(50),
value_0026(50),
value_0027(50),
value_0028(50),
value_0029(50),
value_0030(50),
value_0031(50),
value_0032(50),
value_0033(50),
value_0034(50),
value_0035(50),
value_0036(50),
value_0037(50),
value_0038(50),
value_0039(50),
value_0040(50),
value_0041(50),
value_0042(50),
value_0043(50),
value_0044(50),
value_0045(50),
value_0046(50),
value_0047(50),
value_0048(50),
value_0049(50),
value_0050(50),
value_0051(50),
value_0052(50),
value_0053(50),
value_0054(50),
value_0055(50),
value_0056(50),
value_0057(50),
value_0058(50),
value_0059(50),
value_0060(50),
value_0061(50),
value_0062(50),
value_0063(50),
value_0064(50),
value_0065(50),
value_0066(50),
value_0067(50),
value_0068(50),
value_0069(50),
value_0070(50),
value_0071(50),
value_0072(50),
value_0073(50),
value_0074(50),
value_0075(50),
value_0076(50),
value_0077(50),
value_0078(50),
value_0079(50),
value_0080(50),
value_0081(50),
value_0082(50),
value_0083(50),
value_0084(50),
value_0085(50),
value_0086(50),
value_0087(50),
value_0088(50),
value_0089(50),
value_0090(50),
value_0091(50),
value_0092(50),
value_0093(50),
value_0094(50),
value_0095(50),
value_0096(50),
value_0097(50),
value_0098(50),
value_0099(50),
value_0100(50),
END OF ts_data_tab.
DATA : it_data_tab TYPE TABLE OF ts_data_tab,
is_data_tab TYPE ts_data_tab.
FIELD-SYMBOLS <fs>.
DATA w_res TYPE i.
PARAMETERS : p_fname TYPE rlgrap-filename,
w_check TYPE c AS CHECKBOX.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fname .
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
CHANGING
file_name = w_fname.
p_fname = w_fname.
CLEAR w_fname.
START-OF-SELECTION.
IF w_check = 'X'.
wheader = c_x.
ELSE.
wheader = space.
ENDIF.
REFRESH : it_tab1, it_listheader, it_tab2, it_col,it_data_tab.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = p_fname
i_begin_col = w_begincol
i_begin_row = w_beginrow
i_end_col = w_endcol
i_end_row = w_endrow
TABLES
intern = it_tab1
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE e000(00) WITH 'File upload failed'.
ENDIF.
LOOP AT it_tab1 INTO is_tab1.
MOVE-CORRESPONDING is_tab1 TO is_tab2.
CLEAR is_tab2-row.
APPEND is_tab2 TO it_tab2.
CLEAR : is_tab1 , is_tab2.
ENDLOOP.
SORT it_tab2 BY col.
LOOP AT it_tab2 INTO is_tab2.
AT NEW col.
is_col-col = is_tab2-col.
APPEND is_col TO it_col.
ENDAT.
w_datalength = STRLEN( is_tab2-value ).
READ TABLE it_col INTO is_col WITH KEY col = is_tab2-col.
IF sy-subrc = 0.
IF w_datalength > is_col-size.
is_col-size = w_datalength.
MODIFY it_col FROM is_col INDEX sy-tabix TRANSPORTING size.
ENDIF.
ENDIF.
CLEAR is_tab2.
ENDLOOP.
DESCRIBE TABLE it_col LINES w_totalrecords.
SORT it_tab1 BY row col.
IF wheader = c_x.
LOOP AT it_tab1 INTO is_tab1.
is_listheader-title = is_tab1-value.
APPEND is_listheader TO it_listheader.
AT END OF row.
EXIT.
ENDAT.
ENDLOOP.
ELSE.
DO w_totalrecords TIMES.
is_listheader-title = sy-index.
APPEND is_listheader TO it_listheader.
ENDDO.
ENDIF.
SORT it_tab1 BY row col.
LOOP AT it_tab1 INTO is_tab1.
IF wheader = c_x AND is_tab1-row = 1.
CONTINUE.
ENDIF.
w_index = is_tab1-col.
CONCATENATE 'IS_DATA_TAB-VALUE_' w_index INTO w_cell.
ASSIGN (w_cell) TO <fs>.
<fs> = is_tab1-value.
AT END OF row.
APPEND is_data_tab TO it_data_tab.
CLEAR is_data_tab.
ENDAT.
CLEAR is_tab1.
ENDLOOP.
IF wheader <> c_x.
DELETE it_data_tab INDEX 1.
ENDIF.
CALL FUNCTION 'DISPLAY_BASIC_LIST'
EXPORTING
basic_list_title = 'Excel File Upload'
file_name = p_fname
TABLES
data_tab = it_data_tab
fieldname_tab = it_listheader.
‎2008 Apr 16 11:28 AM
hi,
try this..
=====================================
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,
Raj
‎2008 Apr 18 5:43 AM
try this..................
TYPES:BEGIN OF ty_itab ,
objecttype TYPE string,
objectname TYPE string,
END OF ty_itab.
DATA:
count TYPE i,
file TYPE ibipparms-path,
iexcel TYPE TABLE OF alsmex_tabline ,
wa_itab TYPE ty_itab,
itab type standard table of ty_itab,
wa_iexcel TYPE alsmex_tabline.
field-symbols : <fs> type string.
*Calling function module to get file path from PC
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
IMPORTING
file_name = file.
*Calling function module to upload excel sheet
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = file
i_begin_col = 1
i_begin_row = 1
i_end_col = 2
i_end_row = 65000
TABLES
intern = iexcel
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.
IF sy-subrc <> 0.
WRITE :/15 'FILE NOT UPLOADED. INVALID FILE NAME OR PATH.' COLOR 6 .
EXIT.
ENDIF.
LOOP AT iexcel INTO wa_iexcel.
count = count + 1.
ASSIGN COMPONENT count OF STRUCTURE wa_itab TO <fs>.
<fs> = wa_iexcel-value.
AT END OF row.
CLEAR count.
APPEND wa_itab TO itab.
ENDAT.
CLEAR wa_iexcel.
ENDLOOP.
loop at itab into wa_itab.
Write : / wa_itab-objectname ,wa_itab-objecttype.
endloop.
‎2008 Jul 07 5:59 AM