cancel
Showing results for 
Search instead for 
Did you mean: 

design inputs --SOAP to RFC Sync interface

Former Member
0 Kudos

Hi Experts,

I am integrating Third party (web service) system with SAP ECC.

1) Web service system sends SOAP req to SAP ECC (BAPI1), BAPI 1 validate the request and sends response back with status flag.

2) if Status flag is positive results then I have to call BAPI 2 to process the process elase I will not call other BAPI.

3) If flag status IS positive or negative I have to send back response to Web service system

How to design this interface.

Regads,

Jam

Accepted Solutions (1)

Accepted Solutions (1)

markangelo_dihiansan
Active Contributor
0 Kudos

Hello,

Your scenario can be implemented without the use of BPM. Message flow looks like this


Third Party -> PI -> SAP (request)
            <- PI <- (response)
               |
              SAP 

Notes:

1.) Sender and Receiver Interface are Synch

2.) Based on the response message, implement an RFC LookUp such that BAPI2 is called if flag is present.

Hope this helps,

Mark

Former Member
0 Kudos

Hi Mark,

I develoepd one mapping between Web service Req------>BAPI1 req,

Other mapping if i perform RFC look up,that means i will send only RFC request to call BAPI2 , in this case what about RFC response ,because i want to perfrom only RFC asyn call , but RFC lookup syn cal.

Regards,

JAM

former_member200962
Active Contributor
0 Kudos
because i want to perfrom only RFC asyn call , but RFC lookup syn cal

lookup itself means a sync communication....if you dont want SYNC processing then call the RFC in ASYNC mode (no lookup)

Former Member
0 Kudos

yes correct, without lookup how can i design this interface

.

former_member200962
Active Contributor
0 Kudos

Can you tell if SOAP call is SYNC or ASYNC? and if BAPI1 is working in ASYNC/ SYNC mode?

Former Member
0 Kudos

SOAP is sync call and BAPI1 also Sync cal and i want to send BAPI 1 response to SOAP.

1)SOAP sends req to BAPI1---->BAPI1 gives response with status->if status positive then i want to send SOAP Req once again to BAPI 2 and same time i want to send BAPI1 response back to SOAP->if response not positive from BAPI1 no need to call BAPI 2.

former_member200962
Active Contributor
0 Kudos

1) Use a BPM:

Receive (Open S/A Bridge) --> Transformation1 --> SYNC_Send (BAPI1) --> Transformation2 --> ASYNC_Send (BAPI2) --> Send (Close S/A Bridge)

Include Transformation2 and ASYNC_Send inside a Switch Block which will check if the Status is positive or negative.

2) As mentioned by Monika you can make BAPI1 itself to update the BAPI2 when status is positive....in this case no need of a BPM. It will be a normal SOAP <-> PI <-> BAPI1 SYNC Call.

Former Member
0 Kudos

Transformation 1 is going to have two mapping SOAP to BAPI1 re and BAPI1 to SOAP response , please confirm.

Former Member
0 Kudos

Yes request mapping and response mapping.

However from a performance perspective i believ you should ICO.

baskar_gopalakrishnan2
Active Contributor
0 Kudos

For better performances, I would prefer the SOAP <--> RFC synch scenario. Based on RFC response , decide in response mapping to call BAP2 or not. This would be simpler in design too.

Question: if the BAPI one response is positive, you are sending soap request to BAPI2 but you don't expect any response from BAPI2 , right? If so then without BPM, you can implement. Plus using ICO (going through local processing) will help performance in many fold than going through sync async bridge with BPM.

Edited by: Baskar Gopal on May 11, 2011 12:11 PM

Former Member
0 Kudos
For better performances, I would prefer the SOAP <--> RFC synch scenario. Based on RFC response , decide in response mapping to call BAP2 or not. This would be simpler in design too.

How can i call BAPI 2 using response.

Now i have two mapings, one is SOAP Req-> RFC BAPI1,BAPI1 Res>SOAP Res.

how can i check condition in mapping to call SOAP Req -->BAPI2.

Regards,

JAM

markangelo_dihiansan
Active Contributor
0 Kudos

Hello,

how can i check condition in mapping to call SOAP Req -->BAPI2.

In message mapping, implement an ifThenElse logic based on the flag from your response. BAPI2 can be called using RFC LookUp inside message mapping. See example code from the blog below:

/people/alessandro.guarneri/blog/2006/03/27/sap-xi-lookup-api-the-killer

Hope this helps,

Mark

Former Member
0 Kudos

Mark,

I know using if then else i can create taget element based on results,

but the point here is for positive or negative results i want to send BAP1 response back to Thrid party.

How can achieve this with out BPM.

Regards.

Jam

markangelo_dihiansan
Active Contributor
0 Kudos

Hello,

but the point here is for positive or negative results i want to send BAP1 response back to Thrid party.

The response of BAPI1 will still be sent to third party (because you have response mapping). BAPI2 will only be called depending on the message mapping conditions.

Hope this helps,

Mark

Former Member
0 Kudos

yes correct,

Now i have BAPI 1 response and i want to send this to Third party and BAPI1(If condition success) , how to design this mapping.

Do i need to create multi mapping between BAPI 1 res to SOAP Res and BAPI2 Req.?

Regards,

JAM

Answers (1)

Answers (1)

Former Member
0 Kudos

Hi

You can design a normal Soap-RFC sync scenario. In fact you use ICO and bypass the integartion engien to achive good performance. Regarding invoking the second bapi, you can manage this inside the code of RFC itself.

Regards

Monika