使用SFTP Sender Adapter/.zip文件基于当前日期进行动态发件人文件提取

2020-08-23 00:11发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我遇到的情况与此博客非常相似 https://blogs.sap.com/2016/05/20/dynamic-sender-file-pickup-based-on-current-date/# 。 在这里,我有SFTP发送器适配器和.zip文件,它们需要根据当前日期(系统日期)动态获取。 界面应仅选择今天的日期并将其进行任何转换后发送给接收者。 这是一个传递方案。 我关注了博客并创建了界面,但是端到端执行时遇到错误。 错误详细信息如下:

无法将消息发送到模块处理器com.sap.aii.af.lib.mp.module.moduleexception.ModuleException:发件人通道"通道名称":捕获异常调用消息传递系统

执行接收器确定映射时出错


Java映射:

 import com.sap.aii.mapping.api.AbstractTrace;
 导入com.sap.aii.mapping.api.AbstractTransformation;
 导入com.sap.aii.mapping.api.DynamicConfiguration;
 导入com.sap.aii.mapping.api.DynamicConfigurationKey;
 导入com.sap.aii.mapping.api.OutputPayload;
 导入com.sap.aii.mapping.api.StreamTransformationException;
 导入com.sap.aii.mapping.api.TransformationInput;
 导入com.sap.aii.mapping.api.TransformationOutput;
 导入java.text.SimpleDateFormat;
 导入java.util.Date;
 导入javax.xml.parsers.DocumentBuilder;
 导入javax.xml.parsers.DocumentBuilderFactory;
 导入javax.xml.transform.Transformer;
 导入javax.xml.transform.TransformerFactory;
 导入javax.xml.transform.dom.DOMSource;
 导入javax.xml.transform.stream.StreamResult;
 导入org.w3c.dom.Document;
 导入org.w3c.dom.Element;


 公共类SPSListFilenameFilter扩展AbstractTransformation {
 @Override
 公共无效转换(TransformationInput TransformationInput,TransformationOutput transformOutput)
 引发StreamTransformationException
 {
 尝试
 {
 DynamicConfiguration conf = TransformationInput.getDynamicConfiguration();
 字符串fileName = conf.get(DynamicConfigurationKey.create(" http://sap.com/xi/XI/System/File"," FileName"));
         /*字符串fileName =" Test_202003022359_D.zip"; */
 日期日期=新的Date();
 字符串sysdate = new SimpleDateFormat(" yyyyMMdd")。format(date);
 DocumentBuilderFactory工厂= DocumentBuilderFactory.newInstance();
 factory.setIgnoringElementContentWhitespace(true);
 DocumentBuilder builder = factory.newDocumentBuilder();
 文档outputDoc = builder.newDocument();
 元素接收者= outputDoc.createElement(" ns0:Receivers");
 receivers.setAttribute(" xmlns:ns0"," http://sap.com/xi/XI/System");
 outputDoc.appendChild(receivers);
 元素接收者= outputDoc.createElement(" Receiver");
 receivers.appendChild(receiver);
 元素服务= outputDoc.createElement(" Service");
 如果(fileName.contains(sysdate)){
 service.setTextContent(" BC_Test");
 }
 receiver.appendChild(service);
 变压器变压器= TransformerFactory.newInstance()。newTransformer();
 Transformer.setOutputProperty(" indent"," yes");
 Transformer.transform(新的DOMSource(outputDoc),新的StreamResult(transformationOutput.getOutputPayload()
 .getOutputStream()));
 }
 捕获(异常e)
 {
 getTrace()。addDebugMessage(e.getMessage());
 抛出新的StreamTransformationException(e.getMessage());
 }
 }
 }
 

我还通过直接在Java映射中使用测试文件名来测试操作映射,并且操作映射给出了正确的结果,并且标记与名称空间一起创建了。

但是端到端测试无法正常工作。

高度赞赏这方面的任何回应。

谢谢

Vertika

