通过ERP系统 产生压缩文件,并保存到系统服务器。

创建系统文件夹   AL11

通过ERP系统 产生压缩文件,并保存到系统服务器。

 

点击Configure,进入到创建路径界面

通过ERP系统 产生压缩文件,并保存到系统服务器。

完成点击保存,此时的创建并不代表已经创建完成

通过ERP系统 产生压缩文件,并保存到系统服务器。

 

SM69

通过外部指令添加文件夹到真正的系统服务器上。

通过ERP系统 产生压缩文件,并保存到系统服务器。

点击创建按钮

通过ERP系统 产生压缩文件,并保存到系统服务器。

接下来点击保存按钮,并执行到最后

通过ERP系统 产生压缩文件,并保存到系统服务器。

此时我们回到AL11打开路径,可成功打开

通过ERP系统 产生压缩文件,并保存到系统服务器。

 

创建压缩文件

通过ERP系统 产生压缩文件,并保存到系统服务器。

 

通过ERP系统 产生压缩文件,并保存到系统服务器。

 

第一次执行程序的内容

通过ERP系统 产生压缩文件,并保存到系统服务器。

 

改变子文件名称和内容再来执行一次,得到如下文件。

通过ERP系统 产生压缩文件,并保存到系统服务器。

 

 

代码:

TYPES:
  BEGIN OF XML_LINE,
    DATA(512) TYPE X,
  END OF XML_LINE.

DATA:
  LV_LENGTH      TYPE I,
  LV_ZIP_XSTRING TYPE XSTRING,
  LV_NAME        TYPE STRING,
  LV_XTR         TYPE XSTRING,
  GV_XML         TYPE STRING,
  LV_STRING      TYPE XSTRING,
  LV_DSN         TYPE STRING.

DATA:
  LS_BINARY TYPE XML_LINE,
  LT_BINARY TYPE STANDARD TABLE OF XML_LINE,
  LT_LIST TYPE STANDARD TABLE OF EPSFILI.

DATA:
    LO_ZIP TYPE REF TO CL_ABAP_ZIP.

CREATE OBJECT LO_ZIP.

LV_DSN = 'e:\10490_test\10490_02.zip'.

*打开系统文件夹路径
OPEN DATASET LV_DSN FOR INPUT IN BINARY MODE.
 

IF SY-SUBRC = 0.
*读取二进制数据
  READ DATASET LV_DSN INTO LV_STRING.

ENDIF.

*关闭系统文件路径
CLOSE DATASET LV_DSN.

* 加载已有数据
LO_ZIP->LOAD( LV_STRING ).

GV_XML = '123456789QWERT'.

* SRING类型转换为16进制
CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
  EXPORTING
    TEXT           = GV_XML
*   MIMETYPE       = ' '
*   ENCODING       =
 IMPORTING
   BUFFER         = LV_XTR
 EXCEPTIONS
   FAILED         = 1
   OTHERS         = 2
          .
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

*填充子文件名称
LV_NAME = '123.XML'.

*添加子文件进入压缩文件
LO_ZIP->ADD( NAME = LV_NAME CONTENT = LV_XTR ).

*获取压缩文件中的全部数据(16进制)
LV_ZIP_XSTRING = LO_ZIP->SAVE( ).

*16进制转换为2进制
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
  EXPORTING
    BUFFER                = LV_ZIP_XSTRING
*   APPEND_TO_TABLE       = ' '
 IMPORTING
   OUTPUT_LENGTH         = LV_LENGTH
  TABLES
    BINARY_TAB            = LT_BINARY.

*打开原始文件路径,进行数据修改操作

OPEN DATASET LV_DSN FOR OUTPUT IN BINARY MODE.

LOOP AT LT_BINARY INTO LS_BINARY.
  TRANSFER LS_BINARY-DATA TO LV_DSN.
ENDLOOP.

CLOSE DATASET LV_DSN.

 

 

解压缩文件

通过ERP系统 产生压缩文件,并保存到系统服务器。

 

通过ERP系统 产生压缩文件,并保存到系统服务器。

 

通过ERP系统 产生压缩文件,并保存到系统服务器。

 

通过ERP系统 产生压缩文件,并保存到系统服务器。

 

TYPES:
  BEGIN OF T_FILE,
    NAME TYPE STRING,
    DATE TYPE D,
    TIME TYPE T,
    SIZE TYPE I,
  END OF T_FILE.

DATA:
  TXT_DATA       TYPE STRING,
  LV_ENCODE      TYPE ABAP_ENCOD VALUE 'NON-UNICODE',
  LV_ZIP_CONTENT TYPE XSTRING,
  LV_COUNT       TYPE INT4,
  LV_STRING      TYPE XSTRING,
  LV_NAME        TYPE STRING.

DATA:
  CONV_X2C TYPE REF TO CL_ABAP_CONV_IN_CE,
  LO_ZIP   TYPE REF TO CL_ABAP_ZIP.



DATA:
  TXT_NEWLINE TYPE STANDARD TABLE OF STRING,
  LT_TAB TYPE STANDARD TABLE OF T_FILE.

FIELD-SYMBOLS:
   <T> TYPE T_FILE.

LV_NAME = 'e:\10490_test\10490_03.zip'.

*读取路径下文件
OPEN DATASET LV_NAME FOR INPUT IN BINARY MODE .

*读取内容至二进制
READ DATASET LV_NAME INTO LV_STRING.

*关闭文件路径
CLOSE DATASET LV_NAME.

CREATE OBJECT LO_ZIP.

*加载数据
LO_ZIP->LOAD( LV_STRING ).

*获取子文件名称
LT_TAB = LO_ZIP->FILES.

CLEAR LV_COUNT.

LOOP AT LT_TAB ASSIGNING <T>.

  LV_COUNT = LV_COUNT + 1.

*获取每一个xml下的16进制内容进行拼接
  CALL METHOD LO_ZIP->GET
    EXPORTING
      INDEX   = LV_COUNT
    IMPORTING
      CONTENT = LV_ZIP_CONTENT.

  CONV_X2C = CL_ABAP_CONV_IN_CE=>CREATE( ENCODING = LV_ENCODE ).

* 16进制转换为文本
  CONV_X2C->CONVERT(  EXPORTING INPUT = LV_ZIP_CONTENT
                      IMPORTING DATA  = TXT_DATA ).
*
ENDLOOP.