The package is ported to N-API, a ABI stable C interface provided by Node.js.
Only critical fixes will be provided for Nan based version.
Please continue using the new N-API version, as a prerelease, considering minor incompatible changes.
Asynchronous, non-blocking SAP NetWeawer RFC SDK client bindings for Node.js.
- Based on the latest nodejs N-API standard
- Stateless and stateful connections (multiple function calls in the same ABAP session (same context))
- Async/await, promise and callback API
- Sequential and parallel calls, using one or more clients
- Automatic conversion between JavaScript and ABAP datatypes
- Decimal and Date objects support
- Connection pool
- Extensive unit tests
SAP NW RFC SDK C++ binaries must be downloaded (SAP partner or customer account is required) and locally installed. More information on SAP NW RFC SDK section on SAP Support Portal.
SAP NW RFC Library is fully backwards compatible, supporting all NetWeaver systems, from today S4, down to R/3 release 4.0B. Using the latest version is reccomended.
Compiled binaries are provided for active nodejs LTS releases, for 64 bit Windows 7.1 and Ubuntu 16.04 Linux platforms.
Build from source is required on other platforms, supported both by SAP and by nodejs.
Note: the module must be installed before use.
In order to call remote enabled ABAP function module, we need to create a client with valid logon credentials, connect to SAP ABAP NetWeaver system and then invoke a remote enabled ABAP function module from nodejs. The client can be used for one or more subsequent RFC calls and for more examples check unit tests.
Callback API example below shows basic principles. See also:
-
node-rfc documentation, complementing SAP NW RFC Library programming guide and documentation
'use strict';
const rfcClient = require('node-rfc').Client;
// ABAP system RFC connection parameters
const abapSystem = {
user: 'demo',
passwd: 'welcome',
ashost: '10.68.104.164',
sysnr: '00',
client: '620',
lang: 'EN',
};
// create new client
const client = new rfcClient(abapSystem);
// echo SAP NW RFC SDK and nodejs/RFC binding version
console.log('Client version: ', client.version);
// open connection
client.connect(function(err) {
if (err) {
// check for login/connection errors
return console.error('could not connect to server', err);
}
// invoke ABAP function module, passing structure and table parameters
// ABAP structure
const structure = {
RFCINT4: 345,
RFCFLOAT: 1.23456789,
// or RFCFLOAT: require('decimal.js')('1.23456789'), // as Decimal object
RFCCHAR4: 'ABCD',
RFCDATE: '20180625', // in ABAP date format
// or RFCDATE: new Date('2018-06-25'), // as JavaScript Date object
};
// ABAP table
let table = [structure];
client.invoke('STFC_STRUCTURE', { IMPORTSTRUCT: structure, RFCTABLE: table }, function(err, res) {
if (err) {
return console.error('Error invoking STFC_STRUCTURE:', err);
}
console.log('STFC_STRUCTURE call result:', res);
});
});
Finally, the connection is closed automatically when the instance is deleted by the garbage collector or by explicitly calling the client.close()
method on the client instance.
From npm:
npm install node-rfc@next
Build from the latest source:
git clone -b napi https://github.com/SAP/node-rfc.git
cd node-rfc
npm install
node-pre-gyp configure build
# set connection properties in test/abapSystem
npm run test
Nan based version:
npm install node-rfc
- https://support.sap.com/connectors
- https://wiki.scn.sap.com/wiki/display/ABAPConn/ABAP+Connectivity+-+RFC
- SAP HANA Cloud Connector
Developer resources: