Technology Blogs by Members
Explore a vibrant mix of technical expertise, industry insights, and tech buzz in member blogs covering SAP products, technology, and events. Get in the mix!
cancel
Showing results for 
Search instead for 
Did you mean: 
juan_vasquez2
Active Participant
0 Kudos
When you use Rest receiver, it's common to use array structures.

In some cases the array has only one position. In this case the transformation has an issue. The destination structure don't recognize the array.

The trivial solution for this is to add dummy element to the array. you need to design this with the receiver syste team. They must to know the last  position is dummy, you can use aspecial value, like id=-1, or position = 999. Values that are not valid from business perspective.

Let me show a little example

You can see element PositionArray, the last iteration has a position 9999

You can see discounts with value= 9999

 

Then after transformation you can see:

"PositionArray": [  --> open array

"Discounts": [ --> Open array

 
<?xml version="1.0" encoding="UTF-8"?>
<ns2:Structure xmlns:ns2="urn:acme.com:externalservices">
<Invoice>226437</Invoice>
<Client>1025738</Client>
<PositionArray>
<Position>4</Position>
<Discounts>
<Descuento>BC</Descuento>
<Value>2926000.0</Value>
</Discounts>
<Discounts>
<Descuento>DC</Descuento>
<Value>-380380.0</Value>
</Discounts>
<Discounts>
<Descuento>ST</Descuento>
<Value>483667.0</Value>
</Discounts>
<Discounts>
<Descuento>W2</Descuento>
<Value>63641.0</Value>
</Discounts>
<Discounts>
<Descuento>WT</Descuento>
<Value>10182.0</Value>
</Discounts>
<Discounts>
<Descuento>9999</Descuento>
<Value>9999</Value>
</Discounts>
</PositionArray>
<PositionArray>
<Position>9999</Position>
<Discounts>
<Descuento>ZCBC</Descuento>
<Value>9999</Value>
</Discounts>
<Discounts>
<Descuento>ZCBC</Descuento>
<Value>9999</Value>
</Discounts>
</PositionArray>
</ns2:FacturaDTO>

 
{
"ns2:Structure": {
"-xmlns:ns2": "urn:acme.com:externalservices",
"Invoice": "226437",
"Client": "1025738",
"PositionArray": [
{
"Position": "4",
"Discounts": [
{
"Descuento": "BC",
"Value": "2926000.0"
},
{
"Descuento": "DC",
"Value": "-380380.0"
},
{
"Descuento": "ST",
"Value": "483667.0"
},
{
"Descuento": "W2",
"Value": "63641.0"
},
{
"Descuento": "WT",
"Value": "10182.0"
},
{
"Descuento": "9999",
"Value": "9999"
}
]
},
{
"Position": "9999",
"Discounts": [
{
"Descuento": "ZCBC",
"Value": "9999"
},
{
"Descuento": "ZCBC",
"Value": "9999"
}
]
}
]
}
}

 
1 Comment
former_member585940
Participant
0 Kudos
Hi Juan,

 

SAP already updated REST adapter sometime back to handle this problem. With the enhanced xml/json conversion, array fields can be declared directly in channel. More details can be found here: https://blogs.sap.com/2016/01/13/rest-adapter-in-sap-pipo-enhanced-xmljson-conversion/

 

Regards,

Varinder
Labels in this area