{"id":15019112,"url":"https://github.com/SAP-archive/node-rfc","last_synced_at":"2025-09-26T14:31:23.332Z","repository":{"id":19376168,"uuid":"22616677","full_name":"SAP-archive/node-rfc","owner":"SAP-archive","description":"Asynchronous, non-blocking SAP NW RFC SDK bindings for Node.js","archived":false,"fork":false,"pushed_at":"2024-12-13T13:21:01.000Z","size":40605,"stargazers_count":259,"open_issues_count":22,"forks_count":78,"subscribers_count":26,"default_branch":"main","last_synced_at":"2025-05-23T08:07:31.168Z","etag":null,"topics":["abap","asynchronous","darwin","javascript","linux","macos","node","nodejs","nwrfc","rfc","rfm","sap","windows"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SAP-archive.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-08-04T19:18:18.000Z","updated_at":"2025-04-23T20:46:39.000Z","dependencies_parsed_at":"2024-09-21T20:01:54.684Z","dependency_job_id":"128bffc4-874c-4dee-a108-a3e5de1afa34","html_url":"https://github.com/SAP-archive/node-rfc","commit_stats":{"total_commits":335,"total_committers":17,"mean_commits":"19.705882352941178","dds":0.08955223880597019,"last_synced_commit":"9ad4cb06ff550cb2e4e79e97225ed191342d9c98"},"previous_names":["sap-archive/node-rfc","sap/node-rfc"],"tags_count":63,"template":false,"template_full_name":null,"purl":"pkg:github/SAP-archive/node-rfc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SAP-archive%2Fnode-rfc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SAP-archive%2Fnode-rfc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SAP-archive%2Fnode-rfc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SAP-archive%2Fnode-rfc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SAP-archive","download_url":"https://codeload.github.com/SAP-archive/node-rfc/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SAP-archive%2Fnode-rfc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":277090811,"owners_count":25759227,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-26T02:00:09.010Z","response_time":78,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["abap","asynchronous","darwin","javascript","linux","macos","node","nodejs","nwrfc","rfc","rfm","sap","windows"],"created_at":"2024-09-24T19:53:00.152Z","updated_at":"2025-09-26T14:31:22.933Z","avatar_url":"https://github.com/SAP-archive.png","language":"C++","readme":"## Deprecation Notice\n\nThis public repository is no longer maintained. Please see [this issue](https://github.com/SAP/node-rfc/issues/329) for details.\n\n![](https://img.shields.io/badge/STATUS-NOT%20CURRENTLY%20MAINTAINED-red.svg?longCache=true\u0026style=flat)\n\n---\n\n# node-rfc\n\nAsynchronous, non-blocking [SAP NetWeaver RFC SDK](https://support.sap.com/en/product/connectors/nwrfcsdk.html) client and server bindings for [Node.js](http://nodejs.org/). Direct consumption of ABAP business logic from Node.js and extending ABAP eco-system with Node.js capabilities, with automatic ABAP \u003c-\u003e Node.js data conversions.\n\n[![node-rfc release](https://img.shields.io/npm/v/node-rfc.svg)](https://www.npmjs.com/package/node-rfc)\n[![Node.js engines](https://img.shields.io/node/v/node-rfc.svg)](https://www.npmjs.com/package/node-rfc)\n[![N-API version](https://img.shields.io/badge/N--API-v8-green.svg)](https://github.com/nodejs/node-addon-api)\n[\u003cimg src=\"https://img.shields.io/badge/Electron-191970?style=for-the-badge\u0026logo=Electron\u0026logoColor=white\" height=\"20\"/\u003e](https://www.electronjs.org/)\n[![deno version supported](https://shield.deno.dev/deno/latest)](https://deno.land/)\n[![dpm](https://img.shields.io/npm/dm/node-rfc.svg)](https://www.npmjs.com/package/node-rfc)\n[![REUSE status](https://api.reuse.software/badge/github.com/SAP/node-rfc)](https://api.reuse.software/info/github.com/SAP/node-rfc)\n[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/4350/badge)](https://bestpractices.coreinfrastructure.org/projects/4350)\n\n## Key features\n\n- Based on [N-API](https://github.com/nodejs/node-addon-api) standard\n- Client and Server bindings\n- Stateless and stateful connections (multiple function calls in the same ABAP session (same context))\n- Async and callback API\n- ECMAScript, TypeScript\n- Sequential and parallel calls, using one or more clients\n- Automatic conversion between Node.js and ABAP datatypes\n- Direct and managed connections (connection pool)\n- Throughput monitoring: number of calls, bytes sent/received, application/total time; SAP NWRFC SDK \u003e= 7.53 required\n- Usage examples \u0026 code-snippets: [SAP-samples/node-rfc-samples](https://github.com/SAP-samples/node-rfc-samples)\n\n## Content\n\n- **[Supported Platforms](#supported-platforms)**\n- **[Requirements](#requirements)**\n- **[Download and installation](#download-and-installation)**\n- **[Getting started](#getting-started)**\n- **[Usage](doc/usage.md)**\n  - **[Authentication](doc/authentication.md)**\n  - **[sapnwrfc.ini](doc/usage.md#addon)**\n  - **[env](doc/env.md#NODE_RFC_MODULE_PATH)**\n  - **[Client](doc/usage.md#client-toc)**\n  - **[Server](doc/usage.md#server-toc)**\n  - **[Connection Pool](doc/usage.md#connection-pool)**\n  - **[Throughput](doc/usage.md#throughput)**\n  - **[Logging](doc/usage.md#logging)**\n- **[API](doc/api.md)**\n  - **[Connection Pool](doc/api.md#connection-pool)**\n  - **[Client](doc/api.md#client)**\n  - **[Server](doc/api.md#server)**\n  - **[Throughput](doc/api.md#throughput)**\n- **[Troubleshooting](doc/troubleshooting.md)**\n  - **[Verify SAP NW RFC SDK installation](doc/installation.md#verify-sap-nw-rfc-sdk-installation)**\n- **[More resource and info about SAP Connectors and RFC communication](#resources)**\n- **[Code of Conduct](CODE_OF_CONDUCT.md)**\n- **[Contributing](#contributing)**\n\n## Supported platforms\n\n- Kyma and BTP Node.JS buildpack: [ABAP RFC connectivity from Kyma and BTP Node.JS buildpack](https://blogs.sap.com/2023/10/26/abap-rfc-connectivity-from-btp-node.js-buildpack/)\n\n- AWS Lambdas, heroku ...\n  - Create GitHub issue to get up-to-date information\n  - Create SAP feature request for `Security Services` category of the [SAP Cloud Platform – Platform Foundation](https://influence.sap.com/sap/ino/#/campaign/2277)\n\n- Operating systems: the _node-rfc_ connector can be built from source([build instructions](#download-and-installation)) on all platforms supported by both [SAP NW RFC SDK](https://launchpad.support.sap.com/#/notes/2573790) and by [Node.js](https://github.com/nodejs/node/blob/master/BUILDING.md#supported-platforms-1)\n\n- Node.js: [current and active LTS releases](https://github.com/nodejs/LTS)\n\n- Docker containers: [SAP fundamental-tools/docker](https://github.com/SAP/fundamental-tools/tree/main/docker)\n\n- Electron: current release, see [SAP-samples/node-rfc-samples/frameworks/electron-quick-start](https://github.com/SAP-samples/node-rfc-samples/tree/main/frameworks/electron-quick-start) and #144\n\n- Deno: latest release\n\nOther platforms and frameworks:\n\n- NW.js\n  - Feature request: #144\n  - [SAP-samples/node-rfc-samples/frameworks/nwjs-quick-start](https://github.com/SAP-samples/node-rfc-samples/tree/main/frameworks/nwjs-quick-start)\n\n- Node-RED\n  - Feature requests: #161 and #148\n  - Experimental work: [PaulWieland/node-red-contrib-saprfc](https://github.com/PaulWieland/node-red-contrib-saprfc)\n\n- [Sails JS](https://github.com/dcolley/sailsjs-node-rfc)\n\n## Requirements\n\n### node-gyp\n\nBuild toolchain is based on `node-gyp` and Python. For further details check: [node-gyp#Installation](https://github.com/nodejs/node-gyp#installation)\n\n### SAP NW RFC SDK 7.50 PL12\n\n- see [SAP Note 3337381: SAP NetWeaver RFC SDK 7.50 -- Patch Level 12](https://me.sap.com/notes/3337381) for a list of bug fixes and enhancements made with this patch release.\n- **Only the latest patch level is supported by SAP**\n- The latest version is fully backwards compatible, from today S4, down to R/3 release 4.6C.\n- Can be downloaded from SAP Software Download Center of the SAP Support Portal, like described at https://support.sap.com/nwrfcsdk.\n- If you are lacking the required authorization for downloading software from the SAP Service Marketplace, please follow the instructions of [SAP Note 1037575](https://launchpad.support.sap.com/#/notes/1037575) for requesting this authorization.\n\n- Release notes: [SAP Note 3337381 - SAP NetWeaver RFC SDK 7.50 -- Patch Level 12](https://me.sap.com/notes/3337381)\n- Only the latest path level is supported by SAP\n\n- SAP NW RFC SDK C++ binaries must be downloaded from SAP Suport Portal and locally installed. Check [installation instructions](doc/installation.md#sap-nwrfc-sdk-installation) and [SAP NW RFC SDK section on SAP Support Portal](https://support.sap.com/en/product/connectors/nwrfcsdk.html). Using the latest version is reccomended as SAP NW RFC SDK is fully backwards compatible, supporting all NetWeaver systems, from today S4, down to R/3 release 4.6C.\n\n### Docker\n\nDocker container examples for Linux, Intel and ARM based Darwin: [SAP/fundamental-tools/docker](https://github.com/SAP/fundamental-tools/tree/main/docker). SAP NWRFC SDK libraries are not included.\n\n### Linux\n\n- Build toolchain is based on Ubuntu 20.04, for node-rfc binaries compatible with glibc \u003e= 2.28 and libstdc++ \u003e= 6.0.25 (GLIBCXX_3.4.25). The build toolchain follows is defined by [standard Node.js build toolchain configuration](https://github.com/nodejs/node/blob/master/BUILDING.md#official-binary-platforms-and-toolchains)\n\n### Windows\n\n- [Visual C++ Redistributable](https://www.microsoft.com/en-US/download/details.aspx?id=40784) is required for runtime. The version is given in [SAP Note 2573790 - Installation, Support and Availability of the SAP NetWeaver RFC Library 7.50](https://launchpad.support.sap.com/#/notes/2573790)\n\n- Build toolchain requires [Microsoft C++ Build Tools](https://aka.ms/buildtools), the latest version reccomended\n\n### macOS\n\n- Remote paths must be set in SAP NWRFC SDK for macOS: [documentation](http://sap.github.io/PyRFC/install.html#macos)\n\n- When the node-rfc is started for the first time, the popups come-up for each NWRFC SDK library, to confirm it should be opened. If SDK is installed in admin folder, the node-rfc app shall be that first time started with admin privileges, eg. `sudo -E`\n\n## Download and Installation\n\nMore info: **[Installation](doc/installation.md)**\n\n:exclamation: The build from source requires Node.js release with minimum N-API version given in `package.json` property \"napi_versions\": [Node-API version matrix](https://nodejs.org/api/n-api.html#node-api-version-matrix).\n\nAfter the SAP NW RFC SDK is installed on your system, the `node-rfc` can be installed from npm:\n\n```shell\nnpm install node-rfc\n```\n\nAlternatively, when the `node-rfc` package is not provided for your platform for example, the package shall be built from source. This installation method is highly recommended on Linux platforms:\n\n```shell\ngit clone https://github.com/SAP/node-rfc.git\ncd node-rfc\nnpm install\nnpm run addon # rebuild native addon\nnpm run ts    # rebuild typescript wrapper\n```\n\n## Getting started\n\nSee [Usage](doc/usage.md) and [API](doc/api.md), also [SAP NWRFC SDK 7.50 Programming Guide](https://support.sap.com/content/dam/support/en_us/library/ssp/products/connectors/nwrfcsdk/NW_RFC_750_ProgrammingGuide.pdf)\n\nIn order to call remote enabled ABAP function module, we need to create a `node-rfc` client instance with valid logon credentials, connect to SAP ABAP NetWeaver system and then invoke a remote enabled ABAP function module from nodejs. Async example below shows basic principles and you can check the documentationand unit tests for more examles.\n\nAdd your ABAP system destintion to **sapnwrfc.ini** file in your working directory:\n\n```ini\nDEST=MME\nUSER=demo\nPASSWD=welcome\nASHOST=myhost\nSYSNR=00\nCLIENT=620\nLANG=EN\n```\n\nConnection parameters are documented in `sapnwrfc.ini` file, located in the _SAP NWRFC SDK_ `demo` folder. Check also section `4.1.2 Using sapnwrfc.ini` of [SAP NWRFC SDK 7.50 Programming Guide](https://support.sap.com/content/dam/support/en_us/library/ssp/products/connectors/nwrfcsdk/NW_RFC_750_ProgrammingGuide.pdf)\n\nCall the ABAP RFM. When in doubt about RFM parameters' structure try `abap call` CLI tool of [SAP/fundamental-tools](https://github.com/SAP/fundamental-tools/tree/main/abap-api-tools)\n\n### Direct client\n\n```javascript\nconst noderfc = require(\"node-rfc\");\n\nconst client = new noderfc.Client({ dest: \"MME\" });\n\n(async () =\u003e {\n    try {\n        // unlike the connection acquired from pool,\n        // the direct client connection is initially closed\n        await client.open();\n\n        // invoke ABAP function module, passing structure and table parameters\n\n        // ABAP structure\n        const abap_structure = {\n            RFCINT4: 345,\n            RFCFLOAT: 1.23456789,\n            RFCCHAR4: \"ABCD\",\n            RFCDATE: \"20180625\", // ABAP date format\n            // or RFCDATE: new Date('2018-06-25'), // as JavaScript Date object, with clientOption \"date\"\n        };\n        // ABAP table\n        let abap_table = [abap_structure];\n\n        const result = await client.call(\"STFC_STRUCTURE\", {\n            IMPORTSTRUCT: abap_structure,\n            RFCTABLE: abap_table,\n        });\n\n        // check the result\n        console.log(result);\n    } catch (err) {\n        // connection and invocation errors\n        console.error(err);\n    }\n})();\n```\n\n### Managed client\n\n```javascript\nconst noderfc = require(\"node-rfc\");\n\nconst pool = new noderfc.Pool({ connectionParameters: { dest: \"MME\" } });\n\n(async () =\u003e {\n    try {\n        // get a client connection instance\n        const client = await pool.acquire();\n\n        // invoke ABAP function module, passing structure and table parameters\n\n        // ABAP structure\n        const abap_structure = {\n            RFCINT4: 345,\n            RFCFLOAT: 1.23456789,\n            RFCCHAR4: \"ABCD\",\n            RFCDATE: \"20180625\", // ABAP date format\n            // or RFCDATE: new Date('2018-06-25'), // as JavaScript Date object, with clientOption \"date\"\n        };\n        // ABAP table\n        let abap_table = [abap_structure];\n\n        const result = await client.call(\"STFC_STRUCTURE\", {\n            IMPORTSTRUCT: abap_structure,\n            RFCTABLE: abap_table,\n        });\n\n        // check the result\n        console.log(result);\n    } catch (err) {\n        // connection and invocation errors\n        console.error(err);\n    }\n})();\n```\n\nFinally, the connection is closed automatically when the instance is deleted by the garbage collector or by explicitly calling the `client.close()` method of the direct client, or `client.release()` or `pool.release()` for the managed client.\n\n\u003ca name=\"resources\"\u003e\u003c/a\u003e\n\n## More resource and info about ABAP Connectors and RFC Communication\n\nHighly reccomended series of three insightful articles about RFC communication and SAP NW RFC Library, published in the SAP Professional Journal (SPJ):\n\n- **[Part I RFC Client Programming](https://wiki.scn.sap.com/wiki/x/zz27Gg)**\n- **[Part II RFC Server Programming](https://wiki.scn.sap.com/wiki/x/9z27Gg)**\n- **[Part III Advanced Topics](https://wiki.scn.sap.com/wiki/x/FD67Gg)**\n\nand more:\n\n- **[SAP NWRFC SDK 7.50 Programming Guide](https://support.sap.com/content/dam/support/en_us/library/ssp/products/connectors/nwrfcsdk/NW_RFC_750_ProgrammingGuide.pdf)**\n- **[ABAP Connectors](https://support.sap.com/en/product/connectors.html)**\n- **[SAP NWRFC SDK](https://support.sap.com/en/product/connectors/nwrfcsdk.html)**\n- **[node-addon-api](https://github.com/nodejs/node-addon-api)**\n\n## How to obtain support\n\nIf you encounter an issue or have a feature request, you can create a [ticket](https://github.com/SAP/node-rfc/issues).\n\nCheck out the SCN Forum (search for \"node-rfc\") and stackoverflow (use the tag \"node-rfc\"), to discuss code-related problems and questions.\n\n## Contributing\n\nWe appreciate contributions from the community to **node-rfc**!\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for more details on our philosophy around extending this module.\n\n## Code of Conduct\n\nSee [Code of Conduct](./CODE_OF_CONDUCT.md)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSAP-archive%2Fnode-rfc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FSAP-archive%2Fnode-rfc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSAP-archive%2Fnode-rfc/lists"}