根据有效负载向客户端触发错误警报

2020-09-10 10:21发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 我在pi 7.4双协议栈...

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

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


嗨,

我在pi 7.4双协议栈中工作,每当PI中有错误时,都需要将错误信息发送到特定客户端。 客户名称将出现在消息的有效负载中,因此基于有效负载条件,需要将警报电子邮件路由到特定的客户端。

Ex:如果PI中客户端名称字段为" X"的消息失败,并且出现了一些错误,则必须将该错误消息路由到"客户端X"的邮件ID,对于其他客户端" Y"," Z"也是如此 定制的主体和主题。

请提出实现此要求的方法。

致谢

Pavan

5条回答
宇峰Kouji
2020-09-10 10:51 .采纳回答

嗨,Pavan,
您可以使用以下一个-

包com.sap.pi.JSON2XMLConversion;
 导入org.json.JSONObject;
 导入org.json.XML;

 导入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;
 公共类JSON2XMLConversion扩展AbstractTransformation
 {
     公共无效transform(TransformationInput arg0,TransformationOutput arg1)引发StreamTransformationException
     {
           InputStream in = arg0.getInputPayload()。getInputStream();
           OutputStream输出= arg1.getOutputPayload()。getOutputStream();
           尝试
           {
            byte [] b =新的byte [in.available()];
            in.read(b);
            字符串JSONreq =新字符串(b);
            JSONreq = JSONreq.replace("&","&");
            JSONreq = JSONreq.replace(" 
",""); int contStart = JSONreq.indexOf(" "); int contEnd = JSONreq.indexOf(" "); JSONreq = JSONreq.substring(contStart,contEnd).replace(" ",""); JSONObject obj =新的JSONObject(JSONreq); //将json转换为xml 字符串xml_data = XML.toString(obj); xml_data =" "。concat(xml_data).concat(" "); out.write(xml_data.getBytes()); } 捕获(异常e) { e.toString(); } } }

将电子邮件输入视为XML如下-

它将像这样转换为XML-您可以将其映射到目标邮件包结构,以将电子邮件发送给特定的客户端。 我在这里使用了UDS属性ReprocessAccount,但是您可以使用Client ID进行更改,然后在下一步中进行映射。

您必须在构建路径/Maven中添加外部jar-在NWDS中构建上述Java类时,还需要将ESR作为导入的Archive导入。

https://www.java2s.com/Code/Jar/j/下载javajsonjar.htm

希望这会有所帮助!

谢谢

Sugata

一周热门 更多>