When a function module that is defined in a different system to the calling program is called, this process is referred to as a Remote Function Call (RFC). For this type of program communication, RFC interfaces are available. These support function calls between different SAP systems (for example, NW Application Servers) or between an SAP system and an external system. In this process, an RFC client calls the function module, while an RFC server supplies and executes this. The RFC interface performs the following actions:
? Calls and manages the communication routines that are required in order to communicate with the remote system.
? Logs on to and off from the remote system and performs authorization checks for the function group that is used.
? Converts actual parameters into the display required by the remote system, and the other way round. This may also include platform-specific conversions (such as differing code pages or byte sequences). This conversion supports all ABAP data types.
? Handles all errors that occurr during the communication and, if requested, forwards them to the caller.
In the example comprising communication between different SAP systems, two ABAP programs communicate with each other using the RFC interface, whereas in the case of communication between SAP systems and external systems, an ABAP program communicates with a program of a different programming language (C, C++, Visual Basic, Java or .NET).
For communication with programs of different programming languages, RFC libraries are available for all operating systems that are supported by SAP, such as MS Windows, Unix (RS/6000, SUN Solaris, HP-UX), Linux, z/OS (OS/390) and OS400:
? Java Connector (JCo) for Java
? .NET Connector for .NET (C#, VB.NET)
? RFC Software Development Kit (SDK) for C and C++
The following additions to the statement CALL-FUNCTION-RFC effect a Remote Function Call:
CALL FUNCTION - DESTINATION (synchronous RFC)
If the addition DESTINATION is specified without one of the following two additions, the calling program waits until the remotely-called function has finished.
CALL FUNCTION - STARTING NEW TASK (asynchronous RFC, aRFC)
With the addition STARTING NEW TASK, the processing of the calling program is continued as soon as the remotely-called function is started, without waiting for it to end. The results can be obtained from callback routines.
CALL FUNCTION - IN BACKGROUND TASK (transactional RFC, tRFC)
With the addition IN BACKGROUND TASK, the remotely-called function is marked for execution and is started using the statement COMMIT WORK.