cancel
Showing results for 
Search instead for 
Did you mean: 

BPM Transport Acknowledgement

former_member189441
Active Participant
0 Kudos

Hi

I am doing the scenario JDBC-IDOC-JDBC.

retrieve the data from JDBC and generate IDOC for each record and send to ECC.

and then i need to update the status in JDBC for those records that are successfully transfered to ECC..

if some records(each record in JDBC = one IDOC) i mean IDOC got failed to reach ECC that particular record we should not update in JDBC.

For this i am using Transport Acknowledgement option in async send step and send the IDOC to ECC.after succefull transfer of IDOC to ECC..,my further steps need to execute( here JDBC Update mapping and send steps)

question:

if send step receives the +ve ACK then the further steps will execute normally?

In BPM if the adapter sends a negative ACK (-ve) can we stop BPM and cancel that process using exception handler??(with out deadline branch)i no need to wait for any time period.

we have an option "system error" in send step..will it trigger for negative ack?? if not for what purpose we can use that??

Thanks

Accepted Solutions (0)

Answers (4)

Answers (4)

former_member189441
Active Participant
0 Kudos

Hi Abhishek,

Thanks for the reply..now i got the picutre..But one strange doubt is..


Receive---Transformation-1(1--n)--Block(start)--Tranformation-2(1--1IDOC for each msg)--Async send-1(tranport ACK)--Trasformation-3(update)--Async send-2(for update)--Block (close)

If i configure same scenario with out using transport ack then also my send step will through some 401 error(because the communication channel is not able to send msg to ECC) then i think it Will not execute next steps...am i right or wrong..??

if yes...what's the purpose of using the Transport ack.??

and when we use send step(here in the diagram send-1) in Block , parFOrEach (parallel execution)..if 50 values are executing the block parallelly..terminate process as u told will terminate all the 50 transactions or only that particuar instance and remaining will execute normally??

Thanks

former_member200962
Active Contributor
0 Kudos
then i think it Will not execute next steps

It depends on what Error handling you use in the BPM....suppose you wrap your Send step in a Block with Exception Branch and either leave the Exception Branch Empty or include a Throw Alert step then the further steps will be executed in the BPM.

If you include Cancel Process Control Step then the BPM will stop when it gets an exception.

what's the purpose of using the Transport ack.??

Transport Ack is basically used in those scenarios where you want to confirm that the message has been delivered by SAP XI/ PI succuessfully to the end system....not to confirm whether the message has been processed by the end system.

Mostly used with FILE (not compulsory though) and in similar scenarios where the end system/ protocol does not support ACK.

terminate process as u told will terminate all the 50 transactions or only that particuar instance and remaining will execute normally??

Terminate process will be executed when the BPM reports any error and is catched by the the Exception Branch having the relevant Control Step....this will cause the BPM to stop there itself.

No further steps will be executed.

former_member189441
Active Participant
0 Kudos

Hi Abhishek,

Here i am not sending data to JDBC..I am sending IDOC to ECC..if it reaches successfully to ECC then i need to do some more steps to update.

1) can we do request Transport ack for IDOC adapter or not? in the below blog they have given that they are dealing with transport ACK for IDOC...Plz confirm the same?

http://www.sdn.sap.com/irj/scn/weblogs;jsessionid=%28J2EE3417500%29ID1932444450DB2117110648554871130...

2)in real time IDOC adapter (Communication channel) returns negative transport ACK if it unable to send the IDOC to ECC (may be because of some server down or password change) then can we raise the exception from send step using system error to cancel the process ( means it should not execute next 2 more steps os BPM )

3)For this as i know we no need to any ALEAUD settings in ECC as the ACK is sending by the adapter (but bot from receiver system)..am i right??

thanks

Edited by: murali krishna on Apr 12, 2010 8:52 AM

Former Member
0 Kudos

Hi Murali,

Check the following link for exception handling in ccBPM:

http://help.sap.com/saphelp_nwpi711/helpdata/en/33/4a773f12f14a18e10000000a114084/content.htm

I had tried with the file adapter but unfortunately I could not get the exceptions it throws back to my ccBPM - had to define deadline step for handling i.e. when the target directory did not exist. I am not able to re-try the whole scenario right now but should be checked per the adapter type.

As for IDOC adapter, it supports both transport and ack. acknowledgements, and since this is an adapter that works on IE instead of AE, it might work out for you to get the exception back to the ccBPM and define a handler for it. And if you use transport ack, yes, you wont need to configure aleaud.

Regards,

Gokhan

former_member200962
Active Contributor
0 Kudos
Here i am not sending data to JDBC

Yes, i know....my reply was not for you

then can we raise the exception from send step using system error to cancel the process

You will have to wrap the send step in a block which has deadline branch....this deadline branch will have a Control Step (throw Exception).....the same same block will have an Exception Branch....the Control step of the Deadline Branch will throw an exception if the Send does not receive a +ve ACK within the time-limit....this exception will be catched by the Exception Branch...in the Exception Branch include the Control Step (Cancel Process)....so that BPM does not execute any further.

3)For this as i know we no need to any ALEAUD settings in ECC as the ACK is sending by the adapter

Yes, you are right....no need of any ALEAUD settings.

former_member189441
Active Participant
0 Kudos

Hi Gokhan

As per the below blog..i think it is possible dealing with IDOC acknowledgements using BPM.They are dealing with Trasport acknowledments only..

http://www.sdn.sap.com/irj/scn/weblogs;jsessionid=%28J2EE3417500%29ID1932444450DB2117110648554871130...

Edited by: murali krishna on Apr 12, 2010 8:38 AM

Former Member
0 Kudos

Hello,

When you define a send step with `Transport Acknowledgement` in a BPM, the ccBPM engine will return that acknowledgement when it posts the message to the integration engine pipeline successfully, not to your receiver ECC system. For example, if you request for transport acknowledgement to a JDBC send step in your BPM, your BPM will get the acknowledgement when at runtime the ccBPM engine delivers the message to the inbound queue of integration engine which will then send this to the adapter engine, which will write to your database.

So in your case, you should be working with application acknowledgements. Request app. ack. in your ccBPM, and configure your IDOC settings in your ECC to send back IDOC acknowledgements (aleaud) back to PI and your ccBPM, so you can trigger your update interface after you receive the acknowledgement.

Also, bear in mind that you can only request transport acknowledgements with the adapters running on your adapter engine, so no app acks would be supported in that case.

Hope this helps.

Regards,

Gokhan

Former Member
0 Kudos

Also, the exception at the send step will only be triggered when ccBPM cannot post the message to the IE pipeline, as I have explained. Yes, your send step will wait until you get an acknowledgement if you choose app.ack so you won't need a deadline step nor an exception handler. If you had to use a transport ack, the deadline step could come to your help though depending on your design.

Regards,

Gokhan

former_member200962
Active Contributor
0 Kudos
For example, if you request for transport acknowledgement to a JDBC send step in your BPM, your BPM will get the 
acknowledgement when at runtime the ccBPM engine delivers the message to the inbound queue of integration engine which will 
then send this to the adapter engine, which will write to your database.

Transport ACK gets back the response when the AE tries to sedn the message to the receiver using the communication channel.

To catch any error while transferring the message from BPE to AE we dont need any Transport ACK settings....if any error while transferring to AE the BPM will catch the error any way....if any doubt do a BPM....do not create (or stop ) the receiver channel and then try to test without using Transport Ack setting....you will get an error in the BPM...just have an exception branch and you will be able to catch the exception.

Regards,

Abhishek.