Communication within an SAP system or with a remote system can take place using Remote Function Call (RFC). This enables the following scenarios:
· Communication between two independent SAP systems
· Communication between a calling SAP system and an external receiving system
· Communication between a calling external SAP system and an SAP system as the receiving system
The following communication model shows how these communication scenarios can occur in practice. tRFC (transactional Remote Function Call) is still responsible for actually sending communications. tRFC is preceded by inbound and outbound queues, which have led to the name qRFC (queued Remote Function Call). The sending system is called the client system, and the target system represents the server system.
There are three data transfer scenarios:

This scenario is suitable if the data being sent is not interrelated. A calling application (or client) in system 1 uses a tRFC connection to a called application (or server) in system 2. In this scenario, the data is transferred using tRFC. This means that each function module sent to the target system is guaranteed to be processed once. The order in which the function modules are executed, and the time they are executed, cannot be determined. If a transfer error occurs, a background job is scheduled that resends the function module after a defined period of time.
In this scenario, the sending system uses an outbound queue to serialize the data being sent. This means that mutually dependent function modules are placed in the outbound queue of the sending system and are guaranteed to be sent in the correct sequence, and only once, to the receiving system. The called system (server) has no knowledge of the outbound queue in the sending system (client). Using this scenario, every SAP system can communicate with a non-SAP system (the program code of the server system does not need to be changed, but it must be tRFC-compliant).
In this scenario, in addition to the outbound queue in the sending system (client), there is also an inbound queue in the target system (server). qRFC with an inbound queue always means that an outbound queue exists in the sending system. This guarantees that the sequence of communications is preserved, and at the same time the resources in the client and in the server system are controlled efficiently. The inbound queue is processed using an inbound scheduler, which only processes as many queues in parallel as the current resources in the target system (server) will allow, This prevents a server from being blocked by a client.
To help you decide which communication types you need to implement according to your system landscape and your requirements, the advantages of the three types of communication are explained below:
...
·
tRFC
Suitable only for independent function module calls; the sequence of the calls
is not preserved
·
qRFC with outbound queue
Function modules in a queue are guaranteed to be processed only once and in
sequence (serialization). Also suitable for communication with non-SAP
servers.
·
qRFC with inbound queue
The function modules created in the outbound queue are transferred from the
outbound queue to the inbound queue; the sequence of the function modules is
preserved. An inbound scheduler processes the inbound queues in
accordance with the specified resources. Both the client and the server system
must be SAP systems. One work process is used for each
inbound queue.
