点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,
我有一个要求:在SFTP服务器中,我有3个目录,带有3个文件名:
目录1:Bank_Server01_001 * .zip(zip包含10或20个txt文件)
目录2:Bank1_server02_002 * .zip(zip包含10或20个txt文件)
目录3:Bank2_server03_003 * .zip(zip包含10或20个txt文件)
我需要从这些目录中选择文件并解压缩文件,为此,我使用了Java映射来实现此要求。
我拿了一个Zip文件和(三个测试文件)。
Ramu.zip(ramu1.txt,ramu2.txt,ramu3.txt)使用下面的映射,我可以解压缩并读取文件,但是在放置文件时,我得到一个包含所有内容的文件(ramu2.txt作为输出文件) )
代码:
导入com.sap.aii.mapping.api。*; 公共类unzipFiles扩展AbstractTransformation { java.io.OutputStream outputstream = TransformationOutput.getOutputPayload()。getOutputStream(); zis = new java.util.zip.ZipInputStream(inputstream); java.util.zip.ZipEntry ze; while((ze = zis.getNextEntry())!= null){int len; 字节b [] =新字节[2048]; while((len = zis.read(b,0,2048))!= -1){outputstream.write(b,0,len);复制代码 } java.util.Map mapParameters = TransformationInput.getInputHeader()。getAll(); mapParameters.put(DynamicConfigurationKey.create(" http://sap.com/xi/XI/Dynamic ",StreamTransformationConstants.DYNAMIC_CONFIGURATION),""); DynamicConfiguration conf =(DynamicConfiguration)mapParameters.get(StreamTransformationConstants.DYNAMIC_CONFIGURATION); conf.put(DynamicConfigurationKey.create(" http://sap.com/xi/XI/System/File "," FileName"),ze.getName()); }} catch(Exception exception){getTrace()。addDebugMessage(exception.getMessage()); 抛出新的StreamTransformationException(exception.toString()); }}}
这是我的问题,我需要在两个通道(发送方和接收方)中使用相同的文件名(即使使用了ASMA选项)也要发送到目标系统,但文件仍未到达接收方目录中?
嗨,
如果仅要求将所有文件解压缩并将其放置在接收方SFTP服务器中,并且文件名与压缩文件中的文件名相同,则可以使用PayloadZipBean和SFTP适配器参数" retain.attachment.name"来实现。 请参阅SAP注释#
2670297-在SFTP接收器中保留PayloadZipBean的未压缩文件中的文件名
此致
Priyanka
HI Priyanka,
SFTP是发件人。
SFTP到FTP
发件人SFTP:
Ramu.ZIP里面包含2个txt文件
ramu1.txt(20个记录)
ramu2.txt(30条记录)
我需要解压缩并读取内容和文件名,并将文件名和数据一起发送到接收器FTP安装位置。
接收方FTP:
我需要将文件名和数据放在一起
ramu1.txt(20条记录)
ramu2.txt(30个记录)
嗨Ramanjaneya!
我建议请求将FTP接收器更改为SFTP。 如果不可能,我会看到两个可能的解决方法:
1。 编写一个自定义适配器模块以解压缩有效负载并将每个文件作为单独的消息发送。
2。 使用多重映射。 在这种情况下,您可以尝试将每个文件内容放在单独消息的XML元素内,并在接收方FTP通道使用FCC将其转换为文本文件。 或者,您可以对文件内容使用BASE64编码,将每个文件的结果字符串和文件名放入多消息结构的单独XML消息中,并使用带有Java或XSLT映射的SOAP环回将BASE64编码的字符串转换回文本格式并将结果保存到 FTP适配器下载文件。
关于,叶夫根尼。
如果无法将接收方FTP更改为SFTP,则可以将其分为两个单独的方案。 将解压缩的文件放在同一SFTP服务器上,然后进行选择和处理。
方案1:从SFTP到SFTP(Pick Ramu.zip,遵循我之前提到的SAP注释#2670297,保留文件名并将其放在相同的SFTP位置)。
方案2:SFTP到FTP(从SFTP中选择Ramu * .txt文件,执行所需的FCC/映射等操作并发送到目标FTP服务器)。
-Priyanka
方案1:从SFTP到SFTP(Pick Ramu.zip,遵循我之前提到的SAP注释#2670297,保留文件名并将它们放在相同的SFTP位置)
现在我将SFTP应用于SFTP应用说明2670297。直到出现一些问题。第一个文件未到达接收者目录。
来源:Ramu.ZIP(a.txt,b.txt,c.txt)
当前输出如下:
Ramu.ZIP_b.txt
Ramu.ZIP_c.txt
Ramu.ZIP
a.txt(不放在接收者目录中,而ramu.zip也放在接收者端)
一周热门 更多>