在SAP中上传文件我知道的有两种方法。
1、可以使用SMW0事务码。
2、写代码实现。
DATA:lt_file TYPE filetable WITH HEADER LINE,
rec TYPE i.
DATA: l_filter TYPE string.
- 选择上传文件
CONCATENATE cl_gui_frontend_services=>filetype_excel
cl_gui_frontend_services=>filetype_all
INTO l_filter.
CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
window_title = ‘Upload Excel’ - default_extension = ‘.xls’
- default_filename =
file_filter = l_filter
initial_directory = ‘C:’
CHANGING
file_table = lt_file[]
rc = rec
EXCEPTIONS
file_open_dialog_failed = 1
cntl_error = 2
error_no_gui = 3
not_supported_by_gui = 4
OTHERS = 5.
IF rec >= 1.
READ TABLE lt_file INDEX 1.
p_file = lt_file-filename.
ELSEIF rec = 0.
CLEAR p_file.
ELSE.
MESSAGE e000 WITH text-e01.
ENDIF.
下载文件就没那么方便要Coding了,代码如下
DATA:lc_table TYPE filetable,
l_rc TYPE i,
l_file LIKE rlgrap-filename.
FIELD-SYMBOLS: TYPE file_table .
DATA: l_string TYPE string.
DATA: obj_name LIKE wwwdatatab-objid.
DATA: objdata LIKE wwwdatatab,
rc LIKE sy-subrc.
CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
window_title = g_filetitle
file_filter = g_filefilter
initial_directory = g_initdir
CHANGING
file_table = lc_table
rc = l_rc
EXCEPTIONS
cntl_error = 1
file_open_dialog_failed = 2
error_no_gui = 3.
CALL METHOD cl_gui_cfw=>flush
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2.
READ TABLE lc_table ASSIGNING INDEX 1.
CHECK sy-subrc EQ 0.
l_file = -filename.
CONDENSE l_file.
SELECT SINGLE relid objid
FROM wwwdata
INTO CORRESPONDING FIELDS OF objdata
WHERE srtf2 = 0
AND relid = ‘MI’
AND bjid = p_name.
IF sy-subrc <> 0.
CONCATENATE ‘模板文件:’ p_name ‘不存在,请用TCODE:SMW0进行加载’
INTO l_string.
MESSAGE l_string TYPE ‘E’.
EXIT.
ENDIF.
IF objdata-objid = space .
CONCATENATE ‘模板文件:’ p_name ‘不存在,请用TCODE:SMW0进行加载’
INTO l_string.
MESSAGE l_string TYPE ‘E’.
EXIT.
ENDIF.
CALL FUNCTION ‘DOWNLOAD_WEB_OBJECT’
EXPORTING
key = objdata
destination = l_file
IMPORTING
rc = rc.
IF rc <> 0.
WRITE : / ‘模板文件:’ , obj_name, ‘下载失败,请与开发人员联系’.
ELSE.
MESSAGE ‘该模板下载成功!!’ TYPE ‘S’.
STOP.
ENDIF.