[代码]创建.ZIP压缩文件[CL_ABAP_ZIP]详解编程语言

SAP提供了一个类CL_ABAP_ZIP来创建.zip扩展名的压缩文件。

2017-03-01_16-06-41

代码:

先将文件通过cl_gui_frontend_services=>gui_upload以BIN的文件类型上载,然后通过cl_abap_zip中的方法add()

save()压缩,最后下载到本地。

REPORT ztest_zip. 
TYPES: BEGIN OF bin_file, 
name TYPE string, 
size TYPE i, 
data TYPE solix_tab, 
END OF bin_file  . 
DATA: lv_filename     TYPE string, 
wa_bindata      TYPE bin_file, 
it_bindata      TYPE STANDARD TABLE OF bin_file, 
oref_zip        TYPE REF TO cl_abap_zip, 
lv_zip_xstring  TYPE xstring, 
lv_xstring      TYPE xstring, 
lv_path         TYPE string, 
it_filetab      TYPE filetable, 
lv_retcode      TYPE i, 
v_usr           TYPE i, 
v_zip_size      TYPE i, 
it_zip_bin_data TYPE STANDARD TABLE OF raw255, 
v_dest_filepath TYPE string. 
DATA lv_filesize TYPE i. 
DATA wa_filetab LIKE LINE OF it_filetab. 
"create object 
CREATE OBJECT oref_zip. 
"upload 
cl_gui_frontend_services=>file_open_dialog( 
EXPORTING 
window_title            = 'Select files that you want to ZIP' 
multiselection          = 'X' 
CHANGING 
file_table              = it_filetab 
rc                      = lv_retcode 
user_action             = v_usr ). 
LOOP AT it_filetab INTO wa_filetab. 
lv_filename = wa_filetab-filename. 
cl_gui_frontend_services=>gui_upload( 
EXPORTING 
filename                = lv_filename 
filetype                = 'BIN' 
IMPORTING 
filelength               = wa_bindata-size 
CHANGING 
data_tab                = wa_bindata-data ). 
CALL FUNCTION 'SO_SPLIT_FILE_AND_PATH' 
EXPORTING 
full_name     = lv_filename 
IMPORTING 
stripped_name = wa_bindata-name 
EXCEPTIONS 
x_error       = 1 
OTHERS        = 2. 
APPEND wa_bindata TO it_bindata. 
ENDLOOP. 
LOOP AT it_bindata INTO wa_bindata. 
CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' 
EXPORTING 
input_length = wa_bindata-size 
IMPORTING 
buffer       = lv_xstring 
TABLES 
binary_tab   = wa_bindata-data. 
oref_zip->add( name    = wa_bindata-name 
content = lv_xstring ). 
ENDLOOP        . 
lv_zip_xstring = oref_zip->save( ). 
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' 
EXPORTING 
buffer        = lv_zip_xstring 
IMPORTING 
output_length = v_zip_size 
TABLES 
binary_tab    = it_zip_bin_data. 
cl_gui_frontend_services=>file_save_dialog( 
EXPORTING 
window_title         = 'SELECT THE LOCATION TO SAVE THE FILE' 
file_filter          = '(*.ZIP)|*.ZIP|' 
CHANGING 
filename             = lv_filename 
path                 = lv_path 
fullpath             = v_dest_filepath ). 
cl_gui_frontend_services=>gui_download( 
EXPORTING 
bin_filesize              = v_zip_size 
filename                  = v_dest_filepath 
filetype                  = 'BIN' 
IMPORTING 
filelength                = lv_filesize 
CHANGING 
data_tab                  = it_zip_bin_data ).

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/19223.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论