点击Configure,进入到创建路径界面
完成点击保存,此时的创建并不代表已经创建完成
通过外部指令添加文件夹到真正的系统服务器上。
点击创建按钮
接下来点击保存按钮,并执行到最后
此时我们回到AL11打开路径,可成功打开
第一次执行程序的内容
改变子文件名称和内容再来执行一次,得到如下文件。
代码:
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.
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.