cancel
Showing results for 
Search instead for 
Did you mean: 

How to configure JDBC-Sender Channel for multiple-IDocs by changing Signature?

Former Member
0 Kudos

Hi PI-Gurus,

I searched for a long time, but did not find relevant threads.

This is my scenario: Oracle Database ->JDBC Sender -> PI 7.11 -> IDoc -> SAP


In the Message-Mapping I changed the signature to get the Occurrence of IDoc to 1..unbounded.
The message-mapping is changed to multi-levels mapping like:
Messages ……. Messages
Message1 …………….. Message1
  MT_ABC …………………….. IDoc XYZ
The mapping works well.

But now, I have problem in configuring JDBC-Sender Channel, especially in Document Name.
When I gave the MT_ABC as the document name in the tab Processing , I get error:
Runtime exception occurred during application mapping com/sap/xi/tf/_MM_MT_ABC_2_IDoc_XYZ;

com.sap.aii.mappingtool.tf7.IllegalInstanceException: Cannot create target element

/ns0:Messages. Values missing in queue context. Target XSD require~

Could anyone help me?

Thanks and regards

Rene

Accepted Solutions (1)

Accepted Solutions (1)

udo_martens
Active Contributor
0 Kudos

Hi Rene,

the Messages element and it s subnode are mandatory with 1-1 occurence, you dont need to map them. If you do you risc that error. Delete the mapping for those nodes. And test your mapping in IB Respository. Check if your source msg appears with green icons (validated to xsd).

/Udo

Answers (3)

Answers (3)

rajasekhar_reddy14
Active Contributor
0 Kudos

Hi Rene,

Change IDoc segment occurance to 1 to unbounded then keep JDBC data type root elemen "row" occurence as 1 to unbounded.

You no need to do any special configurtaion write Select and update query in JDBC sender channel.

Suppose if you have multiple records in JDBC tabel then Adapters pulls all records and row segment will be repeated,now you have to build mapping logic to generate multiple IDoc when you find more records in DB table.

Thank you

ambrish_mishra
Active Contributor
0 Kudos

Hi Rene,

When you test in mapping tool, you have to include the test message starting with root node(say MT_ABC) after the Message tags.

for example:

It should look something like

<?xml version="1.0" encoding="UTF-8"?>

<ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">

   <ns0:Message1>

<MT_ABC>

<your sub nodes/data here>

</MT_ABC>

</ns0:Message1>

</ns0:Messages>

However, for IDocs, I believe you need to use external definition since you want IDocs as multiple and not the root node above that.

I have not tried IDoc at target without an external definition and changing the signature to 0..unbounded but you can try by just mapping Message node to a constant and creating multiple nodes above IDoc node.

For example

Hope I was able to understand your query and it helps!

Ambrish

Former Member
0 Kudos

Interesting! nobody answer me?

Nobody has encounter the same case?

So I must abandon this signature change and come back to externe difination solution? !