当前位置:首页 > Web开发 > 正文

多sheet页 Excel文件上传

2024-03-31 Web开发

DATA lv_filename TYPE string. TYPES:BEGIN OF ty_excel, werks TYPE marc-werks, bwart TYPE matdoc-bwart, cpudt TYPE matdoc-cpudt, "凭证日期 budat TYPE matdoc-budat, "过账日期 hsdat TYPE matdoc-hsdat, "生产日期 lifnr TYPE matdoc-lifnr, "供应商 20181031 lgort TYPE matdoc-lgort, insmk TYPE matdoc-insmk, "库存类型 matnr TYPE matdoc-matnr, erfmg TYPE matdoc-erfmg, charg TYPE matdoc-charg, erfme TYPE matdoc-erfme, exbwr TYPE matdoc-exbwr, zhxm TYPE zmmb011_t-zhxm, END OF ty_excel. DATA: gt_excel TYPE STANDARD TABLE OF ty_excel. PARAMETERS p_file TYPE rlgrap-filename MODIF ID imp. lv_filename = p_file. CALL FUNCTION ZBC_UPLOAD_EXCEL_OLE EXPORTING pi_filename = lv_filename pi_startline = 2 pi_startcolumn = 1 TABLES pt_tab = gt_excel EXCEPTIONS open_file_err = 1 OTHERS = 2. IF sy-subrc <> 0. MESSAGE e003(zbc) WITH sy-msgv1 sy-msgv2. ELSE. SORT gt_excel. ENDIF.

ZBC_UPLOAD_EXCEL_OLE

都必输入

FUNCTION zbc_upload_excel_ole. *"---------------------------------------------------------------------- *"*"本地接口: *" IMPORTING *" REFERENCE(PI_FILENAME) TYPE STRING *" REFERENCE(PI_SHEETNAME) TYPE STRING DEFAULT ‘Sheet1‘ *" REFERENCE(PI_STARTLINE) TYPE I DEFAULT ‘1‘ *" REFERENCE(PI_STARTCOLUMN) TYPE I DEFAULT ‘1‘ *" REFERENCE(PI_SKPCL_TBL) TYPE I DEFAULT ‘0‘ *" TABLES *" PT_TAB *" EXCEPTIONS *" OPEN_FILE_ERR *"---------------------------------------------------------------------- DATA: lt_tabc TYPE STANDARD TABLE OF zchar30000, lw_tabc TYPE zchar30000, lv_tabix TYPE sy-tabix, lt_cell TYPE STANDARD TABLE OF string, lw_cell TYPE string, lv_cell_tabix TYPE sy-tabix. DATA: lv_column_num TYPE i, lv_column_skp TYPE i, lw_tab_ref TYPE REF TO data. DATA: lo_cx_root TYPE REF TO cx_root. DATA: lv_message TYPE string. DATA descr_ref TYPE REF TO cl_abap_structdescr. FIELD-SYMBOLS: <lw_tab> TYPE any, <lv_value> TYPE any. CREATE DATA lw_tab_ref LIKE LINE OF pt_tab. ASSIGN lw_tab_ref->* TO <lw_tab>. lv_column_skp = pi_skpcl_tbl. *->把数据放到内表 CALL FUNCTION ZBC_EXCEL_2_INNER_TABLE EXPORTING pi_filename = pi_filename pi_sheetname = pi_sheetname TABLES pt_tab = lt_tabc EXCEPTIONS file_open_error = 1 OTHERS = 2. IF sy-subrc <> 0. MESSAGE e000(zmm) WITH sy-msgv1 RAISING open_file_err. "&1&2&3&4 ENDIF. *->把数据切割到内表 LOOP AT lt_tabc INTO lw_tabc. lv_tabix = sy-tabix. CHECK lv_tabix >= pi_startline. CLEAR lt_cell. SPLIT lw_tabc AT cl_abap_char_utilities=>horizontal_tab INTO TABLE lt_cell. LOOP AT lt_cell INTO lw_cell. lv_cell_tabix = sy-tabix. lv_column_num = lv_cell_tabix - pi_startcolumn + 1 + lv_column_skp. CHECK lv_column_num > 0. ASSIGN COMPONENT lv_column_num OF STRUCTURE <lw_tab> TO <lv_value>. CHECK sy-subrc = 0. TRY. <lv_value> = lw_cell. CATCH cx_root INTO lo_cx_root. descr_ref ?= cl_abap_typedescr=>describe_by_data( pt_tab ). READ TABLE descr_ref->components INTO DATA(ls_name) INDEX lv_column_num. lv_message = && lv_tabix && && && lv_column_num && 列字段名为&& ls_name-name && 错误的值为: && lw_cell. MESSAGE e000(zmm) WITH lv_tabix lv_column_num lv_message RAISING open_file_err. ENDTRY. ENDLOOP. IF <lw_tab> IS NOT INITIAL. APPEND <lw_tab> TO pt_tab. CLEAR <lw_tab>. ENDIF. ENDLOOP. ENDFUNCTION.

ZBC_EXCEL_2_INNER_TABLE

技术图片

其余必输入

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/41276.html