All Projects → SAP → Pyrfc

SAP / Pyrfc

Licence: apache-2.0
Asynchronous, non-blocking SAP NW RFC SDK bindings for Python

Programming Languages

python
139335 projects - #7 most used programming language

Labels

Projects that are alternatives of or similar to Pyrfc

Netjson
NetJSON is a data interchange format for encoding the basic building blocks of networks.
Stars: ✭ 171 (-48.02%)
Mutual labels:  rfc
NwRfcNet
An easy way of making SAP RFC calls from .NET Core
Stars: ✭ 83 (-74.77%)
Mutual labels:  rfc
rfc-bibtex
A command line tool that creates bibtex entries for IETF RFCs and Internet Drafts.
Stars: ✭ 43 (-86.93%)
Mutual labels:  rfc
Node Rfc
Asynchronous, non-blocking SAP NW RFC SDK bindings for Node.js
Stars: ✭ 190 (-42.25%)
Mutual labels:  rfc
saslprep
SASLprep: Stringprep Profile for User Names and Passwords.
Stars: ✭ 17 (-94.83%)
Mutual labels:  rfc
net-EmailAddress
Multiple implementations on email address validation.
Stars: ✭ 12 (-96.35%)
Mutual labels:  rfc
Rrule
JavaScript library for working with recurrence rules for calendar dates as defined in the iCalendar RFC and more.
Stars: ✭ 2,249 (+583.59%)
Mutual labels:  rfc
httoop
HTTOOP - a fully object oriented HTTP protocol library written in python
Stars: ✭ 15 (-95.44%)
Mutual labels:  rfc
check-sieve
Syntax checker for mail sieves.
Stars: ✭ 23 (-93.01%)
Mutual labels:  rfc
ip
Immutable value object for IPv4 and IPv6 addresses, including helper methods and Doctrine support.
Stars: ✭ 212 (-35.56%)
Mutual labels:  rfc
Cacheable Request
Wrap native HTTP requests with RFC compliant cache support
Stars: ✭ 218 (-33.74%)
Mutual labels:  rfc
keylist-rfc
🔏 turning the system behind GPG Sync into an Internet standard
Stars: ✭ 15 (-95.44%)
Mutual labels:  rfc
asciidoctor-rfc
AsciiRFC: an AsciiDoc/asciidoctor backend to produce RFC XML v3 (RFC 7991) and v2 (RFC 7749)
Stars: ✭ 14 (-95.74%)
Mutual labels:  rfc
Rfc
📄 Read RFCs from the command-line
Stars: ✭ 185 (-43.77%)
Mutual labels:  rfc
OpenPGP
A C++ Implementation of RFC 4880
Stars: ✭ 87 (-73.56%)
Mutual labels:  rfc
Http Cache Semantics
RFC 7234 in JavaScript. Parses HTTP headers to correctly compute cacheability of responses, even in complex cases
Stars: ✭ 169 (-48.63%)
Mutual labels:  rfc
forge
ISC Forge is an open source DHCP conformance validation framework, primarily used for testing ISC Kea.
Stars: ✭ 26 (-92.1%)
Mutual labels:  rfc
2119
RFC 2119 interpretations in other languages
Stars: ✭ 14 (-95.74%)
Mutual labels:  rfc
rfc.fyi
Browseable, searchable RFC index
Stars: ✭ 79 (-75.99%)
Mutual labels:  rfc
rfcs
An open process for designing substantial changes to Concourse.
Stars: ✭ 39 (-88.15%)
Mutual labels:  rfc

PyRFC

Asynchronous, non-blocking SAP NetWeawer RFC SDK bindings for Python.

license PyPI - Wheel PyPI - Version PyPI - Python Version PyPI - Downloads REUSE status CII Best Practices

Features

  • Client, Throughput and Server bindings
  • Automatic conversion between Python and ABAP datatypes
  • Stateless and stateful connections (multiple function calls in the same ABAP session / same context)
  • Sequential and parallel calls, using one or more clients

Supported platforms

  • Python 3

  • Windows 10 and macOS >= 10.15 supported by pre-built wheels and build from source installation

  • Linux wheels are supported by build from source installation only

  • Prebuilt Centos wheels are attached to the latest release on GitHub

  • Pre-built portable Linux wheels

    • are not supported, neither issues related to portable Linux wheels

    • ❗️ must not be distributed with embedded SAP NWRFC SDK binaries, only private use permitted

  • Platforms supported by SAP NWRFC SDK can be supported by build from source

