上传:smw0
下载:
DATA: lw_key LIKE wwwdatatab,
lv_dest LIKE rlgrap-filename,
lv_rc LIKE sy-subrc.
DATA: lv_filename TYPE string,
lv_path TYPE string,
lv_fullpath TYPE string,
lv_def_filename TYPE string.
DATA: u_tcode TYPE w3objid.
u_tcode = ‘ZSDP004’.
lv_def_filename = TEXT-003 && TEXT-006.
TRANSLATE lv_def_filename TO UPPER CASE.
CALL METHOD cl_gui_frontend_services=>file_save_dialog
EXPORTING
default_extension = ‘XLSX’
default_file_name = lv_def_filename
-
with_encoding = file_filter = 'Excel Files (*.XLSX)|*.XLSX|' initial_directory = 'C:\' prompt_on_overwrite = 'X'
CHANGING
filename = lv_filename
path = lv_path
fullpath = lv_fullpath -
user_action = l
-
file_encoding =
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
invalid_default_file_name = 4
OTHERS = 5.
IF sy-subrc = 0.
lw_key-relid = ‘MI’.
lw_key-objid = u_tcode .
TRANSLATE lw_key-objid TO UPPER CASE.lv_dest = lv_fullpath.
CALL FUNCTION ‘DOWNLOAD_WEB_OBJECT’
EXPORTING
key = lw_key
destination = lv_dest
IMPORTING
rc = lv_rc.
IF lv_rc <> 0.
数据导入:
DATA:lt_excel TYPE TABLE OF zalsmex_tabline,
ls_excel TYPE zalsmex_tabline,
lv_col TYPE kcd_ex_col_n,
lv_type TYPE c,
lv_date TYPE datum.
FIELD-SYMBOLS:<fs_field> ,
<fs_structure>.
DATA:lv_lines TYPE sy-tabix,
lv_tabix TYPE sy-tabix.ASSIGN gs_sd004 TO <fs_structure>.
"call upload fm
CALL FUNCTION ‘ZALSM_EXCEL_TO_INTERNAL_TABLE’
EXPORTING
filename = p_file
i_begin_col = 1
i_begin_row = 2
i_end_col = 7
i_end_row = 9999
i_sheet_name = ‘’
TABLES
intern = lt_excel
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ‘Upload Failed’ TYPE ‘E’.
ENDIF.
LOOP AT lt_excel INTO ls_excel.
lv_col = ls_excel-col + 1.
ASSIGN COMPONENT lv_col OF STRUCTURE <fs_structure> TO <fs_field>.
"检查单据类型
DESCRIBE FIELD <fs_field> TYPE lv_type.
CASE lv_type.
WHEN ‘C’.
<fs_field> = ls_excel-value.
CONDENSE <fs_field>.
WHEN ‘I’ "数字串
OR ‘s’
OR ‘b’
OR ‘N’
OR ‘F’
OR ‘P’.
CATCH SYSTEM-EXCEPTIONS arithmetic_errors = 5
conversion_errors = 6
bcd_overflow = 7
bcd_field_overflow = 8.<fs_field> = ls_excel-value. ENDCATCH. IF sy-subrc <> 0. MESSAGE e001(00) WITH ls_excel-row '行' ls_excel-col '列数据转换错误'. ENDIF. WHEN 'D'. "检查日期格式 CLEAR lv_date. lv_date = ls_excel-value. CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY' EXPORTING date = lv_date EXCEPTIONS plausibility_check_failed = 1 OTHERS = 2. IF sy-subrc <> 0. MESSAGE e001(00) WITH ls_excel-row '行' ls_excel-col '列日期格式错误'. ELSE. <fs_field> = ls_excel-value. ENDIF. WHEN OTHERS. <fs_field> = ls_excel-value.
ENDCASE.
AT END OF row.
APPEND <fs_structure> TO gt_sd004.
CLEAR:gs_sd004.
ENDAT.
ENDLOOP."检查导入数据
LOOP AT gt_sd004 INTO gs_sd004.
lv_tabix = sy-tabix.
ENDLOOP.