Needle-Pinpointing Machine

    node-rfc
    TypeScript icon, indicating that this package has built-in type declarations

    2.6.1 • Public • Published

    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 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
    • Usage examples & code-snippets: SAP-samples/node-rfc-samples

    Content

    Supported platforms

    Other platforms and frameworks:

    Requirements

    All platforms

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

    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 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 try abap call CLI tool of SAP/fundamental-tools

    Direct client

    const noderfc = require("node-rfc");
    
    const client = new noderfc.Client({ dest: "MME" });
    
    (async () => {
        try {
            // unlike the connection acquired from pool,
            // the direct client connection is initially closed
            await client.open();
    
            // 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);
        }
    })();

    Managed client

    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.

    License

    Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file.

    Install

    npm i node-rfc

    DownloadsWeekly Downloads

    1,231

    Version

    2.6.1

    License

    Apache-2.0

    Unpacked Size

    704 kB

    Total Files

    45

    Last publish

    Collaborators

    • bsrdjan