9.表单下载
相关函数:1)'WS_FILENAME_GET' 2)'GUI_DOWNLOAD'
FORM DOWNLOAD_FILE .
DATA LV_FILENAME TYPE STRING .
*1. 获取文件名
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
DEF_FILENAME = '物料信息表 '
* DEF_PATH = ' '
MASK = '*.xls;*.xlsx;*.txt '
MODE = 'S'
TITLE = '整个表单保存 '
IMPORTING
FILENAME = LV_FILENAME
* RC =
EXCEPTIONS
INV_WINSYS = 1
NO_BATCH = 2
SELECTION_CANCEL = 3
SELECTION_ERROR = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
EXIT.
* Implement suitable error handling here
ENDIF.
*2. 表单下载
CHECK LV_FILENAME IS NOT INITIAL .
*2.1 下载内表的转换,设置表头
IF GT_FIELDNAME IS INITIAL .
GT_FIELDNAME-FIELDNAME = '集团'.
APPEND GT_FIELDNAME .
GT_FIELDNAME-FIELDNAME = '物料编号'.
APPEND GT_FIELDNAME .
GT_FIELDNAME-FIELDNAME = '物料描述'.
APPEND GT_FIELDNAME .
GT_FIELDNAME-FIELDNAME = '物料组' .
APPEND GT_FIELDNAME .
GT_FIELDNAME-FIELDNAME = '基本计量单位'.
APPEND GT_FIELDNAME .
GT_FIELDNAME-FIELDNAME = '创建日期'.
APPEND GT_FIELDNAME .
GT_FIELDNAME-FIELDNAME = '创建人员名称'.
APPEND GT_FIELDNAME .
GT_FIELDNAME-FIELDNAME = '审批状态'.
APPEND GT_FIELDNAME .
ENDIF.
REFRESH GT_DOWNLOAD.
LOOP AT GT_GROUP INTO GS_GROUP .
CLEAR GS_DOWNLOAD.
MOVE-CORRESPONDING GS_GROUP TO GS_DOWNLOAD .
APPEND GS_DOWNLOAD TO GT_DOWNLOAD .
ENDLOOP.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
* BIN_FILESIZE =
FILENAME = LV_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_DOWNLOAD
FIELDNAMES = GT_FIELDNAME[]
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.