Skip to Content
avatar image
Former Member

BPM Transport Acknowledgement

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

Add comment
10|10000 characters needed characters exceeded

  • Get RSS Feed

4 Answers

  • avatar image
    Former Member
    Apr 12, 2010 at 06:51 AM

    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%29ID1932444450DB21171106485548711300End?blog=/pub/wlg/2776

    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

    Add comment
    10|10000 characters needed characters exceeded

    • Former Member
      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.

  • avatar image
    Former Member
    Apr 12, 2010 at 06:25 AM

    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

    Add comment
    10|10000 characters needed characters exceeded

    • Former Member
      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.

  • avatar image
    Former Member
    Apr 12, 2010 at 06:38 AM

    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%29ID1932444450DB21171106485548711300End?blog=/pub/wlg/2776

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

    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Apr 12, 2010 at 07:50 AM

    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

    Add comment
    10|10000 characters needed characters exceeded

    • Former Member
      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.