点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,大家好,
我正在尝试实现PI REST案例,但仍然没有出路,这是如此困难,我需要您的帮助。
我制作一个示例案例来解释我想要做什么。
场景类似于:
- 1.System TSTA正在通过PI向SAP发送消息
- 2。"有效载荷1"类似于:{"名称":"尼尔","年龄":" 18"}
- 3。在PI中运行PI Message Mapping之后,我想要得到的是" Payload 2",
- 4。最后,在SAP中,需要以下数据,在JSON_STRING中,我恰好需要从TSTA发送的 ORIGINAL json字符串。 不需要任何转换。
现在我有问题:
- 1。我不知道如何配置REST发送者通道。 我的意思是,我知道如何在常规情况下使用REST CC,但这是一种。 我尝试检查或不检查"转换为XML",都失败了。
-
- 2。如果未选中"转换为XML",则我不知道如何构建ESR,尤其是在消息映射中。 我知道目标消息类型是什么,但不知道源消息类型应该是什么样。
- 这就是我要面对的问题,希望我能说清楚。 对我来说,最难的部分是在消息映射中获取原始的JSON字符串。
- 并且确实需要你们的提示和建议。
- 谢谢。
(38.9 kB)
我所做的和我得到的错误。<2019/9/9更新>
1.Channel:
要使输入的消息保持原始,请不要进行任何转换。
2。操作映射
使用Java映射类进行映射工作。
在测试案例中,我可以获取源JSON有效负载并将其放入" json_string"。
SI就是这样,"消息类型"现在用作"请求",也许我应该是"外部消息"。
3。源数据的消息类型
没有归档消息类型
4。目标数据的消息类型
消息类型中只有1个字段。
5。在POSTMAN中测试
错误:
赶上异常调用消息传递系统:无法解析XML消息有效负载以提取用于确定接收者的操作org.xml.sax.SAXParseException; lineNumber:1; columnNumber:1; 序言中不允许包含内容。
6.In PI日志:
我看到当JSON有效负载即将进入消息映射时会发生错误。
我猜错误是由错误的消息类型引起的。
嗨,拉维,我已经尝试过像你说的那样。
1。 如果我在REST CC中使用"转换为XML",那么我在源消息中获得了XML有效负载,但始终无法获得预期的" json_string"。(我已在最后评论中更新了原因)
2。 如果不使用"转换为XML",我希望json payoad将输入MM作为源消息。 但是,在进入MM时会弹出错误:正在调用消息传递系统的捕获异常:无法解析XML消息有效负载以提取用于确定接收者的操作org.xml.sax.SAXParseException; lineNumber:1; columnNumber:1; 序言中不允许包含内容。
陈Hi,
问候!
我有类似的要求。 你能帮我解决问题吗
预先感谢
嗨,阿努普,谢谢您的帮助。
是的,我实际上是ABAPer,并且是PI的大三学生。
我无法编写任何Java代码,因此我将解决方案更改为:
1.在OM中获取JSON有效负载
2。 将整个JSON有效负载放入目标消息类型中的" json_string"。
3。 在SAP ABAP中完成其余工作(字段映射)
这是我做过的事情,但我遇到了错误:
https://answers.sap.com/ answer/12859582/view.html
嗨晓东,
您的第一种方法还可以,对于这种情况,使用REST Adapter从JSON到XML的基础转换比在Java映射中更好。
您可以编写一个简单的UDF并将MT作为XML传递给它。 然后只需将XML转换为JSON。 如果您需要UDF代码,请告诉我,我会为您编写。 甚至我也将这种方法用于此类开发之一。 :)
此致
Anoop Rai
嗨Anoop,
我做了同样的事情,但是在从XML转换为JSON时不保持json字段顺序。 您能告诉我如何维持订单吗?
在下面的代码中将XML转换为json:
JSONObject obj = XML.toJSONObject(xml_data);
String json = obj.toString(4);
一周热门 更多>