Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

RFC Dialog process

Former Member
0 Kudos

Hi Experts.

I know that RFC always runs in a dialog process.

I am slightly confused on one thing - Lets say we call an asynchronous RFC via system A and it is calling System B.

The RFC will occupy dialog process in System A or in System B or in both the systems?

Thanks in adv.

8 REPLIES 8

anand_govardhan
Active Participant
0 Kudos

Hi,

In case of Asynchronous (aRFC) call, the system passes the control back to the calling program immediately. The RFC call is executes in a different work process or in a new internal session.

aRFC calls are of two types:

Asynchronous call without response

Asynchronous call with response

In case of aRFC, you can ask you calling program to wait until it receives some response from the calling function module. You can then process the result of the aRFC call.

In case of aRFC without response, any error message or system exceptions from the executing function module cannot be handled in the calling program.

In case of aRFC with response, you can ask the system to call back a method or a subroutine when the RFC all is executed. For this, the calling program must give the system an opportunity to call the ABAP FORM to handle the response of aRFC call.

Use the Link for schematic representation.

http://www.abaplearning.com/abap-tutorials/rfc/105-arfc

Regards,

Anand

Former Member
0 Kudos

Thanks, but I am aware of whatever you have written here.

My question was that the dialog process that Async RFC will occupy will be in both systems, or calling system, or called system?

We are having shortage of dialog processes issue, and that's why I am interested to know this.

Thanks again.

0 Kudos

As per help.sap.com

Using Asynchronous Remote Function Calls

Asynchronous remote function calls (aRFCs) are similar to transactional RFCs, in that the user does not have to wait for their completion before continuing the calling dialog. There are three characteristics, however, that distinguish asynchronous RFCs from transactional RFCs:

· When the caller starts an asynchronous RFC, the called server must be available to accept the request.

The parameters of asynchronous RFCs are not logged to the database, but sent directly to the server.

· Asynchronous RFCs allow the user to carry on an interactive dialog with the remote system.

· The calling program can receive results from the asynchronous RFC.

You can use asynchronous remote function calls whenever you need to establish communication with a remote system, but do not want to wait for the functionu2019s result before continuing processing. Asynchronous RFCs can also be sent to the same system. In this case, the system opens a new session (or window). You can then switch back and for between the calling dialog and the called session

I think until calling server establishes connection with called server it will be using dialog server and then it may use the same dialog process for some other task as it doesn't need to wait for results.once again after receiving the results it uses the dialog process(correct me if i am wrong)

Thanks

Bala Duvvuri

0 Kudos

Thanks. I am aware of Arfc functionality.

Your last line is relevant to my reply:

think until calling server establishes connection with called server it will be using dialog server and then it may use the same dialog process for some other task as it doesn't need to wait for results.once again after receiving the results it uses the dialog process(correct me if i am wrong)

Okay, so does it mean when I do an ASync RFC, one dialog process will be occupied in the sender system, and when it reaches the called system, it will occupy another dialog process there?

Sorry if i misunderstood.

0 Kudos

I think so.somebody can share their thoughts on this

Thanks

Bala Duvvuri

SuhaSaha
Advisor
Advisor
0 Kudos

>

> The RFC will occupy dialog process in System A or in System B or in both the systems?

Hello,

I don't think that in case of A-RFC the "RFC Dialog" work process will be active in both the systems, it should be active in the called system.

What makes you think that there will be 2 dialog work processes active in both the systems ?

BR,

Suhas

Former Member
0 Kudos

Well Suhas, I am not sure. I was just quoting Bala that "calling system" will also have a dialog process.

Acc to me, "CALLED" system will have a dialog process.

That's why in my reply I wrote that it means both system will occupy a dialog process.

So can I be sure that only the called system will occupy a dialog process, and not the calling system?

Any easy way to test it out?

0 Kudos

>

> So can I be sure that only the called system will occupy a dialog process, and not the calling system?

> Any easy way to test it out?

Yes, you can test it. Call the RFC asynchronously in your own system( CALL FUNCTION ... STARTING NEW TASK ... DESTINATION 'NONE') & see the number of dialog work processes generated as a result of this call.

BR,

Suhas