SAP Architecture RFC
RFC (Remote Function Call) is SAP’s core mechanism for calling function modules across systems, SAP-to-SAP or SAP-to-external. It underpins much of SAP’s integration, including BAPIs and many interfaces.
RFC lets a program call a function module in another system as if it were local, and nearly all SAP-to-SAP and external program communication runs on it. Synchronous RFC waits, asynchronous does not, transactional guarantees exactly-once execution and queued adds ordering. Destinations live in SM59, and connectors such as JCo and NCo use it from Java and .NET.
- Watch out: Misconfigured RFC destinations (SM59).
What RFC is
RFC lets a program invoke a function module that lives in another system as if it were local. It is the foundation of SAP’s remote communication: when one SAP system calls another, or an external program calls SAP, it is almost always via RFC under the hood.
Types of RFC
- Synchronous (sRFC): caller waits for the result; both systems must be available.
- Asynchronous (aRFC): caller does not wait.
- Transactional (tRFC): guarantees the call executes once, even across outages.
- Queued (qRFC): tRFC with ordering, used heavily in interfaces.
RFC destinations
Connections to other systems are defined as RFC destinations (transaction SM59), holding the target system, logon and connection details. Interfaces, BAPIs and IDoc distribution all rely on correctly configured, secure RFC destinations.
Why it matters
RFC errors are among the most common integration issues (a destination misconfigured, a system down, authorizations missing). Understanding RFC types and destinations is essential for building and troubleshooting SAP interfaces.
RFC in integration
External systems use RFC through SAP connectors/SDKs (e.g. the SAP JCo for Java, NCo for .NET) to call BAPIs/RFMs. Reliable interfaces use tRFC/qRFC so messages are not lost or reordered. RFC destinations and their security (least-privilege service users, secured gateway) are central.
When to use it
Use RFC for SAP-to-SAP and program-level integration where you call specific functions/BAPIs, choosing tRFC/qRFC for reliability. Cloud scenarios increasingly wrap this in APIs, but RFC remains vital in classic/hybrid landscapes.
Common pitfalls
- Misconfigured RFC destinations (SM59).
- Choosing the wrong RFC type for reliability needs.
- Insecure RFC connections with excessive authorizations.