(45.6 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我遇到的情况与此博客非常相似 https://blogs.sap.com/2016/05/20/dynamic-sender-file-pickup-based-on-current-date/# 。 在这里,我有SFTP发送器适配器和.zip文件,它们需要根据当前日期(系统日期)动态获取。 界面应仅选择今天的日期并将其进行任何转换后发送给接收者。 这是一个传递方案。 我关注了博客并创建了界面,但是端到端执行时遇到错误。 错误详细信息如下:

无法将消息发送到模块处理器com.sap.aii.af.lib.mp.module.moduleexception.ModuleException:发件人通道"通道名称":捕获异常调用消息传递系统

执行接收器确定映射时出错


Java映射:

 import com.sap.aii.mapping.api.AbstractTrace;
 导入com.sap.aii.mapping.api.AbstractTransformation;
 导入com.sap.aii.mapping.api.DynamicConfiguration;
 导入com.sap.aii.mapping.api.DynamicConfigurationKey;
 导入com.sap.aii.mapping.api.OutputPayload;
 导入com.sap.aii.mapping.api.StreamTransformationException;
 导入com.sap.aii.mapping.api.TransformationInput;
 导入com.sap.aii.mapping.api.TransformationOutput;
 导入java.text.SimpleDateFormat;
 导入java.util.Date;
 导入javax.xml.parsers.DocumentBuilder;
 导入javax.xml.parsers.DocumentBuilderFactory;
 导入javax.xml.transform.Transformer;
 导入javax.xml.transform.TransformerFactory;
 导入javax.xml.transform.dom.DOMSource;
 导入javax.xml.transform.stream.StreamResult;
 导入org.w3c.dom.Document;
 导入org.w3c.dom.Element;


 公共类SPSListFilenameFilter扩展AbstractTransformation {
 @Override
 公共无效转换(TransformationInput TransformationInput,TransformationOutput transformOutput)
 引发StreamTransformationException
 {
 尝试
 {
 DynamicConfiguration conf = TransformationInput.getDynamicConfiguration();
 字符串fileName = conf.get(DynamicConfigurationKey.create(" http://sap.com/xi/XI/System/File"," FileName"));
         /*字符串fileName =" Test_202003022359_D.zip"; */
 日期日期=新的Date();
 字符串sysdate = new SimpleDateFormat(" yyyyMMdd")。format(date);
 DocumentBuilderFactory工厂= DocumentBuilderFactory.newInstance();
 factory.setIgnoringElementContentWhitespace(true);
 DocumentBuilder builder = factory.newDocumentBuilder();
 文档outputDoc = builder.newDocument();
 元素接收者= outputDoc.createElement(" ns0:Receivers");
 receivers.setAttribute(" xmlns:ns0"," http://sap.com/xi/XI/System");
 outputDoc.appendChild(receivers);
 元素接收者= outputDoc.createElement(" Receiver");
 receivers.appendChild(receiver);
 元素服务= outputDoc.createElement(" Service");
 如果(fileName.contains(sysdate)){
 service.setTextContent(" BC_Test");
 }
 receiver.appendChild(service);
 变压器变压器= TransformerFactory.newInstance()。newTransformer();
 Transformer.setOutputProperty(" indent"," yes");
 Transformer.transform(新的DOMSource(outputDoc),新的StreamResult(transformationOutput.getOutputPayload()
 .getOutputStream()));
 }
 捕获(异常e)
 {
 getTrace()。addDebugMessage(e.getMessage());
 抛出新的StreamTransformationException(e.getMessage());
 }
 }
 }
 

我还通过直接在Java映射中使用测试文件名来测试操作映射,并且操作映射给出了正确的结果,并且标记与名称空间一起创建了。

但是端到端测试无法正常工作。

高度赞赏这方面的任何回应。

谢谢

Vertika

(45.6 kB)
付费偷看设置
发送
5条回答
nice_wp
1楼-- · 2020-08-23 00:43

嗨!

仅此一种情况:默认情况下,SFTP适配器对ASMA属性使用的命名空间与FILE/FTP适配器不同:

确保在频道设置中设置了正确的名称空间。

关于Evgeniy。

大道至简
2楼-- · 2020-08-23 00:42

可以确认,是否将服务接口设置为"无状态(与XI 3.0兼容)"

太Q了
3楼-- · 2020-08-23 00:55

您好,

这现在对我有用,解决方案与Evgeniy建议的相同。 添加了正确的名称空间 http://sap.com/xi/XI/System/File 在ASMA中。

感谢叶夫根尼

此致

Vertika

shere_lin
4楼-- · 2020-08-23 00:50

是,我已将服务接口设置为无状态(兼容XI 3.0)

小c菟菟
5楼-- · 2020-08-23 00:57

嗨!

< 坦白地说,我不理解使用DOM方法的含义,而您只需要构建固定的XML结构(带有或不带有接收器节点)。 我想构建包含您的输出XML有效负载的字符串就足够了。

关于Evgeniy。

一周热门 更多>