ABAP如何处理压缩文件
项目中经常会遇到自动发送邮件的场景,比如发货后自动给收货人发送邮件,并附上发货单相关的附件。如果有多个附件需要发送,可能需要对附件进行压缩。
附件如果存储在SAP自定义表中,是以XSTRING方式存储的。根据交货单号取到相关的附件到内表中进行压缩处理。下面是代码示例:
FORM frm_add_zip USING p_tmpstr.
DATA: lo_izip TYPE REF TO cl_abap_zip,
xzip_file TYPE xstring,
lv_len TYPE i,
binary_tab TYPE STANDARD TABLE OF x255.
DATA: lv_file TYPE string,
lv_cont TYPE xstring.
CREATE OBJECT lo_izip.
"将文件压缩
LOOP AT gt_zsdt016 INTO gw_zsdt016 WHERE tknum = gw_add-tknum.
lv_file = gw_zsdt016-filename.
lv_cont = gw_zsdt016-clustd. "读取到内表的已经是XSTRING类型
CALL METHOD lo_izip->add
EXPORTING
name = lv_file
content = lv_cont.
ENDLOOP.
CALL METHOD lo_izip->save
RECEIVING
zip = xzip_file.
“xzip_file作为一个XSTRING的字段,包含了所有的压缩文件
p_tmpstr = xzip_file.
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
BUFFER = XZIP_FILE
IMPORTING
output_length = lv_len
TABLES
BINARY_TAB = BINARY_TAB.
ZIP压缩文件里文件名称中文会导致乱码,使用下面的方法解决:
1、找到类CL_ABAP_ZIP,找到ADD方法
2、在方法的最后添加增强代码
添加时使用字符集gb2312,就解决了文件名称中文乱码的问题。
PS:喜欢的同学可以关注微信公众号
post SAP-Garson
原文链接:https://blog.csdn.net/Buffalo_soldier/article/details/109676503文章来自于网络,如果侵犯了您的权益,请联系站长删除!