All Projects → SAP → Node Rfc

SAP / Node Rfc

Licence: apache-2.0
Asynchronous, non-blocking SAP NW RFC SDK bindings for Node.js

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Node Rfc

Http Core
Core HTTP Specifications
Stars: ✭ 165 (-13.16%)
Mutual labels:  rfc
Panda
Panda is an asynchronous render and layout framework which can be used to achieve high performance tableview.
Stars: ✭ 177 (-6.84%)
Mutual labels:  asynchronous
Trace
Creates super long stack traces
Stars: ✭ 183 (-3.68%)
Mutual labels:  asynchronous
Http Cache Semantics
RFC 7234 in JavaScript. Parses HTTP headers to correctly compute cacheability of responses, even in complex cases
Stars: ✭ 169 (-11.05%)
Mutual labels:  rfc
Netjson
NetJSON is a data interchange format for encoding the basic building blocks of networks.
Stars: ✭ 171 (-10%)
Mutual labels:  rfc
Mlua
High level Lua 5.4/5.3/5.2/5.1 (including LuaJIT) bindings to Rust with async/await support
Stars: ✭ 176 (-7.37%)
Mutual labels:  asynchronous
Metasync
Asynchronous Programming Library for JavaScript & Node.js
Stars: ✭ 164 (-13.68%)
Mutual labels:  asynchronous
Aioquant
Asynchronous event I/O driven quantitative trading framework.
Stars: ✭ 188 (-1.05%)
Mutual labels:  asynchronous
P
The P programming language.
Stars: ✭ 2,309 (+1115.26%)
Mutual labels:  asynchronous
Bastion
Highly-available Distributed Fault-tolerant Runtime
Stars: ✭ 2,333 (+1127.89%)
Mutual labels:  asynchronous
Vertx Blueprint Todo Backend
Vert.x Blueprint Project - A reactive todo-backend implementation using Vert.x and various persistence
Stars: ✭ 169 (-11.05%)
Mutual labels:  asynchronous
Thenextquant
Asynchronous driven quantitative trading framework.
Stars: ✭ 172 (-9.47%)
Mutual labels:  asynchronous
Agkozak Zsh Prompt
A fast, asynchronous ZSH prompt with color ASCII indicators of Git, exit, SSH, virtual environment, and vi mode status. Framework-agnostic and customizable.
Stars: ✭ 182 (-4.21%)
Mutual labels:  asynchronous
Rrule
JavaScript library for working with recurrence rules for calendar dates as defined in the iCalendar RFC and more.
Stars: ✭ 2,249 (+1083.68%)
Mutual labels:  rfc
Rfc
📄 Read RFCs from the command-line
Stars: ✭ 185 (-2.63%)
Mutual labels:  rfc
Lear
Linux Engine for Asset Retrieval - speed-profiled C HTTP server
Stars: ✭ 165 (-13.16%)
Mutual labels:  asynchronous
Grab
Web Scraping Framework
Stars: ✭ 2,147 (+1030%)
Mutual labels:  asynchronous
Play Ws
Standalone Play WS, an async HTTP client with fluent API
Stars: ✭ 190 (+0%)
Mutual labels:  asynchronous
Iguazu
✨ Iguazu is a simple Redux-powered Async Query engine
Stars: ✭ 186 (-2.11%)
Mutual labels:  asynchronous
Asyncorm
Fully Async ORM inspired in django's
Stars: ✭ 182 (-4.21%)
Mutual labels:  asynchronous

node-rfc

Asynchronous, non-blocking SAP NetWeaver RFC SDK client bindings for Node.js, providing convenient ABAP business logic consumption from Node.js.

NPM

license N-API v6 Badge release downloads dpm REUSE status CII Best Practices

Key features

  • Based on N-API standard
  • Stateless and stateful connections (multiple function calls in the same ABAP session (same context))
  • Async/await, promise and callback API
  • ECMAScript, TypeScript
  • Sequential and parallel calls, using one or more clients
  • Automatic conversion between NodeJS 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

Content

Supported platforms

Other platforms and frameworks:

Prerequisites

All platforms

  • SAP NW RFC SDK C++ binaries must be downloaded (SAP partner or customer account required) and locally installed (installation instructions. More information on SAP NW RFC SDK section on SAP Support Portal. 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.

  • Build toolchain requires CMake

  • Build from source on older Linux systems, may require uchar.h file, attached to SAP OSS Note 2573953, to be copied to SAP NW RFC SDK include directory.

Windows

macOS

sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setstealthmode off
  • 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

Installation

More info: Installation

❗️ The build from source requires NodeJS release with minimum N-API version given in package.json property "napi_versions": NodeJS/N-API version matrix.

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

npm install node-rfc

Alternatively, when the node-rfc package is not provided for your platform for example, you can build the package from source:

git clone --single-branch https://github.com/SAP/node-rfc.git
cd node-rfc
npm install
npm run addon # rebuild native addon
npm run ts    # rebuild typescript wrapper

Getting started

More info: Usage and API

In 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.

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

DEST=MME
USER=demo
PASSWD=welcome
ASHOST=myhost
SYSNR=00
CLIENT=620
LANG=EN

Call the ABAP RFM. When in doubt about RFM parameters' structure, use rfmcall:

const noderfc = require("node-rfc");

const pool = new noderfc.Pool({ connectionParameters: { dest: "MME" } });

(async () => {
    try {
        // get a client connection instance
        const client = await pool.acquire();

        // invoke ABAP function module, passing structure and table parameters

        // ABAP structure
        const abap_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 table
        let abap_table = [abap_structure];

        const result = await client.call("STFC_STRUCTURE", {
            IMPORTSTRUCT: abap_structure,
            RFCTABLE: abap_table,
        });

        // check the result
        console.log(result);
    } catch (err) {
        // connection and invocation errors
        console.error(err);
    }
})();

Finally, 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.

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:

Known Issues

How to obtain support

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

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 to node-rfc! See CONTRIBUTING.md for more details on our philosophy around extending this module.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].