cancel
Showing results for 
Search instead for 
Did you mean: 

Ensure complete transaction commit

Former Member
0 Kudos

Hi.

I have a scenario where one message from a legacy system can map into one or more messages.

Ex.(JMS->XI->IDOC's)

                   -> DEBMAS06 (0..unbounded)

message -> XI -> ADR3MAS02 (0..unbounded)

                   -> LINK01 (0..unbounded)

Question:

Is it possible to ensure that the complete transaction is on tRFC before commit?

Right now I have a parallel flow where the split is done in the interface determination. And I have no chance of stopping successful processed messages, if an error should occur in another flow!?!

I did the scenario as a BPM, where all transformation (mapping) is done before the individual send steps are executed. Not that it is very likely, but the possibility of one send step successfully sends the IDOC, followed by another send step that fails, could occur. This means that it is not 100% transactional handled.

What I would like, is a way to put the IDOC's on the tRFC queue, and first release them, when all messages are successfully in place!

Any ideas?

Regards...

Peter

Accepted Solutions (0)

Answers (2)

Answers (2)

Former Member
0 Kudos

HI,

You can use the send step in a block and use the mode ForEach to send one by one.

As explained by above by bhavesh you can use the IDoc Ack in BPM and Correlation on send step it may be possible.but performance wise you would have to think.

Next is commit in one single tRFC, see the below links

http://help.sap.com/saphelp_nw04/helpdata/en/22/042578488911d189490000e829fbbd/content.htm

http://help.sap.com/saphelp_nw04/helpdata/en/6f/1bd5b6a85b11d6b28500508b5d5211/frameset.htm

http://help.sap.com/saphelp_nw04/helpdata/en/18/22b800773211d396b20004ac96334b/frameset.htm

Regards

Chilla

Former Member
0 Kudos

Hi Chilla.

Thanks for you reply as well.

I still can't see a way in XI to ensure a transactional commit for the interface.

Even when using acknowledgements (in BPM), you are not able to rollback a successfully committed message, if an error should occur afterwards!

Next step was to look into the qRFC, but again. I have found no way to hold back the messages until all is committed.

Another problem is, I dont know how many IDOCs that are created, for one incomming message, and there's no bindings between them.

On top of that, the IDOC's are bundled!!!

Normally this is not an issue in XI, since the interface would be designed to work differently, or the programs in R3, would take care of any such things.

Im currently replacing interfaces from IBM Message Broker to SAP XI. And the transactional feature is a standard way to handle messages there!!!

Regards...

Peter

bhavesh_kantilal
Active Contributor
0 Kudos

Peter,

Instead of using a BPM, you can in the Interface Determination select "Maintain Interface order at runtime ". This will make sure that only after the 1st Inbound interface is processed the next is processed and so on.

But, the existing problem with the BPM, <i>but the possibility of one send step successfully sends the IDOC, followed by another send step that fails, could occur</i> still exists.

Ofocurse, this can be handled using Idoc Ack's in the BPM where you wait for the Acknowledgements before the next Idoc is posted, but this is not a feasilbe solution at all.

I am not aware of an option where you ensure that all Idoc's are processed in a single "Commit trfc", but lets hope there is one that I am not aware of as well.

Regards

Bhavesh

Former Member
0 Kudos

Hi Bhavesh.

Thanks for the reply...

I was aware of your suggestions, but as you said, none of them ensures 100% transactional commit!

If there existed a form for rollback, so already posted messages could be withdrawn, I would be almost as happy

Regards...

Peter