ALSM_EXCEL_TO_INTERNAL_TABLE 导入excel
GUI_UPLOAD 导入 txt
这两个都是比较常见的导入功能,也很好用。 可以自定义封装一个类似下图导入功能。
1.ALSM_EXCEL_TO_INTERNAL_TABLE,这个函数模块可以把用户本地 EXCEL 文件中的一个矩形块中的内容上传到一个内表中。
输入参数:
FILENAME:最长 128 个字符的路径名称。
I_BEGIN_COL:导入单元格的开始列
I_BEGIN_ROW:导入单元格的开始行
I_END_COL:导入单元格的结束列
I_END_ROW:导入单元格的结束行
FILENAME:最长 128 个字符的路径名称。
I_BEGIN_COL:导入单元格的开始列
I_BEGIN_ROW:导入单元格的开始行
I_END_COL:导入单元格的结束列
I_END_ROW:导入单元格的结束行
输出参数:
INTERN:内表,存储单元格的内容。结构如下:
-ROW:数据所在行
-COL:数据所在列
-VALUE:数据,最长 50 个字符,如果超过,则相同 ROW COL 的记录出现多行
INTERN:内表,存储单元格的内容。结构如下:
-ROW:数据所在行
-COL:数据所在列
-VALUE:数据,最长 50 个字符,如果超过,则相同 ROW COL 的记录出现多行
主要代码如下:
TYPES:BEGIN OF ty_data,aufnr TYPE afko-aufnr, "订单END OF ty_data.PARAMETERS: p_impfil LIKE rlgrap-filename . --画面上定义一个选择框 DATA: itab TYPE TABLE OF alsmex_tabline WITH HEADER LINE. "主要代码: FIELD-SYMBOLS: <fs>,<fs_alv> TYPE ty_data.CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'EXPORTINGfilename = g_filei_begin_col = 1i_begin_row = 2 "--去掉表头i_end_col = 30i_end_row = 15000TABLESintern = itab[]. --先放到系统内表 "- 再放入自定义内表:LOOP AT itab.ON CHANGE OF itab-row.IF sy-tabix NE 1.APPEND w_data TO t_data.CLEAR w_data.ENDIF.ENDON.ASSIGN COMPONENT itab-col OF STRUCTURE w_data TO <fs>."动态方法将值传到相应的内表<fs> = itab-value.ENDLOOP.APPEND w_data TO t_data.
2.GUI_UPLOAD --上载txt
l_name = p_impfil.CLEAR:t_data.CALL FUNCTION 'GUI_UPLOAD'EXPORTINGfilename = l_name "选择文件的路径filetype = 'DAT'has_field_separator = 'X'read_by_line = 'X'codepage = '4110' * ignore_cerr = abap_truereplacement = '#'TABLESdata_tab = t_data2EXCEPTIONSfile_open_error = 1file_read_error = 2no_batch = 3gui_refuse_filetransfer = 4invalid_type = 5no_authority = 6unknown_error = 7bad_data_format = 8header_not_allowed = 9separator_not_allowed = 10header_too_long = 11unknown_dp_error = 12access_denied = 13dp_out_of_memory = 14disk_full = 15dp_timeout = 16OTHERS = 17.DELETE t_data2 INDEX 1. " 去掉第一行表头