Git Product home page Git Product logo

node-rfc's Introduction

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

NPM

license N-API v3 Badge release downloads dpw

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
  • Sequential and parallel calls, using one or more clients
  • Automatic conversion between JavaScript and ABAP datatypes
  • Buffer, Decimal and Date objects support
  • Connection pool
  • Extensive unit tests

Supported platforms

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 the SAP NW RFC SDK is fully backwards compatible, supporting all NetWeaver systems, from today S4, down to R/3 release 4.6C.

  • The build from source requires CMake

Windows

Visual C++ Redistributable for Visual Studio 2015, or newer, must be installed, per SAP Note 1375494 - SAP system does not start after applying SAP kernel patch.

macOS

sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setstealthmode off

Installation

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

yarn add node-rfc
npm install node-rfc

Alternatively, or if the node-rfc package not provided for your platform, buld the package from the latest source and install:

git clone -b https://github.com/SAP/node-rfc.git
cd node-rfc
npm install
# set connection properties in test/abapSystem
npm test

Getting started

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.

Connection parameters for remote ABAP systems are documented in sapnwrfc.ini file, located in the SAP NWRFC SDK demo folder

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:

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

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.

License

Copyright (c) 2013 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.

node-rfc's People

Contributors

bsrdjan avatar io-pa avatar spencer-uk avatar fujifish avatar n8-i avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.