[英]SAP table structure to proceed passing by table by XML
我在 Azure 中创建了逻辑应用程序,其中包含一些 json 数据。 我想连接到 SAP 系统并通过 RFC 将参数传递给 ABAP Function 模块。
XML中的RFC输入参数:
<?xml version="1.0" encoding="utf-8"?>
<ZFM_MGR_RFC xmlns="http://Microsoft.LobServices.Sap/2007/03/Rfc/">
<INVOICE_ID>WZ</INVOICE_ID>
<ITEMS>[
{"Amount":"28 511,40","Description":"Podstawowy podatek VAT 23%"},
{"Amount":"6 145,20","Description":"Podatek VAT 8%"}
]</ITEMS>
</ZFM_MGR_RFC>
ABAP FM 定义:
FUNCTION ZFM_MGR_RFC
IMPORTING
VALUE(INVOICE_ID) TYPE STRING OPTIONAL
VALUE(ITEMS) TYPE ZRFC_TT_INVOICE_ITEMS OPTIONAL.
{
"error": {
"code": "GeneralBadRequest",
"message": "Failed to process request. Error details: 'Under expected node type 'Text' for element '' with local name '', expected row start element with local name 'ZRFC_TT_INVOICE_ITEMS' or 'ZRFC_ST_INVOICE_ITEMS' with namespace '', or end element from parent node.'.",
"target": ""
}
}
根据这个错误,我只需要将ITEMS类型更改为STRING,它就会工作,但我不想制作后处理字符串并在abap FM中创建一个数组。
我需要在 ABAP 中创建一个可以处理这些数据的结构和表类型。 有人知道我该如何处理吗?
提前致谢。
问题是您的 ITEMS 元素是一个表,并且 XML 架构预计 XML 行元素将跟随。 但是你有 JSON 文本。
使用逻辑应用操作生成架构为您的客户 RFC 获取 XML 架构。
请参阅位于https://docs.microsoft.com/azure/logic-apps/logic-apps-using-sap-connector#xml-samples-for-rfc-requests的公共文档中的表 RFC XML 示例
尤其是:
<STFC_WRITE_TO_TCPIC xmlns="http://Microsoft.LobServices.Sap/2007/03/Rfc/">
<RESTART_QNAME>exampleQName</RESTART_QNAME>
<TCPICDAT>
<ABAPTEXT xmlns="http://Microsoft.LobServices.Sap/2007/03/Rfc/">
<LINE>exampleFieldInput1</LINE>
<ABAPTEXT xmlns="http://Microsoft.LobServices.Sap/2007/03/Rfc/">
<LINE>exampleFieldInput2</LINE>
<ABAPTEXT xmlns="http://Microsoft.LobServices.Sap/2007/03/Rfc/">
<LINE>exampleFieldInput3</LINE>
</ABAPTEXT>
</TCPICDAT>
</STFC_WRITE_TO_TCPIC>
TCPICDAT 是表元素。 ABAPTEXT 是行元素的示例。 LINE 是行内字段元素的示例。
根据您的屏幕截图,您的行类型是 ZRFC_ST_INVOICE_ITEMS 因此必须命名为行元素。 AMOUNT 和 DESCRIPTION 似乎是您的字段。
所以你的 XML 需要看起来像:
<ITEMS>
<ZRFC_ST_INVOICE_ITEMS xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">
<AMOUNT>28 511,40<AMOUNT/>
<DESCRIPTION>Podstawowy podatek VAT 23%<DESCRIPTION/>
<ZRFC_ST_INVOICE_ITEMS/>
<ZRFC_ST_INVOICE_ITEMS xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">
<AMOUNT>6 145,20<AMOUNT/>
<DESCRIPTION>Podatek VAT 8%<DESCRIPTION/>
<ZRFC_ST_INVOICE_ITEMS/>
<ITEMS/>
最后,您还可以在将负载发送到 SAP 操作之前使用 XML 验证操作,因此您可以检查您的 XML 负载是否符合特定 RFC 的 XML 架构
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.