EXCEL模板下载
模板下载是下载一个带有固定表头的EXCEL文件,即方便用户将数据放到指定的列,以便正确的上传数据。
在筛选界面增加下载模板按钮
第一种:应用工具栏增加按钮
1、定义tables为sscrfields;
TABLES:sscrfields.
2、设置选择屏幕的功能键
"数字1~5,对应界面中可以增加的五个按钮
SELECTION-SCREEN FUNCTION KEY 1.
3、初始化按钮(设置按钮的图标和文本)
设置按钮文本
INITIALIZATION.
TYPE-POOLS icon.
sscrfields-functxt_01 = '@0Q@下载模板'.
设置按钮图标
第一种:
通过 TYPE-POOLS ICON 设置,即可以先通过表 ICON 找到想要的图标的名称如 ICON_CHANGE_TEXT ,然后在类型组 ICON 里找到对应的ID ,如 @0Q@,然后将ID放置在按钮文本前即可。
INITIALIZATION.
sscrfields-functxt_01 = '@0Q@下载模板'.
第二种:
直接在按钮文本前写入一个图标。
INITIALIZATION.
WRITE icon_change_text AS ICON TO sscrfields-functxt_01+(4).
sscrfields-functxt_01+4(*) = '下载模板'.
4、设置选择界面按钮的功能
任何按钮的功能都在PAI里面
"在PAI下设置按钮功能
AT SELECTION-SCREEN.
PERFORM selection_screen_pai.
*&---------------------------------------------------------------------*
*& Form SELECTION_SCREEN_PAI
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM selection_screen_pai .
CASE sscrfields-ucomm.
WHEN 'FC01'.
PERFORM download_template."模板下载的功能
ENDCASE.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form DOWNLOAD_TEMPLATE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM download_template .
DATA: l_filename TYPE string,
l_path TYPE string,
l_fullpath TYPE string.
REFRESH gt_template. "清空一下表体,然后从表头行增加这个表体内容
APPEND gt_template.
"1、获取文件保存路径
CALL METHOD cl_gui_frontend_services=>file_save_dialog
EXPORTING
window_title = '下载文件'
default_extension = '*.*' "默认扩展名
* default_file_name =
* with_encoding =
file_filter = 'All files (*.*)|*.*|Excel Template (*.xlt)|*.xlt|Excel Workbook (*.xls)|*.xls' "默认文件类型
* initial_directory =
* prompt_on_overwrite = 'X'
CHANGING
filename = l_filename
path = l_path
fullpath = l_fullpath
* user_action =
* 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.
* Implement suitable error handling here
ENDIF.
CHECK l_filename IS NOT INITIAL.
"2、将内表下载到指定路径的文件下
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
* BIN_FILESIZE =
filename = l_filename
* FILETYPE = 'ASC'
* APPEND = ' '
write_field_separator = 'X'
* HEADER = '00'
* TRUNC_TRAILING_BLANKS = ' '
* WRITE_LF = 'X'
* COL_SELECT = ' '
* COL_SELECT_MASK = ' '
* DAT_MODE = ' '
* CONFIRM_OVERWRITE = ' '
* NO_AUTH_CHECK = ' '
* CODEPAGE = ' '
* IGNORE_CERR = ABAP_TRUE
* REPLACEMENT = '#'
* WRITE_BOM = ' '
* TRUNC_TRAILING_BLANKS_EOL = 'X'
* WK1_N_FORMAT = ' '
* WK1_N_SIZE = ' '
* WK1_T_FORMAT = ' '
* WK1_T_SIZE = ' '
* WRITE_LF_AFTER_LAST_LINE = ABAP_TRUE
* SHOW_TRANSFER_STATUS = ABAP_TRUE
* VIRUS_SCAN_PROFILE = '/SCET/GUI_DOWNLOAD'
* IMPORTING
* FILELENGTH =
TABLES
data_tab = gt_template
* FIELDNAMES =
EXCEPTIONS
file_write_error = 1
no_batch = 2
gui_refuse_filetransfer = 3
invalid_type = 4
no_authority = 5
unknown_error = 6
header_not_allowed = 7
separator_not_allowed = 8
filesize_not_allowed = 9
header_too_long = 10
dp_error_create = 11
dp_error_send = 12
dp_error_write = 13
unknown_dp_error = 14
access_denied = 15
dp_out_of_memory = 16
disk_full = 17
dp_timeout = 18
file_not_found = 19
dataprovider_exception = 20
control_flush_error = 21
OTHERS = 22.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDFORM.