要把图中的数据传到内表OUTTAB中,源代码如下,用到的函数是ALSM_EXCEL_TO_INTERNAL_TABLE
DATA: filetab TYPE filetable WITH HEADER LINE . DATA: rc TYPE i. DATA: outtab TYPE TABLE OF mara WITH HEADER LINE . DATA: itab TYPE TABLE OF alsmex_tabline WITH HEADER LINE.
DATA:g_file TYPE rlgrap-filename.
FIELD-SYMBOLS: <fs>.
PARAMETERS: p_file TYPE string.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file. CALL METHOD cl_gui_frontend_services=>file_open_dialog EXPORTING default_filename = p_file CHANGING rc = rc file_table = filetab[].
READ TABLE filetab INDEX 1.
IF sy-subrc EQ 0. p_file = filetab-filename. ENDIF.
START-OF-SELECTION. g_file = p_file. "注意两个文件用于不同的函数,所以类型不同
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' EXPORTING filename = g_file i_begin_col = 1 i_begin_row = 1 i_end_col = 255 i_end_row = 65536 TABLES intern = itab[].
DELETE itab WHERE row = 1. "删除字段名行
LOOP AT itab.
ON CHANGE OF itab-row. IF sy-tabix NE 1. APPEND outtab. CLEAR outtab. ENDIF. ENDON.
ASSIGN COMPONENT itab-col OF STRUCTURE outtab TO <fs>. "动态方法将值传到相应的内表 <fs> = itab-value.
ENDLOOP.
APPEND outtab. "这句不要忘记,要把最后一条APPEND到内表中 |
结果如下