cancel
Showing results for 
Search instead for 
Did you mean: 

How to send Acknowledgement message from SAP PI (7.4 single stack) instead of ECC

Former Member
0 Kudos

Hello All,

I am working on a SAOP to IDOC scenario using SAP PI. The requirement says that the sender system needs an acknowledgment from SAP PI itself and not from ECC.

To elaborate, the sender system wants a response message generating from SAP PI stating whether PI has received the message or not.

whereas, after sending the response back to the sender system(SOAP), SAP PI should process the IDOC further.

Request you all to kindly help me with a solution to achieve the above requirement.

Thanks in advance.

Regards,

Somesh Mohan

Accepted Solutions (1)

Accepted Solutions (1)

manoj_khavatkopp
Active Contributor

Anil,

You can build Sync-Async bridge using modules. But IDOC needs to be posted first then you can send the ack back to SOAP from PI with whatever message you want. But your requirement is to send Ack first and then post IDOC, however, this is also possible but it doesn't make sense.

Here is an overview of the design.

SOAP (with RR + Wait response bean)---->Split this into 2 interface using 2 inbound interface (One for SOAP and another for IDOC) --->IDOC to post IDOC with required mapping--->SOAP interface with required response to be sent ( This respective receiver channel should have notifiy bean). Don't forget to mark "Maintain order at Runtime"

Br,

Manoj

Former Member
0 Kudos

Hello Manoj,

Thanks for your response.

We have a specific wsdl with request and response message. Client wants the response message to be sent back from PI itself against the same request call.

I created one simple async scenario SOAP--PI--IDOC --ECC. Now for the response part, i create two async service interfaces(SI) in ESR where in for outbound SI, i have provided the request part of the wsdl and in the inbound SI, i have provided response part of wsdl and the related mapping.

In ICo, for the type of receiver determination, i have selected ''extended'' and added communication component for ECC and sender system both and their respective channels.

Kindly help.

Thanks & Regards,

Somesh

manoj_khavatkopp
Active Contributor
0 Kudos

Anil,

Can you follow the approach which is suggested i.e building bridge ..you should be able to send response by that way.

Br,

Manoj

Former Member
0 Kudos

Hi Manoj,

Thanks for your valuable help. I am now able to send back response message from PI successfully.

Whereas, i am getting one strange behavior in PI. Whenever a message is triggered, it gets a response but in PI monitoring i am seeing three transactions. Please find attached screenshot for reference.

Kindly help.

capture.jpg

0 Kudos

and what about to set parameter XMBWS.GenerateSysAck=true on Module tab of sender SOAP channel? Is it the easier way how to achieve this requirement? See SAP Note 1821649 or 856597 for more details.

Answers (5)

Answers (5)

former_member182412
Active Contributor

Hi Anil,

Check my blog for similar requirement.

Send Sync Response Immediately in Sync/Async Bridge

Regards,

Praveen.

PRAGSMATIC
Participant
Former Member
0 Kudos

Hi Anurag,

Thanks for the link. It helped.

Thanks & Regards,

Somesh Mohan

PRAGSMATIC
Participant
0 Kudos

my pleasure

former_member190293
Active Contributor
0 Kudos

Hi Anil!

There is another approach that could be used.

It's a kind of sync-async bridge variation (I tried it once before):

1. Create separate business component with interface having response message type for receiving acknowlegement.

2. In sender SOAP adapter use RequestOnewayBean along with WaitResponseBean (as it's used in standard Sync-Async bridge configuration).

3. Use two receivers in your iCo: your ECC system and newly created business component.

4. Delivery to ECC system goes by usual way, for second BC use separate OM to build desired response message (important: you should set correlation ID using source message ID like we do in response part of standard Sync-Async bridge configuration).

5. In receiver communication channel used by your second BC (SOAP, for example) add NotifyResponseBean module and remove standard module.

Thus, first part of your iCo sends message to receiving system (ECC) and the second - closes the bridge opened in sender SOAP adapter with response message.

Also you can use one receiving system and add additional interface to it. In this case you are able to use "Maintain Order at Runtime" option of Interface determination step. First you send response to sender system and if the operation is successful - send source message to ECC.

Regards, Evgeniy.

Former Member
0 Kudos

Hello Evgeniy,

Thanks for your help.

While using the sync async approach, Operation mapping is throwing error which says source and target interface modes are different as it cannot take IDOC as sync interface alongwith synchronous SOAP RR for implementing the synch bridge.

Kindly help. For reference, please find attachment

Thanks in advance.

Regards. Somesh.

om-problem.jpg

former_member190293
Active Contributor
0 Kudos

Hi Anil!

Simply change your sender interface to Async mode, activate the Operation Mapping and change interface back to Sync mode.

Regards, Evgeniy.

Former Member
0 Kudos

Hi Evgeniy,

Thanks for your valuable input. Your approach helped me meet my requirement.

Whereas, i am experiencing one strange behavior in PI. Whenever a message is triggered, it gets a response but in PI monitoring i am seeing three transactions. Please find attached screenshot for reference.

capture.jpg

Kindly help.

Thanks & Regards,

Somesh Mohan

0 Kudos

Hi Anil,

As per your requirement, you need to get first ack from receiver end then IDOC needs to be triggered right!!.

1 You can create 1 interface for SOAP(SOAP to SOAP) synchronous call to target system.

2 Once you receive response from target, another interface(SOAP to SOAP) receiver SOAP channel will call IDOC (SOAP sender channel).

3 Based on response from target message you can create condition for calling IDOC(SOAP sender channel).

Regards,

Samir.

Former Member
0 Kudos

Thanks for your response but as per my requirement, i want to send the "Received'' message from PI back to SOAP sender as a response against the same request call. Client is not interested with the response message from receiver system but expects a response message from PI.

We have a specific wsdl with request and response message. Client wants the response message to be sent back from PI itself against the same request call.

I created one simple async scenario SOAP--PI--IDOC --ECC. Now for the response part, i create two async service interfaces(SI) in ESR where in for outbound SI, i have provided the request part of the wsdl and in the inbound SI, i have provided response part of wsdl and the related mapping.

In ICo, for the type of receiver determination, i have selected ''extended'' and added communication component for ECC and sender system both and their respective channels.

Kindly help.

Thanks & Regards,

Somesh

former_member186851
Active Contributor
0 Kudos

Hello Anil,

Is there any specific WSDL and endpoint for the ACK?

If yes, Split the scenario like below with two receivers. once PI receives the message both the flows will be triggered.

SOAP ---IDOC-----ECC

----SOAP------Source

Former Member
0 Kudos

Hello Raghuraman,

Thanks for your response.

We have a specific wsdl with request and response message. Client wants the response message to be sent back from PI itself against the same request call.

I created one simple async scenario SOAP--PI--IDOC --ECC. Now for the response part, i create two async service interfaces(SI) in ESR where in for outbound SI, i have provided the request part of the wsdl and in the inbound SI, i have provided response part of wsdl and the related mapping.

In ICo, for the type of receiver determination, i have selected ''extended'' and added communication component for ECC and sender system both and their respective channels.

Kindly help.

Thanks & Regards,

Somesh

former_member186851
Active Contributor
0 Kudos

Hello Anil,

I don't think you can achieve like dis.

You have to get reponse from ECC and handle it through beans..

You can refer Manoj approach else you have to use BPM.