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

2020-09-10 05:21发布

         点击此处--->   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)

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

         点击此处--->   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
1楼 · 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

SC_Yao
2楼-- · 2020-09-10 05:55

嗨,Sugata,

感谢您的宝贵意见。

是的,我只想将文本发送到以下标签内的接收方:

ABC

ABD

xyz

标记内的内容已采用JSON格式。 我不想发送任何有关XML标签的信息。 Java映射有可能吗?

我认为Java映射将仅以XML生成有效载荷,该有效载荷将具有包装器元素(如消息类型和名称空间信息)以及上述标记。

我想到了用JMS接收器适配器中的MTB处理它。 能行吗?

https://wiki.scn.sap.com/wiki/display/XI/How+To...Content+conversion+module+with+J2EE+JMS+adapter

谢谢

Rajeev

葫芦娃快救爷爷
3楼-- · 2020-09-10 05:58

嗨,Rajeev,
如果您在下面的标记中获取JSON并且只想捕获该部分,那么我希望使用Java映射。

您可以使用Java映射来获取上方xml标记内的文本并将其发送到目标。

如果您要转换JSON(我想您不想要,因为您已经在ECC中准备JSON),则必须使用JSON对象API进行转换。

请在此线程中查找类似的Java映射-

https://answer.sap.com/questions/12658321/trigger-error-alerts-to-clients-based-on-payload.html

谢谢

Sugata

一周热门 更多>