点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
专家们,
我们需要解压缩多个文件并将这些文件放置到目标目录中。
我们可以使用payloadzip bean实现相同的目的吗?
我可以看到一些与同一问题相关的线程,这表明不可能使用payloadzip bean解压缩多个文件。 但是那些线程很旧。
有人可以告诉我最新版本的SAP PI中是否有任何选项可以使用payloadzip bean解压缩多个文件?
我知道使用Shell脚本和Java映射可以达到相同的要求。 但是这些是我想使用的最后一个选择。
谢谢。
尼采什
嗨,Nitheesh!
这是PayloadZipBean的代码片段:
否则,如果(zipmode.equals(" unzip")) {字符串ifilename =(String)bins.get(i);
TRACE.infoT(" process(ModuleContext,ModuleData)",ModuleCategories.SAP_MODULE_ROOT,"解压缩");
BinaryBufferInputStream binin = new BinaryBufferInputStream(pldbin);
ZipInputStream zin = new ZipInputStream(binin);
byte [] tmpbuf =新的byte ['?'];
向量箱= new Vector();
ZipEntry项;
while((entry = zin.getNextEntry())!= null ){
如果(!entry.isDirectory()) {
字符串文件名= entry.getName();
BinaryBufferOutputStream binout =新的BinaryBufferOutputStream();
for(;;) {
int c = zin.read(tmpbuf,0,tmpbuf.length);
if(c <0){
break;
}
binout.write(tmpbuf,0, c);
}
bins.add(文件名);
bins.add(binout.toBinary());
}
}
zin.close();
如果(bins.size()> 0) {
字符串文件名=(String)bins.get(0);
setPayload(pld,(二进制)bins.get(1),generateContentType(文件名),文件名);
字符串zipStatus =" Zip :未压缩的有效负载";
TRACE.infoT(" process(ModuleContext,ModuleData)",ModuleCategories.SAP_MODULE_ROOT,zipStatus);
Audit.addAuditLogEntry(auditkey,AuditLogStatus.SUCCESS,zipStatus);
如果(垃圾箱) .size()> = 2){
int count = 0;
for(int i = 2; i
XMBPayload ipld = XMBMessageOperator.createPayload();
ipld.setPayloadDescription(ifilename);
ipld.setPayloadType(PayloadType.APPLICATION_ATTACHMENT) ;
setPayload(ipld,(Binary)bins.get(i +1),generateContentType(ifilename),ifilename);
XMBMessageOperator.addPayload(mo,ipld); count ++;
}
zipStatus ="邮编:解压缩其他" + count +"有效负载";
TRACE.infoT(" process(ModuleContext,ModuleData)",ModuleCategories.SAP_MODULE_ROOT,zipStatus);
Audit.addAuditLogEntry(auditkey,AuditLogStatus.SUCCESS,zipStatus);
}
}
}
从此代码中可以看到,它为每个其他附件创建附件 提取文件。
我没有尝试使用PayloadZipBean提取多个文件,但是您可以自己尝试。
关于此,Evgeniy。
一周热门 更多>