cancel
Showing results for 
Search instead for 
Did you mean: 

Message split to 2 differenet IDOCs

Former Member
0 Kudos

Hi,

I'm configuring scenario where I split incoming XML message, each row(JDBC sender), to IDOCs. Depending on some tags, it can be IDOC1 or IDOC2. Occurencess are:

In_Msg 1

IDOC1 0..unbounded

IDOC2 0..unbounded

I have done all mappings and configurations, but I'm getting only one IDOC1 and IDOC2, the last messege,

obviosly, I'm loosing some data after transformation. I'm using BPM because of XI is on SPS11.

In BPM i have:

1. receive step

2. transformation

3. fork

3.a receiver determination and send step for IDOC1

4.b receiver determination and send step for IDOC2.

how to solve this problem?

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hi,

Can you tell me in transformation how do you specify based on the tags that the message should go to IDOC 1 or IDOC 2.

Thanks,

Tiny

Former Member
0 Kudos

after transformation message looks like this:

<Messages>

<Message1>

<IDOC1>

.....-

</IDOC1>

</Message1>

<Message2>

<IDOC2>

....

</IDOC2>

</Message2>

</Messages>

there can be none or more IDOC1 messages and also IDOC2

udo_martens
Active Contributor
0 Kudos

Hi,

that split does not work in case of native (IDoc, ABAP proxy, http) receiver adapters, you need the J2EE AE therefore.

Regards,

Udo

Former Member
0 Kudos

then briefly how would you do this scenario, if you have JDBC

sender and, depending on some tags you must create either IDOC1 or

IDOC2 type and send it to same system?

udo_martens
Active Contributor
0 Kudos

Hi,

- create a BPM where you receive your JDBC message in JDBC container

- a fork with 2 success branches

- each branch has a mapping for the certain IDoc, no Messages root tag, just the IDoc root element

- and a send step for each IDoc

- depending on your requirements exception handling

If you need to create either IDoc1 or IDoc2 BPM is not required, you could do that by condition in Interface Determination.

Regards,

Udo

Former Member
0 Kudos

Scenario with BPM, you mean to select only one row from DB or many? Currently I'm selecting usually more than one row(which means messages for IDOC1 and messages for IDOC2).

Scenario without BPM: scenario with BPM could be time and resource consuming, so you think also to select one by one row or how? Because I'm selecting more, and I got message that multimapping is only possible with BPM unde SPS11?

br

mario

Former Member
0 Kudos

Ok, I'have figured out both solutions and tried them out. Many, many thanks for that. I have still one question. For example, if I got 100 rows it can happen that all 100 are IDOC1 type and 0 is IDOC2 type.

In this case I get an error. How to avoid this problem?

udo_martens
Active Contributor
0 Kudos

Hi,

put a switch before the send where you ask by XPath for the no of messages in the container (rows in the container):

count(//myRow) != 0

Regards,

Udo

Answers (1)

Answers (1)

sunil_singh13
Active Contributor
0 Kudos

Hi mslopar,

You have context problem in your mapping. Transfer the context to the root level.

And the Message that you are getting is first Message not the last.

Thanks

Sunil Singh