{"ref":"capability:rfc-connectivity","page":"/capabilities/rfc-connectivity","json":"/capabilities/rfc-connectivity.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"rfc-connectivity","name":"RFC connectivity","domain":"integration-and-messaging","ecosystems":["cap","btp","abap"],"universal":false,"description":"Calling ABAP function modules from outside the system over RFC, with destinations and connection pooling handled rather than hand-wired on the calling side.","short":"Calling ABAP function modules from outside the system over RFC","core_coverage":{"state":"core-and-community","what_core_does":"An RFC client wired into CAP destinations and the service layer.","where_it_stops":"It stops at the SAP NW RFC SDK. The official path needs that proprietary native library installed, licensed and built for every platform you deploy to — which is the part the community has been working around.","community_adds":"RFC clients that run without the native library, such as [open-rfc](artifact:marianfoo-open-rfc) under [@sap/cds-rfc](artifact:sap-cds-rfc), and samples that wire RFC calls into a CAP service.","sources":[{"url":"https://cap.cloud.sap/docs/plugins/#abap-rfc","title":"CAP plugins — ABAP RFC","checked":"2026-08-31","quote":"The @sap/cds-rfc plugin allows to import the API of RFC-enabled function modules from ABAP systems"}],"assessed_at":"2026-08-31","relationship":"narrow-by-design"},"history":[{"date":"2026-08-31","field":"core_coverage.state","from":"left-open-on-purpose","to":"core-and-community","reason":"States renamed to describe who is present rather than to interpret intent. left-open-on-purpose asserted a motive; core-and-community states a fact, with relationship carrying the intent separately."},{"date":"2026-09-09","field":"ecosystems","from":"cap","to":"cap, btp","reason":"The BTP services answering this were in the corpus while the capability was not on the BTP map, so browse counted them behind the door and had no group to render them in. The BTP door is a reading of its own — a fallback to CAP's would assert something false about a service you bind rather than install."},{"date":"2026-09-14","field":"ecosystems","from":"cap, btp","to":"cap, btp, abap","reason":"abap_fm_json, adele and zrfcread expose function modules to external callers over RFC or HTTP with JSON, which is the callee side of the same concern, behind the ABAP door."},{"date":"2026-09-14","field":"description","from":"Calling ABAP function modules from a CAP service over RFC, with destinations and connection pooling handled rather than hand-wired.","to":"Calling ABAP function modules from outside the system over RFC, with destinations and connection pooling handled rather than hand-wired on the calling side.","reason":"The old wording put the caller in a CAP service, which is false behind the ABAP door, where the repositories answer the side being called. The caller is now anyone outside the system."},{"date":"2026-10-26","field":"core_coverage.community_adds","from":"","to":"RFC clients that run without the native library, such as open-rfc under @sap/cds-rfc, and samples that wire RFC calls into a CAP service.","reason":"Reassessed against the graph (check:capabilities): the CAP block named what the community works around but not what it adds; stated from the providers' own descriptions."},{"date":"2026-10-26","field":"coverage_by_ecosystem.btp.note","from":"Every provider behind this door is an SAP BTP service, so core-only is a assessment of the corpus rather than a quote from the core. ...","to":"Names the SAP Connectivity service and Cloud Connector; the state follows their origin, and no page has been checked that states an intent here.","reason":"Reassessed against the graph (check:capabilities): the note made a claim about every provider, which Cloud Connector (an app) already contradicts, and carried a grammar slip."},{"date":"2026-10-26","field":"coverage_by_ecosystem.abap.community_adds, coverage_by_ecosystem.abap.note","from":"The repositories here are independent; how they relate to the RFC interface has not been assessed.","to":"community_adds names the caller-side clients and agent servers, the HTTP/JSON adapters and the SAP-side route; note keeps only that the relationship is unassessed.","reason":"Reassessed against the graph (check:capabilities): erpl-node-rfc, pyrfc-mcp, rfc-connector and Cloud Connector reached this door after the block was written and change its shape from callee only to callee and caller."}],"coverage_by_ecosystem":{"btp":{"state":"core-only","assessed_at":"2026-09-09","where_it_stops":"At the tunnel. Calling a function module through it, and pooling those connections, is the application's side and lives where the code does.","note":"The SAP-published pieces behind this door are [SAP Connectivity service](artifact:btp-connectivity) and [Cloud Connector](artifact:sap-cloud-connector); the state follows their origin. what_core_does is left empty: no page has been checked that states an intent here, and the entries carry their own descriptions and links."},"abap":{"state":"core-and-community","assessed_at":"2026-09-14","what_core_does":"RFC is part of the ABAP language: an RFC stub is generated for every function module registered as remote, so existing function modules can be executed from a remote system.","where_it_stops":"At the RFC protocol and the function modules a system already has. A caller that sends HTTP and JSON, or a generic read of any table with its own where clause, needs ABAP code written for it.","community_adds":"Callers that reach function modules from outside, such as [erpl-node-rfc](artifact:datazoode-erpl-node-rfc) from Node.js and [pyrfc-mcp](artifact:yassinbahri-pyrfc-mcp) for agents, and the called side: HTTP and JSON adapters like [abap_fm_json](artifact:cesar-sap-abap-fm-json) and an SM59 destination bridge in [rfc-connector](artifact:abap2ui5-addons-rfc-connector). SAP's route in from BTP is [Cloud Connector](artifact:sap-cloud-connector).","sources":[{"url":"https://help.sap.com/doc/saphelp_nw73ehp1/7.31.19/en-US/48/920827feb35ed2e10000000a42189d/content.htm?no_cache=true","title":"RFC Calls — SAP NetWeaver 7.3 EhP1, SAP Help Portal","checked":"2026-09-14","quote":"Processing for being called is generated automatically (in the form of an RFC stub) for every function module registered as remote."}],"relationship":"unassessed","note":"How these entries relate to the RFC interface has not been assessed."}},"framing_by_ecosystem":{"btp":{"description":"On BTP the ABAP system is usually not reachable at all until [SAP Connectivity service](artifact:btp-connectivity) is in the picture: the proxy through which a cloud application reaches an on-premise system behind a Cloud Connector — HTTP, RFC and raw sockets — without that system being exposed."},"abap":{"description":"In ABAP this is the side being called: function modules a system exposes to external callers, over RFC itself or, through an adapter, over HTTP with JSON in and out."}},"normative_relevance":[{"instrument":"instrument:sap-developer-license-3-2-cap","prominence":"contextual","sections":["1"],"applies_when":"A covered CAP application uses RFC connectivity to extract SAP product data into a non-SAP product.","note":"RFC transport does not itself establish permitted use. When the flow copies SAP product data into a non-SAP product, section 1 and its interoperability exception become relevant to the concrete design.","applies_to":{"ecosystems":["cap"]},"sources":[{"url":"https://cap.cloud.sap/resources/license/developer-license-3_2_CAP.txt","title":"SAP Developer License Agreement 3.2 CAP","checked":"2026-09-16","quote":"solely used for and required for interoperability with an SAP product"}]}],"drafted_with_ai":true},"sap_delivery":{"door":"cap","all":{"built_in":[],"documented_pattern":[],"announced":[],"packages":[{"ref":"artifact:sap-cds-rfc","name":"@sap/cds-rfc","json":"/artifacts/sap-cds-rfc.json"}]},"by_flavor":{"node":{"built_in":[],"documented_pattern":[],"announced":[],"packages":[{"ref":"artifact:sap-cds-rfc","name":"@sap/cds-rfc","json":"/artifacts/sap-cds-rfc.json"}]},"java":null}},"edges":{"use_cases":[],"shared_tasks":[],"related_tasks":[],"options":[{"ref":"artifact:sap-cds-rfc","name":"@sap/cds-rfc","json":"/artifacts/sap-cds-rfc.json","ecosystem":"cap","origin_ring":"sap-official"},{"ref":"artifact:cesar-sap-abap-fm-json","name":"abap_fm_json","json":"/artifacts/cesar-sap-abap-fm-json.json","ecosystem":"abap","origin_ring":"independent"},{"ref":"artifact:mdjoerg-adele","name":"ADELE RFC API","json":"/artifacts/mdjoerg-adele.json","ecosystem":"abap","origin_ring":"independent"},{"ref":"artifact:sap-cloud-connector","name":"Cloud Connector","json":"/artifacts/sap-cloud-connector.json","ecosystem":"btp","origin_ring":"sap-official"},{"ref":"artifact:datazoode-erpl","name":"ERPL","json":"/artifacts/datazoode-erpl.json","ecosystem":"abap","origin_ring":"independent"},{"ref":"artifact:datazoode-erpl-node-rfc","name":"erpl-node-rfc","json":"/artifacts/datazoode-erpl-node-rfc.json","ecosystem":"abap","origin_ring":"independent"},{"ref":"artifact:marianfoo-open-rfc","name":"open-rfc","json":"/artifacts/marianfoo-open-rfc.json","ecosystem":"cap","origin_ring":"independent"},{"ref":"artifact:abap2ui5-addons-rfc-connector","name":"rfc-connector","json":"/artifacts/abap2ui5-addons-rfc-connector.json","ecosystem":"abap","origin_ring":"community-org"},{"ref":"artifact:btp-connectivity","name":"SAP Connectivity service","json":"/artifacts/btp-connectivity.json","ecosystem":"btp","origin_ring":"sap-official"},{"ref":"artifact:srijan9864-zrfcread","name":"srijan9864/zrfcread","json":"/artifacts/srijan9864-zrfcread.json","ecosystem":"abap","origin_ring":"independent"}],"samples":[{"ref":"artifact:gregorwolf-cap-rfc","name":"cap-rfc","json":"/artifacts/gregorwolf-cap-rfc.json"},{"ref":"artifact:miyasuta-cap-rfc","name":"cap-rfc","json":"/artifacts/miyasuta-cap-rfc.json"}],"explained_by":[{"ref":"content:expose-rfcs-as-mcp-tools-in-integration-suite","name":"Expose RFCs as MCP Tools in Integration Suite","json":"/content/expose-rfcs-as-mcp-tools-in-integration-suite.json"},{"ref":"content:sap-s-api-policy-on-ai-agents-what-it-prohibits-allows-and-leaves-open","name":"SAP's API Policy on AI Agents: What It Prohibits, Allows, and Leaves Open","json":"/content/sap-s-api-policy-on-ai-agents-what-it-prohibits-allows-and-leaves-open.json"},{"ref":"content:running-ai-agents-against-sap-ecc-6-0-lessons-from-building-an-in-system-mcp-ser","name":"Running AI agents against SAP ECC 6.0: lessons from building an in-system MCP server","json":"/content/running-ai-agents-against-sap-ecc-6-0-lessons-from-building-an-in-system-mcp-ser.json"},{"ref":"content:introducing-open-rfc-calling-sap-rfc-from-nodejs-without-the-sdk","name":"Introducing open-rfc: Calling SAP RFC from Node.js Without the SDK","json":"/content/introducing-open-rfc-calling-sap-rfc-from-nodejs-without-the-sdk.json"},{"ref":"content:using-rfc-function-modules-and-bapis-in-sap-build-process-automation","name":"Using RFC Function Modules and BAPIs in SAP Build Process Automation","json":"/content/using-rfc-function-modules-and-bapis-in-sap-build-process-automation.json"},{"ref":"content:creating-an-sap-sd-billing-document-using-a-bapi-in-sap-build-and-accessing-it-t","name":"Creating an SAP SD Billing Document Using a BAPI in SAP Build and Accessing It Through 'Joule Work'","json":"/content/creating-an-sap-sd-billing-document-using-a-bapi-in-sap-build-and-accessing-it-t.json"},{"ref":"content:building-custom-joule-skills-via-rfc-guide-for-sap-s-4hana-and-ecc-integration","name":"Building Custom Joule Skills via RFC: Guide for SAP S/4HANA and ECC Integration","json":"/content/building-custom-joule-skills-via-rfc-guide-for-sap-s-4hana-and-ecc-integration.json"},{"ref":"content:claude-ported-abap-functions-to-new-api","name":"Claude ported ABAP functions to new API","json":"/content/claude-ported-abap-functions-to-new-api.json"},{"ref":"content:extract-rev-trac-requests-by-custom-program-and-rev-trac-api","name":"Extract Rev-Trac requests by custom program and Rev-Trac API","json":"/content/extract-rev-trac-requests-by-custom-program-and-rev-trac-api.json"},{"ref":"content:pattern-function-for-rfc","name":"Pattern Function for RFC","json":"/content/pattern-function-for-rfc.json"},{"ref":"content:using-communication-targets-for-outbound-rfc-communication-in-abap","name":"Using Communication Targets for Outbound RFC Communication in ABAP","json":"/content/using-communication-targets-for-outbound-rfc-communication-in-abap.json"},{"ref":"content:modernizing-rfc-bapi-based-integrations-for-a-clean-core-with-sap-integration-su","name":"Modernizing RFC/BAPI-based Integrations for a Clean Core with SAP Integration Suite","json":"/content/modernizing-rfc-bapi-based-integrations-for-a-clean-core-with-sap-integration-su.json"},{"ref":"content:ips-provisioning-to-abap-cloud-developer-trial","name":"IPS provisioning to ABAP Cloud Developer Trial","json":"/content/ips-provisioning-to-abap-cloud-developer-trial.json"},{"ref":"content:configuring-sap-cloud-integration-for-an-ibp-to-s-4hana-on-prem-private-cloud-in","name":"Configuring SAP Cloud Integration for an IBP to S/4HANA (on prem / private cloud) integration","json":"/content/configuring-sap-cloud-integration-for-an-ibp-to-s-4hana-on-prem-private-cloud-in.json"},{"ref":"content:using-sap-managed-iflows-for-time-series-data-integration-in-sap-ibp-part-1-read","name":"Using SAP managed iFlows for Time series data Integration in SAP IBP – Part 1 - Reading data","json":"/content/using-sap-managed-iflows-for-time-series-data-integration-in-sap-ibp-part-1-read.json"},{"ref":"content:using-sap-managed-iflows-for-time-series-data-integration-in-sap-ibp-part-2-writ","name":"Using SAP managed iFlows for Time series data Integration in SAP IBP – Part 2 - Writing data","json":"/content/using-sap-managed-iflows-for-time-series-data-integration-in-sap-ibp-part-2-writ.json"},{"ref":"content:consume-abap-rfc-function-modules-in-cap","name":"Consume ABAP RFC Function Modules in CAP","json":"/content/consume-abap-rfc-function-modules-in-cap.json"},{"ref":"content:communicate-from-a-java-application-to-abap-via-websocket-rfc-using-jco-migratio","name":"Communicate from a Java Application to ABAP via WebSocket RFC using JCo - Migration Guide","json":"/content/communicate-from-a-java-application-to-abap-via-websocket-rfc-using-jco-migratio.json"},{"ref":"content:microsoft-sentinel-for-sap-goes-agentless","name":"Microsoft Sentinel for SAP goes agentless","json":"/content/microsoft-sentinel-for-sap-goes-agentless.json"},{"ref":"content:recommendations-for-customers-on-using-the-direct-push-based-integration","name":"Recommendations for Customers on using the Direct Push-Based Integration","json":"/content/recommendations-for-customers-on-using-the-direct-push-based-integration.json"},{"ref":"content:websocket-rfc-to-cloud-using-sap-business-connector","name":"WebSocket RFC to Cloud Using SAP Business Connector","json":"/content/websocket-rfc-to-cloud-using-sap-business-connector.json"},{"ref":"content:how-to-use-sap-data-intelligence-with-sap-cloud-connector","name":"How to use SAP Data Intelligence with SAP Cloud Connector","json":"/content/how-to-use-sap-data-intelligence-with-sap-cloud-connector.json"}],"normative_context":[{"ref":"instrument:sap-developer-license-3-2-cap","name":"SAP Developer License Agreement","json":"/instruments/sap-developer-license-3-2-cap.json","prominence":"contextual","sections":["1"]}]}}