Configuration of System Resources for aRFC, tRFC, qRFC

Use

An application can make calculations and collect data simultaneously by using the various types of asynchronous RFCs. This can also happen indirectly, as with the outbound or inbound queue in qRFC. Every RFC request occupies a dialog work process on the application server on which the RFC is executed.

The possible configurations of the SAP System are described below.

Integration

Note that RFC calls with CALL FUNCTION are processed in DIALOG work processes. Therefore, the DIALOG limitation for processing a dialog step (default: 300 seconds, system profile parameter rdisp/max_wprun_time) also applies to these RFC calls. Remember to take this limitation into consideration when you are dividing up your data packets for parallel processing.

The configuration options described here are valid for the following RFC types.

Asynchronous RFC with Load Distribution  (aRFC)

You can use this RFC type to program parallel RFC calls. The resources are checked and assigned as far as the set quotas allow.

The required ABAP language element is:

CALL FUNCTION remote function STARTING NEW TASK task name DESTINATION IN GROUP group name

With this ABAP command, you are telling the SAP system to process function module calls in parallel. The command implements parallel processing by sending asynchronous RFC calls to the appropriate servers. These are servers in the RFC server group Group Name specified as being available for processing requests. The group name DEFAULT means that all available application servers are being used.

qRFC with Outbound Queue

The qRFC LUWs are executed using the outbound scheduler. The outbound scheduler uses parallel RFC for processing the outbound queue. For this to be possible, you have to maintain the destinations using transaction SMQS.

The outbound scheduler then checks the resources and executes parallel RFCs, if resources are available. If no resources are available, synchronous RFC is used.

qRFC with Inbound Queue

If you are using the inbound queue, the inbound scheduler takes over the processing of the inbound queue. You have to register the queue names to be processed using the inbound scheduler. To do this, use transaction SMQR. 

The inbound scheduler then checks the resources and executes parallel RFCs, if resources are available. If no resources are available, the scheduler waits until resources become available.

For more information, see Monitor Transactional RFC and Queued RFC.

tRFC and qRFC

The transactional RFC and the qRFC use the resource check. The associated ABAP language elements for both RFC types is:

CALL FUNCTION Remote function IN BACKGROUND TASK DESTINATION destination

With a preceding additional function call (TRFC_SET_QIN_PROPERTIES or TRFC_SET_QUEUE_NAME)  tRFC can be defined as qRFC.

This ABAP command flags the function module remote function for asynchronous processing. The module is not executed immediately. The data transferred with EXPORTING or TABLES is placed in a database table.  A COMMIT WORK then triggers the function module. There are various cases:

?     The data is updated. If tRFC/qRFC has been triggered within the update, these are executed in parallel after the V1 update (within the update). If the tRFC/qRFC call is registered in the scheduler, the scheduler is simply triggered within the update. The execution of tRFC/qRFC takes place outside the update through the scheduler.

?     The data is not updated. Then the tRFC/qRFC function modules started within the application LUW are executed in parallel as far as possible. If local system resources are exhausted, the tRFC/qRFC is serialized so as not to further increase resource utilization. This however is not the case if the tRFC/qRFC function modules are processed in batch. If the tRFC/qRFC have been started in batch, they are always processed in parallel as in the update process, regardless of the system resource utilization.

No resource checks are run with RFC calls from the update process or batch, since these must always be processed in parallel to avoid deadlocks. Here

Additional Information

Details about using and programming RFCs can be found in the RFC documentation:

Parallel Processing with Asynchronous RFC

Defining RFC Groups for Parallel Processing Jobs

SAP note 597583 (Performance Improvement Using RFC Parallelization) describes for which purposes specific RFC types and hence ABAP language elements are recommended.

Features

This documentation is divided into the following sections:

RFC Resources on the Application Server

?     Describes which resources are relevant for the use of parallel RFCs, and how you can monitor the available resources system-wide.

System Configuration for Parallel RFCs

?     Describes how RFC resources can be manipulated - dynamically or from settings in profile parameters

·         Calculating Resources for Asynchronous and Transactional RFC

?     Describes how resources are checked in the system and explains the difference between local and remote checks (on a different server).

Constraints

 

Note that the techniques for monitoring and controlling resources described in this document only apply to the RFC types mentioned above.

Even if you have correctly configured the quotas, your system may still become flooded with RFCs if these are not of the correct types (such as synchronous RFCs, qRFC, asynchronous RFCs without the added DESTINATION IN GROUP …).

Known problems, their causes and solutions are described in the following section:

Problems with RFC Resource Assignment