cancel
Showing results for 
Search instead for 
Did you mean: 

Ayschronous to Sychronous

Former Member
0 Kudos

Hi All, my present scenerio is, PI receives IDOC(via tRFC) and in PI I convert into another format and send to external partner via HTTPS URL. My external partner always send functinal ack file immediately in the same URL which I send to them. So I created a sychrounous message interface and tested from RWB with QOS = Best Effort. Now I see functional ack file immediately(within fraction of seconds) back from my external parnter. So I understand my request must be in sychronous(Best Effort).

I don't want to ask my ABAPers to send the IDoc(via sRFC which is Best Effort). Instead I want to achieve this inside XI/PI using or not using BPM.

R/3 -


(Asych Message)--


> XI/PI -
(From PI send the message in Sych Message)--> External partner via HTTPS

I want the above design.

Can anyone pls reply if you have done this?

Thanks,

Edited by: XISearch on Apr 19, 2011 6:34 AM

Edited by: XISearch on Apr 19, 2011 6:35 AM

Accepted Solutions (0)

Answers (2)

Answers (2)

Former Member
0 Kudos

Hi,

Check the below blog...

/people/rajeshkumar.pasupula/blog/2011/03/07/unleash-synchronous-scenarios

you can supress the result received from the target in PI itself..

HTH

Rajesh

Former Member
0 Kudos

Hi Rajesh, I want to capture the response which my external partner is sending. I don't want to ignore the response. I'll capture the response and will convert into EDI_DS40 status record(16 or 17) and send back to R/3.

Edited by: XISearch on Apr 19, 2011 9:03 AM

maciej_jarecki
Contributor
0 Kudos

Hi

You have to create BPM. Idoc dosen't support sync communication. So your BPM will consist of

Receive step ( idoc)

Transformation( idoc -> WS)

Send sync ( send to External WebService)

Transform (Response -> ERP Message) - You have to find some BAPI or FM to update IDOC Status

Send async to BAPI/ FM

BR

Maciej

Former Member
0 Kudos

Hi Maciej , in my send step I chose the mode as "Sychronous" and chose the Sychronous Interface, but in the request message and the Response Message it is showing only the values which is available in the Container which is a Asychronous Interface.

Edited by: XISearch on Apr 19, 2011 12:46 PM

maciej_jarecki
Contributor
0 Kudos

Hi

Did you create your sync SI as abstrac interface ? it is mandatory

BR

Maciej

Former Member
0 Kudos

Maciej,What do you mean by sync SI?

maciej_jarecki
Contributor
0 Kudos

Hi

in ESR you have sync and async Service interfaces witch is set in mode option. Also use under Attributes Category set Abstract

BR

MAciej

Former Member
0 Kudos

I'm aware that Ayschronous and Sychronous mode and Abstract and to use BPM we must choose Abstract. My question is if in 'send' step if i choose Sychronous mode and in the sender interface it is displaying the Sychronous message Interface with Abstract attribute which i created. It is also showing the source message and target message. When i click the source message it is showing in the container parameter where i created with Asychronous message interface.

Edited by: XISearch on Apr 19, 2011 3:25 PM

maciej_jarecki
Contributor
0 Kudos

Hi

You should also in container define your sync messages

BR

Maciej

Former Member
0 Kudos

Maciej, container doesn't display the sychronous interface. I'm using PI7.0 Not sure whether it is possible in the higher version.

maciej_jarecki
Contributor
0 Kudos

HI

it's possible, i've done it in PI 7.0

use those blog one for 7.0 one for 7.1

/people/kokil.handa/blog/2010/07/07/use-of-bpm-in-file--soap--file-pi-71-scenario--design-approach

/people/arpit.seth/blog/2005/06/27/rfc-scenario-using-bpm--starter-kit

Kind Regards

Maciej

Former Member
0 Kudos

Hi Maciej,

I visited this blog http://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/1926. [original link is broken] [original link is broken] [original link is broken] Still I don't know how it is possible. Before reading the blog itself i tried this method. In my first send block, in the Mode property I choose "Synchronous". After choosing, the first send block expects to fill the below property:

1 Synchronous Interface.

2. Request Message.

3. Response Message.

First, in the Synchronous Interface property, I choose my message interface which has the Category "Abstract" and Mode "Synchronous"

