JMS接收器内容转换/仅将特定字段数据发送到接收器。

2020-09-10 05:21发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)专家, 我们有一个要求,我们必...

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

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


专家,

我们有一个要求,我们必须构建2个入库单接口。

RabbitMQ -------- >> PO --------- >> ECC

现在,我们需要构建一个出站接口,在其中发送上述任何上述接口的失败消息的数据。 如果消息在ECC中失败,则消息有效负载将被转换为JSON,并在出站结构的"某些"字段中以TEXT的形式发送给PI。

出站结构如下:

<?xml version =" 1.0" encoding =" UTF-8"?>

http://nets.eu/po/ecc/e2e">

从ECC中,所有文本都将被发送到PI域中的rejectedPayload。

现在我们只需要将此文本传递给Receiver(JMS适配器/rabbitMQ)

请提供您宝贵的建议以体现上述情况。

3条回答
clasier
2020-09-10 05:57 .采纳回答

Hello Rajeev,
如果只有一次该标签,则可以使用下面的Java代码-

这将返回标签内的JSON部分并作为输出流发送。 您可以在目标上创建消息类型结构,但是Java映射将为您提供JSON输出,因为它是流输出。

包com.sap.pi.JSON2Extract;
 导入com.sap.aii.mapping.api.AbstractTransformation;
 导入com.sap.aii.mapping.api.StreamTransformationException;
 导入com.sap.aii.mapping.api.TransformationInput;
 导入com.sap.aii.mapping.api.TransformationOutput;
 导入java.io.InputStream;
 导入java.io.OutputStream;
 公共类JSON2Extract扩展AbstractTransformation
 {
     公共无效transform(TransformationInput arg0,TransformationOutput arg1)引发StreamTransformationException
     {
           InputStream in = arg0.getInputPayload()。getInputStream();
           OutputStream输出= arg1.getOutputPayload()。getOutputStream();
           尝试
           {
            byte [] b =新的byte [in.available()];
            in.read(b);
            字符串rejectpayload =新的字符串(b);
            int contStart = rejectpayload.indexOf(" ");
            int contEnd = rejectpayload.indexOf(" ");
            rejectpayload = rejectpayload.substring(contStart + 17,contEnd);
            out.write(rejectpayload.getBytes());
           }
           捕获(异常e)
           {
               e.toString();
            }
      }
 }

 

谢谢

Sugata

一周热门 更多>