Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Asynchronous, non-blocking SAP NW RFC SDK bindings for Node.js

License

NotificationsYou must be signed in to change notification settings

SAP-archive/node-rfc

Repository files navigation

This public repository is no longer maintained. Please seethis issue for details.


node-rfc

Asynchronous, non-blockingSAP NetWeaver RFC SDK client and server bindings forNode.js. Direct consumption of ABAP business logic from Node.js and extending ABAP eco-system with Node.js capabilities, with automatic ABAP <-> Node.js data conversions.

node-rfc releaseNode.js enginesN-API versiondeno version supporteddpmREUSE statusCII Best Practices

Key features

  • Based onN-API standard
  • Client and Server bindings
  • Stateless and stateful connections (multiple function calls in the same ABAP session (same context))
  • Async and callback API
  • ECMAScript, TypeScript
  • Sequential and parallel calls, using one or more clients
  • Automatic conversion between Node.js and ABAP datatypes
  • Direct and managed connections (connection pool)
  • Throughput monitoring: number of calls, bytes sent/received, application/total time; SAP NWRFC SDK >= 7.53 required
  • Usage examples & code-snippets:SAP-samples/node-rfc-samples

Content

Supported platforms

Other platforms and frameworks:

Requirements

node-gyp

Build toolchain is based onnode-gyp and Python. For further details check:node-gyp#Installation

SAP NW RFC SDK 7.50 PL12

Docker

Docker container examples for Linux, Intel and ARM based Darwin:SAP/fundamental-tools/docker. SAP NWRFC SDK libraries are not included.

Linux

Windows

macOS

  • Remote paths must be set in SAP NWRFC SDK for macOS:documentation

  • 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

Download and Installation

More info:Installation

❗ The build from source requires Node.js release with minimum N-API version given inpackage.json property "napi_versions":Node-API version matrix.

After the SAP NW RFC SDK is installed on your system, thenode-rfc can be installed from npm:

npm install node-rfc

Alternatively, when thenode-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:

git clone https://github.com/SAP/node-rfc.gitcd node-rfcnpm installnpm run addon# rebuild native addonnpm run ts# rebuild typescript wrapper

Getting started

SeeUsage andAPI, alsoSAP NWRFC SDK 7.50 Programming Guide

In order to call remote enabled ABAP function module, we need to create anode-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.

Add your ABAP system destintion tosapnwrfc.ini file in your working directory:

DEST=MMEUSER=demoPASSWD=welcomeASHOST=myhostSYSNR=00CLIENT=620LANG=EN

Connection parameters are documented insapnwrfc.ini file, located in theSAP NWRFC SDKdemo folder. Check also section4.1.2 Using sapnwrfc.ini ofSAP NWRFC SDK 7.50 Programming Guide

Call the ABAP RFM. When in doubt about RFM parameters' structure tryabap call CLI tool ofSAP/fundamental-tools

Direct client

constnoderfc=require("node-rfc");constclient=newnoderfc.Client({dest:"MME"});(async()=>{try{// unlike the connection acquired from pool,// the direct client connection is initially closedawaitclient.open();// invoke ABAP function module, passing structure and table parameters// ABAP structureconstabap_structure={RFCINT4:345,RFCFLOAT:1.23456789,RFCCHAR4:"ABCD",RFCDATE:"20180625",// ABAP date format// or RFCDATE: new Date('2018-06-25'), // as JavaScript Date object, with clientOption "date"};// ABAP tableletabap_table=[abap_structure];constresult=awaitclient.call("STFC_STRUCTURE",{IMPORTSTRUCT:abap_structure,RFCTABLE:abap_table,});// check the resultconsole.log(result);}catch(err){// connection and invocation errorsconsole.error(err);}})();

Managed client

constnoderfc=require("node-rfc");constpool=newnoderfc.Pool({connectionParameters:{dest:"MME"}});(async()=>{try{// get a client connection instanceconstclient=awaitpool.acquire();// invoke ABAP function module, passing structure and table parameters// ABAP structureconstabap_structure={RFCINT4:345,RFCFLOAT:1.23456789,RFCCHAR4:"ABCD",RFCDATE:"20180625",// ABAP date format// or RFCDATE: new Date('2018-06-25'), // as JavaScript Date object, with clientOption "date"};// ABAP tableletabap_table=[abap_structure];constresult=awaitclient.call("STFC_STRUCTURE",{IMPORTSTRUCT:abap_structure,RFCTABLE:abap_table,});// check the resultconsole.log(result);}catch(err){// connection and invocation errorsconsole.error(err);}})();

Finally, the connection is closed automatically when the instance is deleted by the garbage collector or by explicitly calling theclient.close() method of the direct client, orclient.release() orpool.release() for the managed client.

More resource and info about ABAP Connectors and RFC Communication

Highly reccomended series of three insightful articles about RFC communication and SAP NW RFC Library, published in the SAP Professional Journal (SPJ):

and more:

How to obtain support

If you encounter an issue or have a feature request, you can create aticket.

Check out the SCN Forum (search for "node-rfc") and stackoverflow (use the tag "node-rfc"), to discuss code-related problems and questions.

Contributing

We appreciate contributions from the community tonode-rfc!SeeCONTRIBUTING.md for more details on our philosophy around extending this module.

Code of Conduct

SeeCode of Conduct


[8]ページ先頭

©2009-2025 Movatter.jp