Start of Content Area

 Process documentation Parallel Processing with Asynchronous RFC  Locate the document in its SAP Library structure

To achieve a balanced distribution of the system load, you can use destination additions to perform function modules in parallel tasks in any application server or in a predefined application server group of an SAP system.

Caution

Parallel processing is implemented with a special asynchonous RFC variant. With your own parallel processing applications, It is therefore important that you only use the correct variant:

CALL FUNCTION STARTING NEW TASK DESTINATION IN GROUP.

By using other variants of asynchronous RFC, you are no longer protected by the built-in safeguards in the correct keyword, and can cause your system to crash.

You can find details in:

      Prerequisites for Parallel Processing

      Function Modules and ABAP Keywords for Parallel Processing

      Managing Resources in Parallel Processing

Prerequisites for Parallel Processing

Before implementing parallel processing, make sure that your application and your SAP system meet these requirements:

      Logically-independent units of work: 

The data processing task to be carried out in parallel must be logically independent of other instances of the task. That is, the task can be carried out without reference to other records from the same data set that are also being processed in parallel, and the task is not dependent upon the results of other parallel operation tasks. For example, parallel processing is not suitable for data that must be sequentially processed or in which the processing of one data item is dependent upon the processing of another item of the data.

By definition, there is no guarantee that data will be processed in a particular order in parallel processing or that a particular result will be available at a given point in processing. 

      ABAP requirements:

       The function module that you call must be marked as externally callable. This attribute is specified in the Remote function call supported field in the function module definition (transaction SE37).

       The called function module may not include a function call to the destination “BACK.”

       The calling program should not change to a new internal session after making an asynchronous RFC call. That is, you should not use SUBMIT or CALL TRANSACTION in such a report after using CALL FUNCTION STARTING NEW TASK.  

       You cannot use the CALL FUNCTION STARTING NEW TASK DESTINATION IN GROUP keyword to start external programs. 

      System resources: 

In order to process tasks from parallel jobs, a server in your SAP system must have at least 3 dialog work processes. It must also meet the workload criteria of the parallel processing system: Dispatcher queue less than 10% full, at least one dialog work process free for processing tasks from the parallel job.

Function Modules and ABAP Keywords for Parallel Processing

You can implement parallel processing in your applications by using the following function modules and ABAP keywords:

      SPBT_INITIALIZE: Optional function module. 

Use to determine the availability of resources for parallel processing. 

You can

       check that the parallel processing group that you have specified is correct.

       find out how many work processes are available so that you can more efficiently size the packets of data that are to be processed in your data.

      CALL FUNCTION Remote function STARTING NEW TASK Task name DESTINATION IN GROUP:

With this ABAP statement, you are telling the SAP system to process function module calls in parallel. Create a loop for this command by splitting up the data to be processed into work packages. Transfer the data to be processed to an internal table (EXPORT arguments, TABLE arguments). The keyword implements parallel processing by dispatching asynchronous RFC calls to the servers that are available in the RFC server group specified for the processing.

Note that your RFC calls with CALL FUNCTION are processed in work processes of type DIALOG. The DIALOG limit on processing of one dialog step (by default 300 seconds, system profile parameter rdisp/max_wprun_time) applies to these RFC calls. Remember to consider this restriction when dividing up your data packets for parallel processing. 

      SPBT_GET_PP_DESTINATION: Optional function module. 

Call immediately after the CALL FUNCTION keyword to get the name of the server on which the parallel processing task will be run. 

      SPBT_DO_NOT_USE_SERVER: Optional function module. 

Excludes a particular server from further use for processing parallel processing tasks. Use with SPBT_GET_PP_DESTINATION if you find that a particular server is not available for parallel processing (for example, COMMUNICATION FAILURE exception if a server becomes unavailable).

      WAIT: ABAP keyword

WAIT UNTIL <logical expression>

Required if you wish to wait for all of the asynchronous parallel tasks created with CALL FUNCTION to return. This is normally a requirement for orderly background processing. May be used only if the CALL FUNCTION includes the PERFORMING ON RETURN addition.

      RECEIVE: ABAP keyword

RECEIVE RESULTS FROM FUNCTION Remotefunction

Required if you wish to receive the results of the processing of an asynchronous RFC. RECEIVE retrieves IMPORT and TABLE parameters as well as messages and return codes.

Managing Resources in Parallel Processing

You use the following destination additions to run function modules in parallel (asynchronous calls) in the SAP system:

In a predefined group of application servers:

CALL FUNCTION Remotefunction STARTING NEW TASK Taskname

DESTINATION IN GROUP Groupname

In all currently available and active application servers:

CALL FUNCTION Remotefunction STARTING NEW TASK Taskname

DESTINATION IN GROUP DEFAULT

The addition first determines the amount of resources (work processes) currently available (i.e. in all servers or in a group of application servers, comparable with login servers). The resources available for executing asynchronous calls on each application server depend on the current system load.

The applications developer is responsible for the availability of RFC groups in the production system (i.e. the customer's system). For details on how to maintain the RFC groups, see Maintaining Group Destinations For Load Distribution.

After determining the available resources, the asynchronous call is executed in an available application server. If no resources are available at that particular time, the system executes the exception routine RESOURCE_FAILURE (see the addition Exceptions). In the case of an asynchronous function module call, this exception must be handled by the application program.

The process for determining available resources in an RFC group is as follows:

First, the system determines the length of the dispatcher queue for the relevant application server. If it is greater than 10% of the overall length, the server makes no resources available. If it is smaller, the system makes available the current number of free dialog processes minus 2 (as a reserve instance for other purposes, e.g. for logon to the system or administration programs). One application server must therefore have at least three dialog processes if RFC parallel processing is taken into account.

Note

       At present, only one RFC group per program environment is supported for parallel execution of asynchronous calls. Using both additions (DESTINATION IN GROUP Groupname and DESTINATION IN GROUP DEFAULT) in one program is not allowed.

       Exception routine RESOURCE_FAILURE is only triggered in connection with asynchronous RFCs with the additions DESTINATION IN GROUP Groupname and DESTINATION IN GROUP DEFAULT.

You are recommended (for performance and other reasons) to use an RFC group with sufficient resources for parallel processing of asynchronous calls

 

 

 

 

End of Content Area