如何在卡在订购状态的 PO 中发现反序列化错误
为您方便起见,此知识库文章由机器进行翻译。SAP Ariba 不会对有关机器翻译的准确性或完整性提供任何保证。您可以通过使用语言选择器切换到英语来查找原始内容。
由 ERP 系统正确批准和处理后,采购请购单 (PR) 会生成卡在订购状态的订购单 (PO),而面向 Spend&Network 的托管网关中仅显示 PurchaseOrderExportRequest。
此问题的一个常见原因是 ERP 接收的有效负载中的意外内容。
由于面向 Spend&Network 的托管网关没有此场景的错误处理程序,因此,如果 SRT:序列化/反序列化失败 导致的唯一 方法是访问 ERP 并查看 SRT_MONI 事务。
在 ABAP 代理尝试解析 XML 并填充 ABAP 对象的反序列化流程中触发错误 SRT:序列化/反序列化失败。在此特定场景中,有效负载中的内容超出指定长度限制或使用不适合主题中字段的字符,触发错误。
为了发现 SOAP 运行时:ERP 中的序列化/反序列化失败,请执行以下步骤:
- 访问 ERP 中的事务代码 SRT_MONI。
- 在 Result Output 中选择 Detail。
- 在消息视图中选择技术视图。
- 在时戳自字段中,使用创建采购申请的日期。
- 在处理状态组字段中,选择错误。
- 向下滚动直到找到接收方信息 > 接口名称使用 BuyerPurchaseOrderCreateRequest_Async_In 并执行 (F8) 。
现在,您将看到一个屏幕,其中包含与创建买方采购订单 (PO) 的请求相关的 Web 服务实用程序:消息监控器中的所有错误消息。
要了解错误消息与哪个凭证问题相关,请执行以下步骤:
- 单击显示错误信息 SRT:序列化/反序列化失败的任何行的 错误处理 图标 (
)。 - 在屏幕左侧查找 消息正文 (
) 元素,然后单击该元素。 - 现在,您可以找到字段 ---ERPORDERID 以查看面向 Spend&Network 的托管网关中 PurchaseOrderExportRequest 文档的名称。
- 在字段 ----REQ_ID 中,您将看到与错误消息相关的采购申请编号。
为了查看有效负载中的哪个字段正在触发错误:
- 单击显示错误信息 SRT:序列化/反序列化失败的任何行的 错误处理 图标 (
)。 - 首先搜索字段 ----ChainedException 字段,您会注意到其中有 4 个。
- 主要错误消息显示在 -----Exception_Text 字段的第 4 个 ----ChainedException 中。
下面列出了与有效负载中的错误用户数据相关的最常见反序列化错误类型:
- 值长度超过允许的最大长度 [length]:"[value exceeded max length]"。
- 值 [value] 不是与 ABAP 的 XML 格式一致的有效日期。
有多种方法可以解决这些问题,最常见的方法如下所示:
- 通过在 Buying&Invoicing 中创建新版本的文档,更改订单内容并通过面向 Spend&Network 的托管网关再次发送。
- 取消订单,并通过复制已取消的订单并更改超出错误消息中提到的限制的字段来创建新订单,然后再次将其提交到面向 Spend&Network 的托管网关。
- 在面向 Spend&Network 的托管网关中创建自定义映射,以限制特定字段中的字符数,然后在面向 Spend&Network 的托管网关中重新处理文档。
为了防止任何特定字段再次发生,您可以请求定制请求。这将限制 Ariba 解决方案中的字段最大长度,防止其填写错误。有关定制请求的详细信息,请参阅 KB0537649。
SAP Integration Suite 托管网关 > 面向业务网络 SCC 的托管网关 > 面向采购商业务网络 SCC 的托管网关