cancel
Showing results for 
Search instead for 
Did you mean: 

messages not in expected order in SOAP Adapter

Former Member
0 Kudos

Hi,

Can anybody experienced the messages are not in order in SOAP receiver Adapter.

Actually My scenario is ABAP Proxy- SOAP Receiver with message split. ABAP Proxy creating more than one message and In SXMB_Moni, these messages are in order as expected.

But, when the messages processed in SOAP Adapter are not the same way as in Moni.

How SOAP Adapter process the messages as the same order Sxmb_moni.

Is there any setting in Adapter i need to set. Please help to resolve the same.

Thanks,

Srinivasa

Accepted Solutions (0)

Answers (2)

Answers (2)

Former Member
0 Kudos

HI,

In Interface determination, I hope you have marked the checkbox "Maintain Order Runtime" as QOS.

Thanks

Swarup

Former Member
0 Kudos

Hi Swarup,

Yes, this is marked by default, But SOAP receiver is not getting it in order.

Thanks,

Srinivasa

Former Member
0 Kudos

Hi Srinivas,

have a look at Hai's blog /people/community.user/blog/2007/12/05/exactly-once-in-order-handling-within-xipi

blog content:

Potentially Problem in Exactly-Once In Order Handling

In the current XI/PI version are EOIO handling in ABAP and J2EE lose coupled. There is no way to synchronize the processing for the EOIO between ABAP stack and J2EE stack. In most cases is it not necessary to synchronize it, since the ABAP stack deliver pipeline service and J2EE stack use Resource Adapter to deliver Payload to external Enterprise Information System (EIS).

Nevertheless some batch oriented scenario and some rarely scenario could cause problem, in case of the delivered EOIO XI message has an impact on the content of the next XI message payload. In this case it is necessary to guarantee the End-to-End EOIO processing in the whole XI process chain.

For example, the mapping step within XI has to perform lookup on the external system to get some information, letu2019s say the package number. This retrieved package number has to be set in the XI message payload. After this XI message is delivered on the target system, the package number for the next XI message is changed. The mapping step is the only pipeline step which changes the XI Message Payload; other pipeline services only modify the XI header information. Since the EOIO can not be guarantee for the whole XI process chain, two XI message could get the same package number. After the first XI message successfully transferred to the J2EE stack, the next XI message in the EOIO queue will get processed, this could happen before the first one get really delivered from J2EE adapter to the target system.

Possible Implementation

One possible solution will be using one Adapter Module. The idea is perform Lookup within Adapter Module and change the XI XML Message Payload within the Adapter module afterwards. The mapping step within ABAP should just prepare the message without a lookup on the target system. Because the EOIO in J2EE stack guarantee the order of XI Message processing, no lookup could be performed before the predecessor is really delivered on the target system.

Drawback of the implementation

The XI Lookup API is only released for the Mapping runtime, the lookup implementation within Module have to use other API or other services. For example, if the target System is a Database, one Datasource under JDBC Connection service has to be configured and J2EE API has to be made use of it. In case of SOAP or RFC lookup will require some more efforts to perform lookup.

Suggestion

The introduced solution require implementation and configuration, it is not a standard XI solution. There could be one easy way to implement it within XI. If the EOIO queue on the ABAP stack could be coupled with Java Stack, the described problem is obsolete. This could be implemented as form of an acknowledgement, if the XI message is successfully delivered on the target system in J2EE stack, one positive acknowledge will be send back to the ABAP stack, only in this case next message can get processed. Some similar implementation is already available within XI regarding acknowledgement, if one send step required an acknowledgement within BPE, the BPE will stop processing until one permanent acknowledgement arrived. Something similar like that could be able to implemented for End-to-End EOIO handling. It will be a great help, if this can be set as an option to configure EOIO queue on ABAP stack.

Thanks,

Pooja

Former Member
0 Kudos

Hi Pooja,

Thank you very much. This gives me some idea on next steps.

The suggested solution in the Blog to use the BPM may not use in my case since i am using Message split for this scenario.

The other option left is to use lookup in mapping runtime. I have to try this.

Thanks,

Srinivasa

prateek
Active Contributor
0 Kudos

BPM may not use in my case since i am using Message split for this scenario.

How does it matter? You may use BPM in this case also. And then order maintenance could be easier to implement.

Regards,

Prateek

Former Member
0 Kudos

Hi,

I am using enhanced interface determination for message split. when i developed that i read on SAP help that i can't use BPM if i use enhance interface determination.

I have total 4 messages, 2 messages comes per this scenario after split.

My ERP triggers 2 messages and SOAP reciever is getting 4 messages but not in order.

Erp Message 1 ---> Soap message y, Soap message z

Erp Message 2 --> Soap message a, Soap message b

Now the Soap message y coming after soap message a in Soap receiver adapter. This is the problem.

I am expecting Soap message y,z then a, b

I got a reply that this can achieved using mapping look up. Probably a java program.

Please let me know if somebody has any other suggestion.

Thanks,

Srinivasa

stefan_grube
Active Contributor
0 Kudos

Do you create the ABAP proxies by your own?

Then check this online help page:

http://help.sap.com/saphelp_nw04/helpdata/en/65/40c9a4a1fa476288ac61b5fcc6bbde/frameset.htm

Regards

Stefan

Former Member
0 Kudos

Hi Stefan,

Thanks for the link. These proxies are SAP given interfaces (EA-GLTRADE). Not my own. But, I don't have problem the way messages are coming to Integration Server(sxmb_moni).

the messages are not in the same order ( like Integration Server) in SOAP receiver adapter.

My Application(webservice) is developed to accept these messages the same way as in integration server.

Is there any settings in SOAP adapter to process these messages.

Thanks,

Srinivasa