<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Node.js on Marian Zeis Blog</title>
    <link>https://blog.zeis.de/tags/node.js/</link>
    <description>Recent content in Node.js on Marian Zeis Blog</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Mon, 10 Aug 2026 09:30:00 +0200</lastBuildDate>
    <atom:link href="https://blog.zeis.de/tags/node.js/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Introducing open-rfc: Calling SAP RFC from Node.js Without the SDK</title>
      <link>https://blog.zeis.de/posts/2026-08-10-open-rfc/</link>
      <pubDate>Mon, 10 Aug 2026 09:30:00 +0200</pubDate>
      <guid>https://blog.zeis.de/posts/2026-08-10-open-rfc/</guid>
      <description>&lt;p&gt;If you ever wanted to call a remote-enabled ABAP function module from JavaScript or Node.js, you probably discovered quite quickly that this is not as easy as it sounds.&lt;/p&gt;&#xA;&lt;p&gt;There is an RFC protocol. There are remote-enabled function modules. There is an npm package called &lt;a href=&#34;https://github.com/SAP-archive/node-rfc&#34;&gt;&lt;code&gt;node-rfc&lt;/code&gt;&lt;/a&gt;. So you would expect to install the package, add the connection details, and make the call.&lt;/p&gt;&#xA;&lt;p&gt;But &lt;code&gt;npm install node-rfc&lt;/code&gt; was never the complete setup.&lt;/p&gt;&#xA;&lt;p&gt;You also need the SAP NetWeaver RFC SDK. You need the right authorization to download it from the SAP Support Portal, the correct build for your operating system and architecture, and the current supported patch level. The native libraries must be installed where the runtime can find them. On Linux that usually means configuring &lt;code&gt;SAPNWRFC_HOME&lt;/code&gt; and the library search path. If no suitable prebuilt addon exists, you also need the C++ build toolchain, Python, &lt;code&gt;node-gyp&lt;/code&gt;, and headers to compile the Node.js addon.&lt;/p&gt;&#xA;&lt;p&gt;Then this has to work again in Docker, CI/CD, Cloud Foundry, Kyma, or wherever the application is deployed. The SDK cannot simply be bundled into a public npm package because SAP is its distribution channel. Even SAP&amp;rsquo;s own &lt;a href=&#34;https://community.sap.com/t5/technology-blog-posts-by-sap/abap-rfc-connectivity-from-btp-node-js-buildpack-and-kyma/ba-p/13573993&#34;&gt;BTP and Kyma example&lt;/a&gt; has to copy the SDK into the buildpack application, rebuild the native module, and configure the library path for runtime.&lt;/p&gt;&#xA;&lt;p&gt;This is all possible. Many projects have done it successfully for years. But it is quite a lot of setup for what starts as: I only want to call one function module.&lt;/p&gt;&#xA;&lt;h2 id=&#34;a-short-history-of-rfc-outside-abap&#34;&gt;A short history of RFC outside ABAP&lt;/h2&gt;&#xA;&lt;p&gt;The &lt;a href=&#34;https://support.sap.com/en/product/connectors/nwrfcsdk.html&#34;&gt;SAP NetWeaver RFC SDK&lt;/a&gt; is the native C and C++ foundation for RFC clients and servers. Projects such as &lt;a href=&#34;https://github.com/SAP-archive/PyRFC&#34;&gt;PyRFC&lt;/a&gt; and &lt;a href=&#34;https://github.com/SAP-archive/node-rfc&#34;&gt;&lt;code&gt;node-rfc&lt;/code&gt;&lt;/a&gt; made it usable from Python and Node.js, but both remained language bindings around this separately installed SDK.&lt;/p&gt;&#xA;&lt;p&gt;These projects were valuable and gave both ecosystems practical APIs. Their shared problem was the native dependency, followed by the end of maintenance. The last &lt;code&gt;node-rfc&lt;/code&gt; release was published in November 2023, followed by PyRFC 3.3.1 in January 2024. In July 2024 SAP published the same announcement for &lt;a href=&#34;https://github.com/SAP-archive/node-rfc/issues/329&#34;&gt;&lt;code&gt;node-rfc&lt;/code&gt;&lt;/a&gt; and &lt;a href=&#34;https://github.com/SAP-archive/PyRFC/issues/372&#34;&gt;PyRFC&lt;/a&gt;: changed priorities meant it could no longer maintain the projects. The bindings used an SDK patch no longer supported by SAP, with no planned update. After ownership could not be transferred to new maintainers, as explained in the final updates for &lt;a href=&#34;https://github.com/SAP-archive/node-rfc/issues/329#issuecomment-2541486229&#34;&gt;&lt;code&gt;node-rfc&lt;/code&gt;&lt;/a&gt; and &lt;a href=&#34;https://github.com/SAP-archive/PyRFC/issues/372#issuecomment-2541490558&#34;&gt;PyRFC&lt;/a&gt;, both repositories were eventually archived on May 28, 2026. The &lt;code&gt;node-rfc&lt;/code&gt; package on npm is deprecated too.&lt;/p&gt;&#xA;&lt;p&gt;There are forks, but they keep the same basic architecture. You still need the native SDK, platform-specific binaries, and somebody able to follow SDK changes.&lt;/p&gt;&#xA;&lt;p&gt;There is also a newer SAP path for CAP. The public &lt;a href=&#34;https://www.npmjs.com/package/@sap/cds-rfc&#34;&gt;&lt;code&gt;@sap/cds-rfc&lt;/code&gt;&lt;/a&gt; plugin uses &lt;code&gt;@sap-rfc/node-rfc-library&lt;/code&gt; for low-level RFC communication. That connector is not available on the standard npm registry. According to the plugin documentation, it is available only for Linux and Windows, and SAP customers need an S-user, an SAP Build Code license, and credentials for SAP&amp;rsquo;s Repository-Based Shipment Channel. macOS users have to use a container.&lt;/p&gt;&#xA;&lt;p&gt;So the old open-source binding is archived, while the newer supported connector adds an entitlement, a private registry, and platform-specific deployment requirements. I would expect an easier answer from SAP for such a fundamental integration protocol.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-conversation-that-started-open-rfc&#34;&gt;The conversation that started open-rfc&lt;/h2&gt;&#xA;&lt;p&gt;For a long time I was not very concerned about this. Most of my RFC contact is inside ABAP, not outside it. When I had a small Node.js use case, the setup was complicated enough that I simply did not continue. With AI it may be a bit easier to fight through native build errors and deployment files, but the underlying dependencies are still there.&lt;/p&gt;&#xA;&lt;p&gt;Then the topic came up during the evening events at &lt;a href=&#34;https://code-connect.dev/&#34;&gt;Code Connect 2026&lt;/a&gt;. Even SAP employees were annoyed by the current situation. The discussion was more or less: this should be rewritten without those dependencies, and in the world of AI it cannot be that hard.&lt;/p&gt;&#xA;&lt;p&gt;I started an AI coding session the same night.&lt;/p&gt;&#xA;&lt;p&gt;Spoiler: even with AI, it is hard.&lt;/p&gt;&#xA;&lt;p&gt;I have been working on it since that evening, with AI helping across research, implementation, tests, and review. The deeper I went, the clearer it became that writing something that works once is not the hard part. The hard part is proving that it behaves correctly across SAP releases and also in failures.&lt;/p&gt;&#xA;&lt;p&gt;Once you go deeper into RFC, a much larger world opens up. The client first has to log on, understand the function module and its parameters, translate JavaScript values into ABAP values, send and receive sometimes large structures and tables, and keep the connection in a safe state when something fails. Timeouts are especially tricky: the application may not know whether SAP already executed the call. Retrying a write automatically could therefore execute it twice.&lt;/p&gt;&#xA;&lt;p&gt;The good news is that RFC is documented better than I first expected. I used the official &lt;a href=&#34;https://support.sap.com/content/dam/support/en_us/library/ssp/products/connectors/nwrfcsdk/NW_RFC_750_ProgrammingGuide.pdf&#34;&gt;SAP NW RFC SDK 7.50 Programming Guide&lt;/a&gt;, the current SDK Doxygen documentation, the ABAP Keyword Documentation for the &lt;a href=&#34;https://help.sap.com/doc/abapdocu_latest_index_htm/latest/en-US/ABENRFC_PROTOCOL.html&#34;&gt;RFC protocol&lt;/a&gt;, interfaces, restrictions, and session context, plus SAP&amp;rsquo;s Network Interface documentation and relevant SAP Notes. The archived &lt;code&gt;node-rfc&lt;/code&gt; and PyRFC APIs and tests are also important compatibility references.&lt;/p&gt;&#xA;&lt;p&gt;I also used &lt;a href=&#34;https://github.com/OWASP/pysap&#34;&gt;OWASP pysap&lt;/a&gt; and its &lt;a href=&#34;https://pysap.readthedocs.io/en/latest/&#34;&gt;documentation&lt;/a&gt; as a low-level reference for SAP network protocols. pysap, initially designed and developed by Martin Gallo, is a Python and Scapy packet-crafting and protocol-research toolkit, while open-rfc is an application-facing Node.js RFC client. Thank you to Martin and all pysap contributors for making this research available.&lt;/p&gt;&#xA;&lt;p&gt;Most importantly, I do not only test against mocks. Because of &lt;a href=&#34;https://github.com/arc-mcp/arc-1&#34;&gt;ARC-1&lt;/a&gt;, I already have three ABAP trial systems for SAP NetWeaver 7.50, SAP S/4HANA 2023, and SAP S/4HANA 2025. Development tests run against all three. The formal first-beta support contract is intentionally smaller and qualifies NetWeaver 7.50 and S/4HANA 2023 with the exact packaged artifact.&lt;/p&gt;&#xA;&lt;p&gt;I keep offline protocol, property, fault, resource, and compatibility tests separate from live SAP evidence. The supported &lt;code&gt;node-rfc&lt;/code&gt; facade is exercised against a pinned corpus from the archived project. For a beta release, the same exact tarball must pass as a standalone dependency, as the &lt;code&gt;node-rfc&lt;/code&gt; npm alias, and below unchanged &lt;code&gt;@sap/cds-rfc&lt;/code&gt;. A green test from some earlier source checkout does not promote a different package.&lt;/p&gt;&#xA;&lt;h2 id=&#34;what-the-first-beta-includes&#34;&gt;What the first beta includes&lt;/h2&gt;&#xA;&lt;p&gt;The result is &lt;a href=&#34;https://github.com/marianfoo/open-rfc&#34;&gt;open-rfc&lt;/a&gt;, an SDK-free TypeScript and JavaScript RFC client for Node.js. The current beta is &lt;a href=&#34;https://www.npmjs.com/package/open-rfc&#34;&gt;open-rfc on npm&lt;/a&gt;, licensed under Apache 2.0.&lt;/p&gt;&#xA;&lt;p&gt;The installed package has zero runtime dependencies. It contains portable JavaScript and TypeScript declarations, with no native addon, no SAP NW RFC SDK, no post-install download, and no runtime framework. It supports ESM and CommonJS and the same package is used in three ways:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;directly through the &lt;code&gt;open-rfc&lt;/code&gt; API;&lt;/li&gt;&#xA;&lt;li&gt;as an npm alias for existing &lt;code&gt;node-rfc&lt;/code&gt; client and pool consumers; and&lt;/li&gt;&#xA;&lt;li&gt;as the low-level connector below an unchanged &lt;code&gt;@sap/cds-rfc&lt;/code&gt; installation.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The first beta focuses on direct application-server connections with password authentication and classic Unicode RFC. It includes metadata lookup and caching, synchronous function calls, common scalar values, exact decimals, date and time values, binary data, STRING and XSTRING, structures, tables, timeouts, cancellation, reset, bounded connection pooling, and representative commit and rollback paths.&lt;/p&gt;&#xA;&lt;p&gt;It also includes &lt;code&gt;Client&lt;/code&gt; and &lt;code&gt;Pool&lt;/code&gt; facades for the common archived &lt;code&gt;node-rfc&lt;/code&gt; API and the modern &lt;code&gt;RFCClient&lt;/code&gt; and &lt;code&gt;RFCConnection&lt;/code&gt; facade expected by SAP&amp;rsquo;s CAP connector. Unsupported security or serializer options fail before business I/O. A timeout, cancellation, malformed response, or uncertain send retires the physical connection, and open-rfc never automatically replays the call.&lt;/p&gt;&#xA;&lt;p&gt;The official 0.2.3 release matrix currently qualifies Ubuntu 24.04 x64 with Node.js 22.14 or newer, or Node.js 24. Because the package is portable JavaScript with no native addon, it is expected to work on other Node.js platforms too. macOS, Windows, and other Linux versions are not official release claims yet, so I especially want users to report what they try there.&lt;/p&gt;&#xA;&lt;p&gt;The 0.x line has no production SLA. Direct classic RFC also has no transport encryption or peer authentication by itself. It belongs on a trusted private network or inside a separately managed protected tunnel, not openly across the internet.&lt;/p&gt;&#xA;&lt;h2 id=&#34;btp-cloud-connector-and-an-arc-1-extension&#34;&gt;BTP, Cloud Connector, and an ARC-1 extension&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;open-rfc&lt;/code&gt; 0.2.3 also makes it possible to call an on-premise SAP system from BTP Cloud Foundry through SAP Cloud Connector. The &lt;a href=&#34;https://marianfoo.github.io/open-rfc/routes/&#34;&gt;documented route&lt;/a&gt; uses the BTP Connectivity service and Cloud Connector to reach the SAP system. I tested the exact published package end to end from Cloud Foundry to SAP S/4HANA 2023. This proves the path works, but it has not yet been tested broadly enough to be part of the release&amp;rsquo;s qualified scope.&lt;/p&gt;&#xA;&lt;p&gt;I added the same setup to the &lt;a href=&#34;https://github.com/arc-mcp/arc-1-extension-sample&#34;&gt;ARC-1 extension sample&lt;/a&gt;. Its &lt;code&gt;Custom_RfcSystemInfo&lt;/code&gt; tool calls the read-only &lt;code&gt;RFC_SYSTEM_INFO&lt;/code&gt; function, accepts no user input, is off by default, uses a dedicated RFC user, and only returns selected fields. It shows how an ARC-1 extension can add an RFC tool beside ADT and OData without installing the SDK.&lt;/p&gt;&#xA;&lt;p&gt;My tested setup uses a dedicated technical SAP user. Cloud Connector protects the connection between BTP and the company network. Inside the company network, RFC still needs a trusted network, and the technical user should only be allowed to call the exact function modules needed.&lt;/p&gt;&#xA;&lt;h2 id=&#34;why-beta-does-not-mean-almost-10&#34;&gt;Why beta does not mean almost 1.0&lt;/h2&gt;&#xA;&lt;p&gt;This first beta is not a release candidate for 1.0. RFC has too many paths for that claim.&lt;/p&gt;&#xA;&lt;p&gt;The default target for 1.0 is intentionally smaller: direct application-server RFC with password authentication, the standalone API, the &lt;code&gt;node-rfc&lt;/code&gt; compatibility layer, and unchanged &lt;code&gt;@sap/cds-rfc&lt;/code&gt; through the npm override. Before 1.0, this still needs deeper testing of failures, isolation, large values, transactions, pool contention, repeated runs, and long-running use. It also needs a frozen API and support policy, real adopters, operational readiness, and another independent security and correctness review.&lt;/p&gt;&#xA;&lt;p&gt;Message-server load balancing, SAProuter, WebSocket RFC, and passing individual user identities through Cloud Connector are conditional candidates. They enter 1.0 only if the scope decision includes them and live tests can prove them. Otherwise they remain later work.&lt;/p&gt;&#xA;&lt;p&gt;Other features are later work, not promises for 1.0: registered RFC server mode and ABAP callbacks, tRFC, qRFC, bgRFC, Throughput APIs, SNC, X.509, non-Unicode and MDMP systems, basXML, and complete SAP NW RFC SDK parity.&lt;/p&gt;&#xA;&lt;p&gt;I prefer to make this boundary explicit. A package that accepts every option and silently ignores half of them looks compatible until the day it causes a production problem.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-cap-replacement-i-wanted-from-the-beginning&#34;&gt;The CAP replacement I wanted from the beginning&lt;/h2&gt;&#xA;&lt;p&gt;One especially important goal was a drop-in replacement for &lt;code&gt;@sap-rfc/node-rfc-library&lt;/code&gt; below SAP&amp;rsquo;s &lt;code&gt;@sap/cds-rfc&lt;/code&gt; CAP plugin. I do not want to fork or rebuild the CAP layer. SAP&amp;rsquo;s unchanged package should continue to own RFC imports, destination lookup, Cloud SDK integration, multitenancy, and the CAP lifecycle. open-rfc should replace only the low-level connector.&lt;/p&gt;&#xA;&lt;p&gt;With npm 11, the application can declare a nested override:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;dependencies&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;@sap/cds-rfc&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;2.2.1&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;open-rfc&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;0.2.3&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;overrides&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;@sap/cds-rfc&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;@sap-rfc/node-rfc-library&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;$open-rfc&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Your CAP service code stays unchanged. The normal &lt;code&gt;cds import --from rfc&lt;/code&gt; flow stays with &lt;code&gt;@sap/cds-rfc&lt;/code&gt;, and existing &lt;code&gt;cds.connect.to()&lt;/code&gt; calls still go through the SAP plugin. After installation, &lt;code&gt;npm explain @sap-rfc/node-rfc-library&lt;/code&gt; shows whether the override resolved to open-rfc.&lt;/p&gt;&#xA;&lt;p&gt;The &lt;a href=&#34;https://marianfoo.github.io/open-rfc/cap/&#34;&gt;dedicated CAP guide&lt;/a&gt; explains the full setup, importer boundary, local credentials, destination boundary, transactions, and shutdown behavior. This should make local development and CI/CD much simpler because the application installs an ordinary npm artifact. There is no SDK archive to copy, no native addon to compile, and no extra SAP npm registry credential for this connector.&lt;/p&gt;&#xA;&lt;p&gt;The qualified beta scope still covers only the direct application-server route with password authentication. An easier installation does not magically qualify every destination and authentication mode, so please read the &lt;a href=&#34;https://marianfoo.github.io/open-rfc/status/&#34;&gt;release status&lt;/a&gt; for the exact version you install.&lt;/p&gt;&#xA;&lt;h2 id=&#34;i-need-your-help&#34;&gt;I need your help&lt;/h2&gt;&#xA;&lt;p&gt;Now comes the most important part. I can build a lot and I am willing to put in the work, but I cannot reproduce every SAP system, function module, network route, value shape, and deployment environment alone.&lt;/p&gt;&#xA;&lt;p&gt;The &lt;a href=&#34;https://marianfoo.github.io/open-rfc/&#34;&gt;documentation&lt;/a&gt; is also part of the project, not a finished manual that users can only consume. It already covers the quick start, standalone and &lt;code&gt;node-rfc&lt;/code&gt; use, CAP, Cloud Connector, configuration, safety, operations, troubleshooting, release status, and the road to 1.0. The sources live in the public &lt;a href=&#34;https://github.com/marianfoo/open-rfc/tree/main/docs_page&#34;&gt;&lt;code&gt;docs_page&lt;/code&gt; folder&lt;/a&gt;. If something is unclear, wrong for your environment, or missing a useful example, please open an issue or improve the page. A clearer explanation or a correction from a real setup can be as valuable as a code change.&lt;/p&gt;&#xA;&lt;p&gt;The public repository now also contains a broad offline test suite, and its documentation links and examples are checked automatically. The &lt;a href=&#34;https://github.com/marianfoo/open-rfc/blob/main/CONTRIBUTING.md&#34;&gt;contribution guide&lt;/a&gt; explains how to prepare code and documentation changes safely.&lt;/p&gt;&#xA;&lt;p&gt;Please test the beta with your real use cases, starting with a read-only function on a non-production system. Try the data types your application really uses. Test errors, cancellation, pools, and transactions, not only one successful &lt;code&gt;RFC_PING&lt;/code&gt;. If you find a problem, open an issue with the open-rfc version, Node.js version, operating system, SAP release family, route type, function interface shape, and the smallest safe reproducer you can create.&lt;/p&gt;&#xA;&lt;p&gt;Do not attach credentials, endpoints, system identities, business data, returned tables, raw traces, or packet captures to a public issue. If the problem needs private information, first describe the redacted shape so we can find a safe way to reproduce it.&lt;/p&gt;&#xA;&lt;p&gt;If you prefer to throw tokens at the problem, do that as well. The repository ships a prompt written for exactly this situation: &lt;a href=&#34;https://github.com/marianfoo/open-rfc/blob/main/.claude/commands/report-rfc-failure.md&#34;&gt;report an RFC failure&lt;/a&gt;. You do not need a checkout of the repository to use it. It has an agent first check whether your case is inside the documented boundary, then reduce the failure to a synthetic reproducer that keeps the real ABAP types and invents everything else, and finally fill in every field of the bug template. The redaction rules are part of the prompt, so an agent following it will not put your system identities, credentials, or business data into a public issue.&lt;/p&gt;&#xA;&lt;p&gt;If you want to go further than reporting, the &lt;a href=&#34;https://github.com/marianfoo/open-rfc/blob/main/.claude/commands/deep-bug.md&#34;&gt;deep bug workflow&lt;/a&gt; picks up from there: root cause before any change, then a test that was seen to fail without the fix, then a focused pull request. External contributors will not have my private live-system evidence, so give the agent only a synthetic reproducer and public information. I can run the necessary SAP checks after the issue is reduced safely.&lt;/p&gt;&#xA;&lt;p&gt;And of course, contributions are welcome. This project should not become one person&amp;rsquo;s private RFC implementation with a public repository around it. I want it to become truly open, understandable, testable, and useful for different scenarios.&lt;/p&gt;&#xA;&lt;p&gt;That takes more work. I am ready to do it, but I need your systems, your use cases, your bug reports, and your review.&lt;/p&gt;&#xA;&lt;p&gt;Let&amp;rsquo;s make this work.&lt;/p&gt;&#xA;&lt;h2 id=&#34;references-and-links&#34;&gt;References and links&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/marianfoo/open-rfc&#34;&gt;open-rfc repository&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://marianfoo.github.io/open-rfc/&#34;&gt;open-rfc documentation&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://marianfoo.github.io/open-rfc/cap/&#34;&gt;open-rfc CAP integration guide&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://marianfoo.github.io/open-rfc/status/&#34;&gt;open-rfc release status&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/marianfoo/open-rfc/blob/main/CONTRIBUTING.md&#34;&gt;open-rfc contribution guide&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://marianfoo.github.io/open-rfc/roadmap/&#34;&gt;open-rfc road to 1.0&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/marianfoo/open-rfc/releases/tag/v0.2.3&#34;&gt;open-rfc 0.2.3 release&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/arc-mcp/arc-1-extension-sample&#34;&gt;ARC-1 extension sample&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://support.sap.com/en/product/connectors/nwrfcsdk.html&#34;&gt;SAP NetWeaver RFC SDK&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://support.sap.com/content/dam/support/en_us/library/ssp/products/connectors/nwrfcsdk/NW_RFC_750_ProgrammingGuide.pdf&#34;&gt;SAP NW RFC SDK 7.50 Programming Guide&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/SAP-archive/node-rfc&#34;&gt;Archived SAP node-rfc project&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/SAP-archive/node-rfc/issues/329&#34;&gt;node-rfc maintenance announcement&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/SAP-archive/PyRFC&#34;&gt;Archived SAP PyRFC project&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/SAP-archive/PyRFC/issues/372&#34;&gt;PyRFC maintenance announcement&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/OWASP/pysap&#34;&gt;OWASP pysap&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.npmjs.com/package/@sap/cds-rfc&#34;&gt;SAP CAP RFC plugin&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://code-connect.dev/&#34;&gt;Code Connect 2026&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
    </item>
  </channel>
</rss>
