MapExampleTwoTablesToNestedTables in SAP CPI, udf logic for any complext mapping
import com.sap.it.api.mapping.*;
def void getPhonesById(String[] a, String[] b, String[] c, Output result, MappingContext context) {
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < b.length; j++) {
if (a[i] == b[j]) {
result.addValue(c[j])
}
}
result.addContextChange()
}
}
<?xml version="1.0" encoding="UTF-8"?>
<MapExampleFlatStructureMessage>
<Persons>
<Person>
<Id>1</Id>
<Name>John Doe</Name>
</Person>
<Person>
<Id>2</Id>
<Name>Jane Smith</Name>
</Person>
</Persons>
<Telephones>
<Telephone>
<PersonId>1</PersonId>
<TelephoneNumber>555-1234</TelephoneNumber>
</Telephone>
<Telephone>
<PersonId>2</PersonId>
<TelephoneNumber>555-5678</TelephoneNumber>
</Telephone>
<Telephone>
<PersonId>2</PersonId>
<TelephoneNumber>555-567821</TelephoneNumber>
</Telephone>
<Telephone>
<PersonId>1</PersonId>
<TelephoneNumber>555-12341</TelephoneNumber>
</Telephone>
<Telephone>
<PersonId>2</PersonId>
<TelephoneNumber>555-56781</TelephoneNumber>
</Telephone>
<Telephone>
<PersonId>2</PersonId>
<TelephoneNumber>555-56782</TelephoneNumber>
</Telephone>
</Telephones>
</MapExampleFlatStructureMessage>