点击此处---> 群内免费提供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)
嗨!
仅此一种情况:默认情况下,SFTP适配器对ASMA属性使用的命名空间与FILE/FTP适配器不同:
确保在频道设置中设置了正确的名称空间。
关于Evgeniy。
可以确认,是否将服务接口设置为"无状态(与XI 3.0兼容)"
您好,
这现在对我有用,解决方案与Evgeniy建议的相同。 添加了正确的名称空间 http://sap.com/xi/XI/System/File 在ASMA中。
感谢叶夫根尼
此致
Vertika
是,我已将服务接口设置为无状态(兼容XI 3.0)
嗨!
< 坦白地说,我不理解使用DOM方法的含义,而您只需要构建固定的XML结构(带有或不带有接收器节点)。 我想构建包含您的输出XML有效负载的字符串就足够了。关于Evgeniy。
一周热门 更多>