Prerequisites

All platforms

  • SAP NWRFC SDK 7.50 PL3 or later must be downloaded (SAP partner or customer account required) and locally installed

    • Using the latest version is recommended as SAP NWRFC SDK is fully backwards compatible, supporting all NetWeaver systems, from today S4, down to R/3 release 4.6C.
    • SAP NWRFC SDK overview and release notes
  • Build from source on older Linux systems, may require uchar.h file, attached to SAP OSS Note 2573953, to be copied to SAP NWRFC SDK include directory

Windows

❗️ Due to a change introduced with Python 3.8 for Windows, PATH directories are no longer searched for DLL. The SAP NWRFC SDK lib path is no longer required on PATH, for Python >= 3.8.

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

SPJ articles

Highly recommended reading about RFC communication and SAP NW RFC Library, published in the SAP Professional Journal (SPJ)

Installation

pip install pynwrfc

Cython is required on Linux platforms, for the the default build from source installation method.

Build from source can be also requested on Windows and Darwin platforms:

pip install pynwrfc --no-binary :all:
# or
PYRFC_BUILD_CYTHON=yes pip install pynwrfc --no-binary :all:

Alternative build from source installation:

git clone https://github.com/SAP/PyRFC.git
cd PyRFC
python setup.py bdist_wheel
pip install --upgrade --no-index --find-links=dist pynwrfc

See also the pyrfc documentation, complementing SAP NWRFC SDK documentation.

Getting started

Note: The package must be installed before use.

Open Connection

In order to call remote enabled ABAP function module (ABAP RFM), first a connection must be opened.

from pyrfc import Connection
conn = Connection(ashost='10.0.0.1', sysnr='00', client='100', user='me', passwd='secret')

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

Call ABAP function modules

Using an open connection, remote function modules (RFM) can be invoked. More info in pyrfc documentation.

# ABAP variables are mapped to Python variables
result = conn.call('STFC_CONNECTION', REQUTEXT=u'Hello SAP!')
print (result)
{u'ECHOTEXT': u'Hello SAP!',
 u'RESPTEXT': u'SAP R/3 Rel. 702   Sysid: ABC   Date: 20121001   Time: 134524   Logon_Data: 100/ME/E'}

# ABAP structures are mapped to Python dictionaries
IMPORTSTRUCT = { "RFCFLOAT": 1.23456789, "RFCCHAR1": "A" }

# ABAP tables are mapped to Python lists, of dictionaries representing ABAP tables' rows
IMPORTTABLE = []

result = conn.call("STFC_STRUCTURE", IMPORTSTRUCT=IMPORTSTRUCT, RFCTABLE=IMPORTTABLE)

print result["ECHOSTRUCT"]
{ "RFCFLOAT": 1.23456789, "RFCCHAR1": "A" ...}

print result["RFCTABLE"]
[{ "RFCFLOAT": 1.23456789, "RFCCHAR1": "A" ...}]

Finally, the connection is closed automatically when the instance is deleted by the garbage collector. As this may take some time, we may either call the close() method explicitly or use the connection as a context manager:

with Connection(user='me', ...) as conn:
    conn.call(...)
# connection automatically closed here

Alternatively, connection parameters can be provided as a dictionary:

def get_connection(conn_params):
    """Get connection"""
    print 'Connecting ...', conn_params['ashost']
    return Connection(**conn_param)

from pyrfc import Connection

abap_system = {
    'user'      : 'me',
    'passwd'    : 'secret',
    'ashost'    : '10.0.0.1',
    'saprouter' : '/H/111.22.33.44/S/3299/W/e5ngxs/H/555.66.777.888/H/',
    'sysnr'     : '00',
    'client'    : '100',
    'trace'     : '3', #optional, in case you want to trace
    'lang'      : 'EN'
}

conn = get_connection(**abap_system)
Connecting ... 10.0.0.1

conn.alive
True

See also the pyrfc documentation, complementing SAP NWRFC SDK documentation.

How to obtain support

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

Check out the SAP Community (search for "pyrfc") and stackoverflow (use the tag pyrfc), to discuss code-related problems and questions.

Contributing

We appreciate contributions from the community to PyRFC! 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].