cancel
Showing results for 
Search instead for 
Did you mean: 

Suggestion required for with or without BPM

Former Member
0 Kudos

I have a requirement IDOC-XI-SOAP.

I am using multimapping 1:N one idoc gets spilt into say three wsdl, A B and C.

My first requirement is if A fails then B and C should not be sent.

If I use only EOIO without BPM then I will need to identify B and C for the corresponding A in the queue and remove it.

That looks tedious as sometimes B and C may not be there for A and is there any way to identify the related messages?

This can be achieved through BPM I believe.

My second requirement is IDOC2 should not be processed before IDOC1.

So If I used BPM will this be guaranteed? is BPM EOIO. (Even after transformation step?) If not then can it be configured?

Thanks in advance.

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos
My first requirement is if A fails then B and C should not be sent.
If I use only EOIO without BPM then I will need to identify B and C for the corresponding A in the queue and remove it.
That looks tedious as sometimes B and C may not be there for A and is there any way to identify the related messages?
This can be achieved through BPM I believe.

You can generate B and C only if A is generated. This can be done by using If condition at the time of splitting the message in to 3 messages.

My second requirement is IDOC2 should not be processed before IDOC1.
So If I used BPM will this be guaranteed? is BPM EOIO. (Even after transformation step?) If not then can it be configured?

Please elobrate this query for better solution.

Regards

Raj

Former Member
0 Kudos

In the first requirement, If sending of A failed or the response from A is with error then B and C should not be sent.

In the second requirement of the same process...the Outbout Idocs need to be processed in EOIO. Is that ensured in BPM?

IS BPM queue EOIO or is there chance that incoming idocs to BPM gets processed parallely, i.e idoc1 and idoc2 processed parallely ?

Former Member
0 Kudos

You need to go for BPM only ... where you can check the response from A for success and then only process B & C.

You can maintain EOIO in BPM.

http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/e0ff0006-3901-2a10-9e97-a71b423da...

Regards

Raj

Answers (1)

Answers (1)

Former Member
0 Kudos

Hi,

Since you need to send only if A is successfully received at the receiver, you would need to go for a BPM in this case.

In the BPM, use the application acknowledgement step to determine the receipt status of A. If successful, you then send B and C.

Your second requirement is not clear, but yes in a BPM you can ensure that Idoc1 is always processed before Idoc2.

Regards

Former Member
0 Kudos

As Raj Sharma suggests, do we need to set BPM to be EOIO explicitly ? We are using PI 7.1

Explaining more about my second requirement.

If there are two IDOCs received by BPM (Process engine) say Idoc1 and Idoc2.

Chances are there that two parallel instance of my BPM are created for Idoc1 and Idoc2.

In which case Idoc2 can get sent before Idoc1...I do not want this to happen.

I want Idoc1 to be sent before idoc2.

I hope I made my requirement clear this time.

Shabarish_Nair
Active Contributor
0 Kudos

your requirement is best suited to be designed using a BPM since you will get better control on the error handling and can thus take further actions.

My recommendation is to go for a BPM here.

baskar_gopalakrishnan2
Active Contributor
0 Kudos

For your both requirement CCBPM is the better choice. Also for your second requirement you can let idoc1 to go out first then idoc 2 using BPM.

Former Member
0 Kudos

Hi all,

Just bringing this topic up again as I have stuck at one place. and found not much help on SDN.

I have designed this requirement using BPM.

That is IDOC-BPM-SOAP.

Within BPM I make a synchronous call to Webservice. if there is a fault exception thrown the BPM workflow stops at that point and no further process steps are carried out. This is working fine as per the requirement.

But this does not get blocked up in the BPM queue. I want to stop the next IDOC from processing before handling the prviously errored IDOC scenario.

Now I briefly understand that since BPM is doing a sync call these are not placed in the queue. Is there a way I can handle this so that these interfaces are placed in the BPM queue (which starts with XBQO$PE_WS.....).

I have tried with exception branch, even this stops the BPM workflow but does not block the queue, or the workflow gets processed successfully.

Is there anyway I can block the queue if the BPM synch call fails?

Former Member
0 Kudos

Hi,

I have tried with exception branch, even this stops the BPM workflow but does not block the queue, or the workflow gets processed successfully.

hopefully we have such a behaviour: interest to catch an exception is to avoid a dump and so a locked queue (!).

if you, you want to have the opposite: a lock queue based on the fact you did not received a synch response.... strange but why not..., an easy way (not the best / not beautiful but works...) it's to use a tiny transformation (mapping) called "MM_SetDump" and inside it with a UdF, you do a divide by zero (for instance). So you will have dump and so a locked queue...

regards

mickael

Former Member
0 Kudos

Hi, Thanks for your reply, yest that doesnot seem to be the right approach.

Anyways I tried to see if the queue gets blocked, but it does not.

The exception handler is called, the transformation step is processed with error in the workflow, but the message does not get blocked in the queue.

Is there any configuration required?

stefan_grube
Active Contributor
0 Kudos

Inside your BPM you could request an acknowlegde for A.

If the acknowlegde is "success", start processing B and C.

Otherwise do some error handling.

Former Member
0 Kudos

Hi,

In order to configure the QoS EOIO in an outbound Idoc you can go through this blog:

I hope it wil be usefull.

Ciao,

Giovanni.

Former Member
0 Kudos

Stefan, I am using synchronous call and your suggestion works on Async call which I had tried earlier, but dint work.

But now I got it working...along with that I need to make the aysnc call EOIO by adding the queue name in the send step.

Now I can see the message failed and stopping the subsequent messages.

This is not a complete solution though. As the message gets processed at IE level and fails at AE level and stops the queue.

I am trying to work out to see If I can make the whole workflow EOIO.

@Giovanni , I have got the IDOC coming through EOIO but my query was related to BPM.

stefan_grube
Active Contributor
0 Kudos

when A is sync, then process it normally.

when it succeeds: start B and request ack

when successful: start C