Second, in the Request Message property, when I click the box it only lists out the interface which are available in my container. And as I mentioned in my previous reply Container has only Asynchronous Abstract interfaces. Even if I continue to choose the one which is available from the container, my Request Message property says that it has some error.

I really got stuck here. Can you please clarify my above item?

Thanks,

former_member200962
Active Contributor
0 Kudos

create a SYNC interface....create two ASYNC interfaces...one having the Request message (Async_interface1) and other having the Response message (Async_interface2)....all abstract.

Now in your BPM create two containers...one for the Async_interface1 and one for Async_interface2....now select the same as and when required.

Former Member
0 Kudos

Hi Abhishek, I can create as you have mentioned but in the send Synchronous mode again i'll get stuck. So I'll be more happy if you or someone can answer to my question which I replied to Maciej.

Thanks,

Edited by: XISearch on Apr 26, 2011 9:25 AM

Former Member
0 Kudos

Hi Abhishek, I can create as you have mentioned but in the send Synchronous mode again i'll get stuck. So I'll be more happy if you or someone can answer to my question which I replied to Maciej.

Thanks,

Edited by: XISearch on Apr 26, 2011 9:24 AM

former_member200962
Active Contributor
0 Kudos
Even if I continue to choose the one which is available from the container, my Request Message property says that it 
has some error.

The error could most probably be because of the difference in the messages that you included in the Request-Response section of the SYNC interface and those included in the individual ASYNC interfaces.

I would suggest that you remove the SYNC step for time-being and also delete the related containers from the BPM.

Then ensure that you have included the relevant message types/ external definitions in the SYNC and ASYNC interfaces.

Former Member
0 Kudos

Hi Abhishek,

Thanks for your suggestion, but I don't think by deleting and creating my container and my step block with SYNC mode again will give me a result.

In BPM we CAN NOT have SYNC interface in the container. For my interface, I want to have SYNCH mode in the send block step.

In the Synchronous Interface property i can choose the Message interface which I selected with SYNCH mode property but in the Request/Response Message property I'm forced to choose the available message interface from the containter. And after I choose, when i do the syntax check(F7) I see log as Request Message Property and Synchronous Interface property are not of same type. And I clearly understand this error log and it is right.

That's why again and again I'm asking how to choose the SYNCH message interface in the request and response property. When I click on the Request message/Response message property it opens a window where it gives an option to choose one among the container value. Wish to remind that whatever we create in the container is ASYNC message interface.

Please let me know if you want me to explain more clearer than this. I'm happy to detail what I want.

Thanks,

former_member200962
Active Contributor
0 Kudos
In BPM we CAN NOT have SYNC interface in the container. For my interface, I want to have SYNCH mode in the send 
block step.

Yes we cannot have SYNC interfaces and neither am I suggesting you to build a container with SYNC interface.

That's why again and again I'm asking how to choose the SYNCH message interface in the request and response 
property.

1) Define a ABS SYNC service interface with the desired request and response message-types.

Define one ABS ASYNC interface with the desired Request_Message.

Define one ABS ASYNC interface with the desired Response_Message.

2) In the BPM --> Define a Request_Container (having Request_Message) and Response_Container (having Response_Message) --> include Send Step --> Choose the mode as Synchronous --> 3 options will be enabled --> For Synchronous Interface include the ABS SYNC service interface --> For Request Message include the Request_Container --> For Response Message include the Response_Container.

Now what i feel is that your config for point 1 is not correct and hence you are getting an error

but I don't think by deleting and creating my container and my step block with SYNC mode again will give me a result.

Many a times such steps help in a BPM....i know the above suggestion does not seem to have a valid base but then there is no harm in trying the same.

Former Member
0 Kudos

Thanks Abhishek. Whatever you have mentioned i had done it when i created this BPM last week. After I read your above reply, I was suprised what mistake I made. So patiently I checked once again all the objects and finally I found out. Only mistake I did was I copied the Asyn ABS Request Message from different namespace. And this is the reason as soon as i chose the Request Message from the container, this property tooltip showed me that "HasError:". Again thanks a lot for your replies.

rajasekhar_reddy14
Active Contributor
0 Kudos

The problem here is IDoc not supports Sync behaviour, so you have to change it to Proxy or RFC(BAPI) if you want to send acknolodgment status to R/3,

If you dont want to send Ack status to R/3 then create target interface in sync mode,thats it.

Regards,

Raj