Synchronous RFC (sRFC)
-
Default type when you call a function module via RFC.
-
The caller program waits until the remote system has completed the function execution and returned the result.
-
Example use: Real-time data retrieval (e.g., fetching stock from another SAP system).
-
FM execution:
CALL FUNCTION 'XYZ' DESTINATION 'SAP_R3'
.
2. Asynchronous RFC (aRFC)
-
Execution is non-blocking → Caller does not wait for immediate results.
-
You can trigger parallel processing by calling multiple aRFCs at the same time.
-
Example use: Mass data processing, parallelizing jobs.
-
FM execution:
CALL FUNCTION ‘XYZ’ STARTING NEW TASK ‘TASKNAME’
DESTINATION ‘SAP_R3’
PERFORMING callback_form ON END OF TASK.
3. Transactional RFC (tRFC)
-
Similar to aRFC, but with transactional reliability.
-
Each call is executed exactly once in the target system (using LUWs – Logical Units of Work).
-
Stored in SM58 until delivered successfully.
-
Example use: Posting documents, ALE/IDoc communication.
-
FM execution:
CALL FUNCTION ‘XYZ’ IN BACKGROUND TASK
DESTINATION ‘SAP_R3’.
COMMIT WORK.
4. Queued RFC (qRFC)
-
Extension of tRFC, but ensures sequence/order of execution using queues.
-
Uses inbound and outbound queues (transactions SMQ1/SMQ2).
-
Example use: When sequence matters (e.g., stock transfer must happen before goods issue).
-
FM execution: Similar to tRFC, but with queue configuration.
Summary :
Type | Waits for Response? | Reliability | Order Guaranteed? | Use Case |
---|---|---|---|---|
sRFC | Yes | Once | No | Real-time queries |
aRFC | No | Once | No | Parallel processing |
tRFC | No | Exactly Once | No | Data transfer, ALE/IDoc |
qRFC | No | Exactly Once | Yes | Sequential processing |
So, depending on your scenario:
-
Use sRFC for synchronous real-time calls.
-
Use aRFC for parallel jobs.
-
Use tRFC for reliable background communication.
-
Use qRFC when sequence matters.