要在PI MM中获取ORIGINAL json字符串#PI REST适配器#

2020-08-22 07:33发布

         点击此处--->   EasySAP.com群内免费提供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)

         点击此处--->   EasySAP.com群内免费提供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)
付费偷看设置
发送
12条回答
me_for_i
1楼-- · 2020-08-22 08:22

我所做的和我得到的错误。<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有效负载即将进入消息映射时会发生错误。

我猜错误是由错误的消息类型引起的。

大简至美
2楼-- · 2020-08-22 08:03

嗨,拉维,我已经尝试过像你说的那样。

1。 如果我在REST CC中使用"转换为XML",那么我在源消息中获得了XML有效负载,但始终无法获得预期的" json_string"。(我已在最后评论中更新了原因)

2。 如果不使用"转换为XML",我希望json payoad将输入MM作为源消息。 但是,在进入MM时会弹出错误:正在调用消息传递系统的捕获异常:无法解析XML消息有效负载以提取用于确定接收者的操作org.xml.sax.SAXParseException; lineNumber:1; columnNumber:1; 序言中不允许包含内容。

蓋茨
3楼-- · 2020-08-22 08:19

陈Hi,

问候!

我有类似的要求。 你能帮我解决问题吗

预先感谢

太Q了
4楼-- · 2020-08-22 08:21

嗨,阿努普,谢谢您的帮助。

是的,我实际上是ABAPer,并且是PI的大三学生。

我无法编写任何Java代码,因此我将解决方案更改为:

1.在OM中获取JSON有效负载

2。 将整个JSON有效负载放入目标消息类型中的" json_string"。

3。 在SAP ABAP中完成其余工作(字段映射)

这是我做过的事情,但我遇到了错误:

https://answers.sap.com/ answer/12859582/view.html

CPLASF-自律
5楼-- · 2020-08-22 08:08

嗨晓东,

您的第一种方法还可以,对于这种情况,使用REST Adapter从JSON到XML的基础转换比在Java映射中更好。

您可以编写一个简单的UDF并将MT作为XML传递给它。 然后只需将XML转换为JSON。 如果您需要UDF代码,请告诉我,我会为您编写。 甚至我也将这种方法用于此类开发之一。 :)

此致

Anoop Rai

哎,真难
6楼-- · 2020-08-22 08:25

嗨Anoop,

我做了同样的事情,但是在从XML转换为JSON时不保持json字段顺序。 您能告诉我如何维持订单吗?

在下面的代码中将XML转换为json:

JSONObject obj = XML.toJSONObject(xml_data);

String json = obj.toString(4);

一周热门 更多>