ABAP 将上传文件转换为XSTRING,然后怎样才能将XSTRING还原为文件
时间: 2023-12-17 10:02:05 浏览: 172
在 ABAP 中,可以使用 CL_GUI_FRONTEND_SERVICES 类中的 GUI_DOWNLOAD 方法来将 XSTRING 转换回文件并下载到本地计算机。
以下是示例代码:
```
DATA: lv_file TYPE string,
lv_path TYPE string,
lv_xstring TYPE xstring.
* 获取文件的路径和名称(例如在 ALV 报表中选择文件)
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = sy-repid
dynpro_number = sy-dynnr
field_name = 'FILE'
IMPORTING
file_name = lv_file
path = lv_path.
* 将文件转换为 XSTRING
CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
filename = lv_file
filetype = 'BIN'
IMPORTING
filelength = DATA(lv_filesize)
CHANGING
data_tab = lt_xstring.
* 将 XSTRING 转换回文件并下载到本地计算机
CALL METHOD cl_gui_frontend_services=>gui_download
EXPORTING
bin_filesize = lv_filesize
filename = lv_file
filetype = 'BIN'
write_field_separator = ' '
CHANGING
data_tab = lt_xstring
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
headertoo_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.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
```
在上面的代码中,首先使用 GUI_UPLOAD 方法将上传的文件转换为 XSTRING,并将其存储在 lt_xstring 表中。然后,使用 GUI_DOWNLOAD 方法将 XSTRING 转换回文件,并下载到本地计算机中。
请注意,GUI_DOWNLOAD 方法需要指定文件的名称、路径和类型,并且需要传递 XSTRING 数据以及文件的大小(bin_filesize)。如果文件已经存在,则会根据用户的选择进行覆盖或重命名。如果下载过程中遇到任何错误,则会触发相应的 EXCEPTIONS 块。
阅读全文