FORM frm_file_download USING pv_sy_repid pv_filename pv_filter.
* pv_sy_repid = sy_repid
* pv_filename = xxx
* pv_filter = Excel文件 (*.XLSX)|*.XLSX|Excel文件 (*.XLS)|*.XLS
DATA: lv_filename TYPE string.
DATA: lv_filter TYPE string.
DATA: lv_obj_name TYPE wwwdatatab-objid.
DATA: lt_objdata TYPE wwwdatatab.
DATA: lv_destination TYPE localfile.
DATA: lv_subrc TYPE sy-subrc.
DATA: lv_str TYPE string.
DATA: lv_path TYPE string.
DATA: lv_fullpath TYPE string.
DATA: lv_wtitle TYPE string.
lv_obj_name = pv_sy_repid.
lv_filename = pv_filename.
lv_filter = pv_filter.
SELECT SINGLE relid objid
FROM wwwdata
INTO CORRESPONDING FIELDS OF lt_objdata
WHERE srtf2 = 0
AND relid = 'MI'
AND objid = lv_obj_name.
IF sy-subrc <> 0.
* 请检查文件是否正确
MESSAGE TEXT-023 TYPE 'S' DISPLAY LIKE 'W'.
EXIT.
ENDIF.
IF lv_filename IS INITIAL.
SELECT SINGLE value INTO lv_filename
FROM wwwparams
WHERE relid = 'MI'
AND objid = lv_obj_name
AND name = 'filename'.
ENDIF.
* 文件下载
lv_wtitle = TEXT-018.
CALL METHOD cl_gui_frontend_services=>file_save_dialog
EXPORTING
window_title = lv_wtitle
default_extension = lv_filter
default_file_name = lv_filename
file_filter = lv_filter
CHANGING
filename = lv_filename
path = lv_path
fullpath = lv_fullpath .
CHECK lv_fullpath IS NOT INITIAL.
lv_destination = lv_fullpath.
CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
EXPORTING
key = lt_objdata
destination = lv_destination
IMPORTING
rc = lv_subrc.
IF lv_subrc <> 0.
* 文件下载失败
MESSAGE TEXT-019 TYPE 'S' DISPLAY LIKE 'E'.
EXIT.
ELSE.
* 文件下载成功
MESSAGE TEXT-020 TYPE 'S'.
ENDIF.
ENDFORM.
FORM frm_upload_data .
DATA: lv_file TYPE string.
DATA: lf_file_exists TYPE c.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
* 正在处理,请等待...
text = TEXT-021.
* 检查文件是否存在
lv_file = p_file.
CALL METHOD cl_gui_frontend_services=>file_exist
EXPORTING
file = lv_file
RECEIVING
result = lf_file_exists
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
wrong_parameter = 3
not_supported_by_gui = 4
OTHERS = 5.
IF sy-subrc = 0 AND lf_file_exists IS INITIAL.
* 上载数据为空,请检查!
MESSAGE TEXT-022 TYPE 'S' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
ENDIF.
* 上传文件 明细数据读取
DATA: lt_excel TYPE TABLE OF alsmex_tabline .
* 读取本地EXCEL文件数据
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = p_file
i_begin_col = 1
i_begin_row = 3
i_end_col = 6
i_end_row = 100
TABLES
intern = lt_excel.
IF lt_excel[] IS INITIAL.
* 上载数据为空,请检查!
MESSAGE TEXT-022 TYPE 'S' DISPLAY LIKE 'E'.
EXIT.
ENDIF.
* 数据处理
LOOP AT lt_excel INTO DATA(ls_excel).
AT NEW row.
APPEND INITIAL LINE TO gt_upload ASSIGNING FIELD-SYMBOL(<fsl_excel>).
ENDAT.
ASSIGN COMPONENT ls_excel-col OF STRUCTURE <fsl_excel> TO FIELD-SYMBOL(<fsl_data>).
IF sy-subrc = 0.
<fsl_data> = ls_excel-value .
ENDIF.
ENDLOOP.
ENDFORM.
sap文件上传与下载
最新推荐文章于 2024-07-03 16:17:13 发布