每次上传9999,循环十次99990数据量,根据实际需求设置循环次数。
REPORT ztest22. TYPE-POOLS:slis. DATA:BEGIN OF it_fname OCCURS 0, name TYPE char255, END OF it_fname. DATA:g_begin_row TYPE i, g_end_row TYPE i. DATA:git_temp TYPE TABLE OF alsmex_tabline, gwa_temp TYPE alsmex_tabline. TYPES:BEGIN OF ty_tab, aufnr TYPE aufnr, "工单 jx_matnr TYPE matnr, "机型 wl_matnr TYPE matnr, "物料 mng01 TYPE i, "数量 podate TYPE string, "日期 END OF ty_tab. DATA:gt_itab TYPE TABLE OF ty_tab WITH NON-UNIQUE KEY aufnr jx_matnr, wa_itab TYPE ty_tab. SELECTION-SCREEN BEGIN OF BLOCK blk_001 WITH FRAME TITLE text-001 . "选择文件路径 PARAMETERS:p_file LIKE rlgrap-filename. SELECTION-SCREEN END OF BLOCK blk_001. AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file . PERFORM open_file. START-OF-SELECTION. PERFORM upload_file. "上传数据 *&---------------------------------------------------------------------* *& Form open_file *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM open_file. CALL FUNCTION 'KD_GET_FILENAME_ON_F4' EXPORTING program_name = syst-repid dynpro_number = syst-dynnr mask = '*.xlsx,*.xls' static = 'X' CHANGING file_name = p_file. ENDFORM. "vq_fn *&---------------------------------------------------------------------* *& Form upload_file *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM upload_file . g_begin_row = 2. "从第几行开始 g_end_row = g_begin_row + 10000. "列数 DO 10 TIMES. REFRESH:git_temp. * Get EXCEL-Sheet in internal table CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' EXPORTING filename = p_file i_begin_col = '1' i_begin_row = g_begin_row i_end_col = 10 i_end_row = g_end_row TABLES intern = git_temp EXCEPTIONS inconsistent_parameters = 1 upload_ole = 2 OTHERS = 3. IF git_temp[] IS INITIAL. EXIT. ELSE. LOOP AT git_temp INTO gwa_temp. AT NEW row. CLEAR wa_itab. ENDAT. CASE gwa_temp-col. WHEN '1'. wa_itab-aufnr = gwa_temp-value. WHEN '2'. wa_itab-jx_matnr = gwa_temp-value. WHEN '3'. wa_itab-wl_matnr = gwa_temp-value. WHEN '4'. wa_itab-mng01 = gwa_temp-value. WHEN '5'. wa_itab-podate = gwa_temp-value. ENDCASE. AT END OF row. APPEND wa_itab TO gt_itab. ENDAT. ENDLOOP. g_begin_row = g_end_row + 1. g_end_row = g_begin_row + 10000. ENDIF. ENDDO. ENDFORM. " UPLOAD_FILE *&---------------------------------------------------------------------* *& Form append_filename *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_NAME text *----------------------------------------------------------------------* FORM append_filename USING p_name . it_fname-name = p_name. APPEND it_fname. CLEAR it_fname. ENDFORM. "append_filename