创建.ZIP压缩文件[CL_ABAP_ZIP]

摘要:
SAP提供了一个CL类ABAP_ZIP来创建扩展名为.ZIP的压缩文件。

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

2017-03-01_16-06-41

代码:

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

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

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
REPORT ztest_zip.
 
TYPES:BEGIN OF bin_file,
         nameTYPEstring,
         sizeTYPE i,
         dataTYPE solix_tab,
       END OF bin_file  .
 
DATA: lv_filename     TYPEstring,
      wa_bindata      TYPE bin_file,
      it_bindata      TYPESTANDARD TABLE OF bin_file,
      oref_zip        TYPEREF TO cl_abap_zip,
      lv_zip_xstring  TYPExstring,
      lv_xstring      TYPExstring,
      lv_path         TYPEstring,
      it_filetab      TYPE filetable,
      lv_retcode      TYPE i,
      v_usr           TYPE i,
      v_zip_size      TYPE i,
      it_zip_bin_dataTYPESTANDARD TABLE OF raw255,
      v_dest_filepathTYPEstring.
 
DATA lv_filesizeTYPE i.
DATA wa_filetabLIKELINEOF 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_filetabINTO 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_bindataTO it_bindata.
 
ENDLOOP.
 
 
LOOP AT it_bindataINTO 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).

以上。

 

免责声明:文章转载自《创建.ZIP压缩文件[CL_ABAP_ZIP]》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇activiti 工作流Learning to rank (software, datasets)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Mac纯命令行实现分卷压缩和解压

一、 分卷压缩   【前提】:把文件夹先压缩一次。生成original.zip,然后对original.zip进行分段压缩。 zip - original.zip | split -b 500k -a 3 - file.zip   后面的参数意思是500k一个卷,以file.zipxxx命名   二、解压 1、合成一个大文件cat file.zip* &...

iOS zipzap读取压缩文件

最近在公司遇到一项需求,在不解压zip文件的情况下读取其中的文件,因为之前使用的ziparchive不能满足现在的需求,所以在网上一阵狂搜,终于找到了zipzap,实话说还真的难找。 之前读取本地zip文件的内容时会把它解压出来,运行app之后会发现原来的zip文件被同名文件夹取代,使用zipzap之后便不会再有这种情况,另外自己还可以根据需要把读取的文件...

Java对byte数组压缩 解压缩 (zip,gzip,bzip2,jzlib)

import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream;import java.io.DataOutputStream;import java.io.IOException;import java.util.zip.GZIPInputStream;import j...

攻防世界-crypto-你猜猜(常用文件的文件头、Ziperello爆破压缩包密码)

题目来源: ISCC-2017题目描述:我们刚刚拦截了,敌军的文件传输获取一份机密文件,请君速速破解。 下载附件后,内容如下: 504B03040A0001080000626D0A49F4B5091F1E0000001200000008000000666C61672E7478746C9F170D35D0A45826A03E161FB96870EDDFC7C...

7zip批量压缩,并批量改.jar

批量压缩.bat--要和将要压缩的文件在同一级目录下 for /d %%X in (*) do "D:Program Files7-Zip7z.exe" a "%%X.zip" ".\%%X*"     [技巧] a 添加文件到压缩档案。 7z a archive1.zip subdir :增加subdir文件夹下的所有的文件和子文件夹到archive...

通过调用支付宝查询对账单接口返回bill_download_url下载zip,解压缩

通过url下载zip对账单文件,进行解压。 读取压缩文件内容 import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStre...