***工具栏按钮使用到的系统结构
TABLES sscrfields.
* 模板标题用内表
TYPES :
* 模板标题用类型
BEGIN OF gtyp_title,
title1(20) TYPE c, "标题
title2(20) TYPE c, "标题
title3(20) TYPE c, "标题
title4(20) TYPE c, "标题
title5(20) TYPE c, "标题
title6(20) TYPE c, "标题
END OF gtyp_title.
DATA ls_title TYPE gtyp_title.
DATA gt_title TYPE STANDARD TABLE OF gtyp_title.
DATA warn(20).
***按行列存放excel中的数据
DATA gt_excel TYPE STANDARD TABLE OF alsmex_tabline WITH HEADER LINE .
***按excel中格式存放数据
DATA : BEGIN OF gt_out OCCURS 0,
field1(20),
field2(20),
field3(20),
field4(20),
field5(20),
field6(20),
END OF gt_out.
PARAMETERS p_files TYPE rlgrap-filename OBLIGATORY .
***定义工具栏按钮
SELECTION-SCREEN FUNCTION KEY 1.
INITIALIZATION.
**工具栏按钮赋值
sscrfields-functxt_01 = '单击下载模板'.
***动态得到路径的事件块
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_files .
***动态得到文件路径
CALL FUNCTION 'F4_FILENAME'
IMPORTING
file_name = p_files.
***内表转化
LOOP AT gt_excel WHERE row GT 1.
CASE gt_excel-col.
WHEN 1.
gt_out-field1 = gt_excel-value .
WHEN 2.
gt_out-field2 = gt_excel-value .
WHEN 3.
gt_out-field3 = gt_excel-value .
WHEN 4.
gt_out-field4 = gt_excel-value .
WHEN 5.
gt_out-field5 = gt_excel-value .
WHEN 6.
gt_out-field6 = gt_excel-value .
ENDCASE.
ENDLOOP.
IF gt_out[] IS NOT INITIAL .
MESSAGE '上传成功' TYPE 'S'.
warn = '@08@'.
WRITE warn.
ELSE.
MESSAGE '上传失败' TYPE 'S'.
warn = '@0A@'.
WRITE warn.
ENDIF.
*&---------------------------------------------------------------------*
*& Form FRM_DOWNLOAD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_download .
CASE sscrfields-ucomm.
WHEN 'FC01'.
DATA : ls_title TYPE gtyp_title,
l_file TYPE string,
l_filename(128) TYPE c.
IF gt_title IS INITIAL.
ls_title-title1 = '标题1'.
ls_title-title2 = '标题2'.
ls_title-title3 = '标题3'.
ls_title-title4 = '标题4'.
ls_title-title5 = '标题5'.
ls_title-title6 = '标题6'.
APPEND ls_title TO gt_title. "模板存放在此内表中
ENDIF.
***得到下载文件的保存路径
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
def_path = ''
mask = ' (*.xls),*.xls,'
mode = 'S'
title = text-004
IMPORTING
filename = l_filename
EXCEPTIONS
inv_winsys = 1
no_batch = 2
selection_cancel = 3
selection_error = 4
OTHERS = 5.
IF sy-subrc <> 0.
CLEAR: l_filename.
ENDIF.
l_file = l_filename.
***下载ECEL文件到本地
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = l_file
filetype = 'DAT'
codepage = '8400'
TABLES
data_tab = gt_title.
IF sy-subrc = 0.
MESSAGE '模板下载成功!' TYPE 'S'.
ELSE.
MESSAGE '模板下载错误!' TYPE 'E'.
ENDIF.
ENDCASE.
ENDFORM. " FRM_DOWNLOAD