cancel
Showing results for 
Search instead for 
Did you mean: 

MultiMapping Problem.

Former Member
0 Kudos

Hi,

The Design of my BPM is......

Fork (necessary branches= 1)

====

Idoc0>Recieve0->Transformation0

Idoc1>Recieve1>Transformation1

After Fork

======

Wait Step (1Min)

Transformation step2 (MultiMapping)

Send Step0

Send Step1

I have to collect the two Abstract Interfaces from the Transformation Step 0 & 1 and feed it to Transformation2.

Now I have two Cases.

=================

1. If Idoc0 comes the process should start and runs thru all the transformations and works fine.

and

2.If Idoc0 & Idoc1 comes both these idocs are processed seperately by the fork (as the necessary branches =1) and The Transformation2 recieves these messages one by one not together even though i have put a wait step....so ultimately my message mapping fails when both these idocs are generated. it only works when only one idoc is generated.

is there any way i could make this Multimapping work in both Cases.

1.If only one Idoc is generated.

2.if both idocs are generated.

Your inputs on this would be very helpfull.

Accepted Solutions (0)

Answers (7)

Answers (7)

Former Member
0 Kudos

Hi,

I am unable to use the Switch Step in my BPM at the begining of my Process.

It says "No reciever to Start Process".

My current Design is as follows....

Start

===

Switch

Branch1

Fork>2 recieve steps>Two transformation step

Branch2>Recieve Step>Transformaton Step

Branch 3-->Dummy.

Outside switch

===========

Transformation step (MultiMapping n:m)

Send step1

Send Step2

I guess this is notthe right design please help me wherever i am wrong.Thank you

Former Member
0 Kudos

Hi,

YOu cannot start BPM with switch.

To start a bpm you need Receive Step .Please check the properties of Receive Step there will be check box start process.

Thanks,

Tuhin

Former Member
0 Kudos

Hi sudheer,

I am a bit confused with my Switch step.here is how i am trying to use it please correct me if i am wrong.

Start

====

Fork

Recieve0-->transformation0

Recieve1--->transformation1

Outside Fork

==========

Wait Step

Switch Step (no Of Branches 3)

transformation2---Send0 (If Case 1)

transformation3---Send1 (if Case 2)

else

Throw Exception

Please let me know if this design has any errors, your suggestion is awaited. Thank you

Former Member
0 Kudos

Hi

First you should use switch step. Then in case where you are having two inputs you have to use FORK step with necessary branches two. A Wait step is not at all needed for collecting together two messages.

A wait step will just provide delay to you.

Thanks and Regards,

Vineetha.

Former Member
0 Kudos

Ya Sudheer.

As u know i have two conditions

1. I can recieve IDOC0 & IDOC1

2. Ican recieve Only IDOC0

how would i mention this condition in a switch step, to branch depending on the condition met.

Kindly let me know

Former Member
0 Kudos

Hi,

In the first branch

some element of idoc0(always exists) ---> some constant

some other element of idoc0 (always exists) and some element of idoc1(always exists) ---> some constant.

This will ensure that only one branch is executed at any time.

Regards,

Sudheer.

Former Member
0 Kudos

Hey Thanks for the replies.

I have not used a Switch step till now Could you tell me how should i proceed,

However i see that in the condition Editor of the switch i can mention

IDOC0 EX

AND

IDOC1 EX

Then Go to Branch 1

else

IDOC0 EX

Then go to branch 2.

So now if IDOC0 & IDOC2 are recieved both the conditions are satisfied and both the mappings are executed which is not desirable....is there any other way i can mention the condition.

Former Member
0 Kudos

Hi,

I didnt get what do you mean by both the conditions are satisfied....Please be clear.

Refer this link fo r how to work with switch step.

http://help.sap.com/saphelp_nw2004s/helpdata/en/6a/db283fd0ca8443e10000000a114084/content.htm

Regards,

Sudheer.

Former Member
0 Kudos

So do u think The Transformation will wait untill it recieves Both Idocs and then process, and when only one idoc is recieved it will wait for say 'n' sec and perform the transformation with only one Idoc...!!! Is this how it should work...?

Former Member
0 Kudos

A Fork with necessary branches 1, then a WAIT step for 'n' seconds would actually receive 1 idoc and then wait for 'n' seconds and then execute the Transformation with either one message or both messages.

This can be achieved ONLY IF the cardinality of messages in Message Mapping of the transformation step is set to 0..1 and not 1..1

Former Member
0 Kudos

Hi,

Your requirement cannot be achieved with fork alone because fork will wait until the end condition is met. This can be achieved with "switch". In one branch you specify only one message and in the other branch you specify bothe messages. So your BPM will be executed irrrespective of one idoc or two idocs.

Regards,

Sudheer.

Former Member
0 Kudos

Hi

You can have three branches in FORK and make no. of necessary branches as two. In the case where there is only one IDoc, give some dummy message to the third branch and then also the Fork step will ends and continue with further steps.

Thanks and Regards,

Vineetha

Former Member
0 Kudos

hey thanks for the reply again,

However the condition is

If two idocs are recieved the Multimap it,

Else

If Only only Idoc0 is recieved still map it.....how is it possible is there any other way to do it... please help.

Former Member
0 Kudos

In the corresponding Message Mapping of the transformation Step, change the occurance of both the messages in the messages Tab to 0..1 from 1..1

Former Member
0 Kudos

Hi

The wait step is after fork step so it wont come together as it is applicable to messages coming from both transformation0 and transformation1. Make the number of necessary branches as 2 then only both messages come together.

Or if you know the time difference between two Idocs then you can use wait step for the first step alone.

Thanks and Regards,

Vineetha