我正在尝试映射多个SalesOrderLine
,但是因为无法将数组强制转换为对象而得到错误。我是我的代码。
payload.ORDERS05.*IDOC.E1EDP01 map
{(
ns1#SalesOrderCRM: {
ns0#SalesOrderHeader: {
ns0#SalesOrderIDs: {
ns2#ID: payload.ORDERS05.IDOC.E1CUCFG.E1CUPRT.PARENT_ID
},
ns0#CustomerParty: {
ns3#CustomerPartyIDs: {
ns2#ID: payload.ORDERS05.*IDOC.E1EDP01.E1EDPA1.PARTN[$$]
},
ns3#Description: payload.ORDERS05.*IDOC.E1EDP01.E1EDPA1.PARGE[$$],
ns3#Status: payload.ORDERS05.IDOC.EDI_DC40.STATUS
}
},
ns0#SalesOrderLine: {
ns0#Description: payload.ORDERS05.*IDOC.E1EDP01.ABGRT[$$],
ns0#Quantity: payload.ORDERS05.*IDOC.E1EDP01.MENGE[$$],
ns0#LineNumberID: payload.ORDERS05.*IDOC.E1EDP01.E1EDP20.WMENG[$$],
ns0#UnitPrice: payload.ORDERS05.*IDOC.E1EDP01.PREIS[$$]
}
})
}
请为此建议解决方案。
答案 0 :(得分:2)
map
运算符返回:array
,XML output只需要对象。 {( ... )}
语法将对象数组转换为包含这些对象中包含的每个键值对(元组)的对象。
要超越您在编辑器中看到的错误,请尝试将整个表达式放在{( )}
嵌套大括号中,然后查看您之后得到的内容。
请记住,要生成XML,您必须只输出对象,并且这些对象可以具有多个具有相同键的键/值对。这对应于XML节点。在调试时,通常会将输出更改为java,并查看您正在使用的内容,如下所示:
%output application/java
答案 1 :(得分:0)
尝试为此提供密钥-有效载荷.ORDERS05。* IDOC.E .... 喜欢 key1:payload.ORDERS05。* IDOC.E .....