cancel
Showing results for 
Search instead for 
Did you mean: 

Receiver Soap adapter

former_member189441
Active Participant
0 Kudos

Hi

I have a scenario Proxy to SOAP (synchronous) and its working fine. Now i need to send the same message copy to second soap Url, Means Proxy->Soap-url1&Soap-url2

one way is i can create separate business service and separate channel and separate Soap URL. But in that case what happens to 2 responses coming back to PI??

Is there any way I can give 2 receiver SOAP urls in the receiver communication channnel ??

Thanks,

Krish

Accepted Solutions (1)

Accepted Solutions (1)

udo_martens
Active Contributor
0 Kudos

Hi Krish,

A synchronous message cannot have to receivers, for the simple reason that one request message is related to one response message. You might consider use of BPM.

/Udo

former_member189441
Active Participant
0 Kudos

Hi Udo,

So if i need to use the BPM for this, do i need to use Sync/Async bridge..as below

Scenario : Proxy -> 2 Soap receivers

Start sync/async bridge - SyncSend(first receiver) - SyncSend(second Receiver) - Mapping(Combine two responses)- Sync/Async bridge close

is it possible to use BPM for sender or recever proxy scenarions.?

Thanks,

Krish

udo_martens
Active Contributor
0 Kudos

Hi Krish,

So if i need to use the BPM for this, do i need to use Sync/Async bridge..as below

Scenario : Proxy -> 2 Soap receivers

Start sync/async bridge - SyncSend(first receiver) - SyncSend(second Receiver) - Mapping(Combine two responses)- Sync/Async bridge close

That design looks very good

is it possible to use BPM for sender or recever proxy scenarions.?

Yes, of course.

/Udo

Answers (4)

Answers (4)

former_member189441
Active Participant
0 Kudos

Hi All

My requirement changed as below.

There is one RFC<->PI<->SOAP (Sync) scenario and i need to send same copy to other SOAP server as Asynchronous message.

Means RFC<->PI<->SOAP1(Sync)&SOAP1(ASYNC)

How can i do this with out using BPM.

Thanks,

Murali.

nabendu_sen
Active Contributor
0 Kudos

Hi Krish,

You can try like below:

SAP RFC (Sender)Sync Request --> SOAP Call from UDF (Request Mapping - Asynchronous WS) --> WS SOAP (Receiver) Sync Request

SAP RFC (Sender)Sync Response <----  WS SOAP (Receiver) Sync Response

former_member189441
Active Participant
0 Kudos

Hi

Thanks for your reply.

Is there anyway we can do the same as below.

In ABAP program abaper will call same function module twice one after the other sequentially.

Call function module1 synchronously with RFCDestination1(Program-ID1)

Call function module1 asynchronously with RFCDestination2(ProgramID2)

In PI:

I have created 2 communication channels with different program IDs..But

Unable to create 2 sender agreements..with same BAPI(outbound interface)

But i am able to create 2nd sender agreement if i use virtual receiver..

What is the virtual receiver for..? If i use that in my scenario...will it work separately..

Former Member
0 Kudos

Hi Krish,

You can use virtual receiver to create another set of sender agreement, it will work as another interface and you can select second communication channel created in the new sender agreement.

Thanks,

Pranav

former_member189441
Active Participant
0 Kudos

Hi Pranav,

I have created 2 sender agreements. But when i send the message to PI, it is considering the original sender agreement and throwing error for new sender agreement as below.

Error in processing caused by: com.sap.aii.af.rfc.afcommunication.RfcChannelMismatchException: Wrong Sender Agreement:The Sender agreement does not have channel CC_RFC_2_Sender configured for the functionmodule

I have used two different RFCs two different program ids in two diferent channels..But virtual sender agreement is not working.

THanks,

Murali

former_member189441
Active Participant
0 Kudos

Hi Nabendu sen,

How can we track the message we sent asynchronously using SOAP lookup? Is there anyway we can track if SOAP lookup message fails.

THanks,

Krish

nabendu_sen
Active Contributor
0 Kudos

Hi Krish,

There could be 2 types of failures, either Data error or System error. Suppose for Data error, the SOAP message is not valid or unique key does not exist, it can return back error message (as Response) which you can parse and take necessary actions (like sending emails / stop further processing). For System errors like if the Service is down or connectivity issue, if you configure Alert, it will send error emails.

baskar_gopalakrishnan2
Active Contributor
0 Kudos

>>But in that case what happens to 2 responses coming back to PI??

If you are expecting responses from two recievers (both sync communication and want to do one scenario) then bpm is the only solution to go.

or you can try this way... but I have not tried

Create the total scenario  as  async based.

One sender and in the mapping two soap lookup and the the target side you create response structure and map it to them.  Basically sender and receiver are the same. You handle the web service call using lookup in the mapping for each.

rajasekhar_reddy14
Active Contributor
0 Kudos

As udo mentioned Sync scenarios always have one receiver, you need BPM to implement your solution.

former_member189441
Active Participant
0 Kudos

Hi Raja,

So if i need to use the BPM for this, do i need to use Sync/Async bridge..as below

Scenario : Proxy -> 2 Soap receivers

Start sync/async bridge - SyncSend(first receiver) - SyncSend(second Receiver) - Mapping(Combine two responses)- Sync/Async bridge close

is it possible to use BPM for sender or recever proxy scenarions.?

Thanks,

Krish

nabendu_sen
Active Contributor
0 Kudos

Hi Krish,

If its a Synchronous scenario, Multiple Receiver is not possible for an interface without BPM. If any one of the Web Service is Asynchronous, other than BPM, you can also try with SOAP Lookup from UDF. The design could be like below:

Proxy (Async)  --> SOAP Lookup: WS1 (Sync: If web service is Async also you can just post the data from UDF, you will not get back any Response, you can ignore Response if anything comes back)  --> WS2 SOAP (Async).

http://scn.sap.com/community/pi-and-soa-middleware/blog/2006/11/20/webservice-calls-from-a-user-defi...

Former Member
0 Kudos

Hi Krish,

Instead of creating two Business Services why can't u create two communication channels for the same Business Service and provide two url's in the channels.  Accordingly you have to create two receiver agreements and assign two receivers in the receiver determination.

Thanks,

Satish.