Skip to main content

Python bindings for SAP NetWeaver RFC SDK

Reason this release was yanked:

No longer supported, see https://github.com/SAP/PyRFC/issues/372

Project description

PyRFC

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

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

Features

  • Client 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
  • Throughput monitoring

Supported platforms

Requirements

SAP NW RFC SDK 7.50 Patch Level 12

  • see SAP Note 3274546 for a list of bug fixes and enhancements made with this patch release
  • Using the latest version is recommended as SAP NWRFC SDK is fully backwards compatible, from today S4, down to R/3 release 4.6C.
  • Can be downloaded from SAP Software Download Center of the SAP Support Portal, like described at https://support.sap.com/nwrfcsdk.
  • If you are lacking the required authorization for downloading software from the SAP Service Marketplace, please follow the instructions of SAP Note 1037575 for requesting this authorization.

Linux

PyRFC is using source distribution (sdist) installation on Linux systems and Cython is required on Linux system to build the PyRFC package from source. See Installing Cython

Windows

macOS

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

  • When the PyRFC is started for the first time, the popups may come-up for each NWRFC SDK library, to confirm the usage. If SAP NW RFC SDK is installed in admin folder, the app shall be first time started with admin privileges, eg. sudo -E

Docker

Download and installation

pip install pyrfc

On Windows and macOS platforms pre-built binary wheel is installed, without local compilation. On Linux platform the package is locally built from source distribution.

Build from source distribution can be requested also on other platforms:

pip install --no-binary pyrfc pyrfc
# or
pip install https://files.pythonhosted.org/packages/.../pyrfc-3.1.0.tar.gz

Alternative build from source installation:

git clone https://github.com/SAP/PyRFC.git
cd PyRFC
# if you use tox
tox -e py311 # for Python 3.11
# or
python -m pip install .
# or
python -m build --wheel --sdist --outdir dist
# or
PYRFC_BUILD_CYTHON=yes python -m build --wheel --sdist --outdir dist
pip install --upgrade --no-index --find-links=dist pyrfc

Run python and type from pyrfc import *. If this finishes silently, without oputput, the installation was successful.

Using virtual environments you can isolate Python/PyRFC projects, working without administrator privileges.

See also the pyrfc documentation, complementing SAP NWRFC SDKdocumentation, especially SAP NWRFC SDK 7.50 Programming Guide.

Getting started

Note: The package must be installed before use.

Call ABAP Function Module from Python

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. Check also section 4.1.2 Using sapnwrfc.ini of SAP NWRFC SDK 7.50 Programming Guide.

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 pyrfc documentation for Client Scenario

Call Python function from ABAP

# create server for ABAP system ABC
server = Server({"dest": "gateway"}, {"dest": "MME"}, {"port": 8081, "server_log": False})

# expose python function my_stfc_connection as ABAP function STFC_CONNECTION, to be called from ABAP system
server.add_function("STFC_CONNECTION", my_stfc_connection)

# start server
server.start()

# get server attributes
print("Server attributes", server.get_server_attributes())

# stop server
input("Press Enter to stop servers...")

server.stop()
print("Server stoped")

See also pyrfc documentation for Server Scenario and server example source code.

SPJ articles

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

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.

Code of Conduct

See Code of Conduct

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyrfc-3.3.1.tar.gz (354.7 kB view details)

Uploaded Source

Built Distributions

pyrfc-3.3.1-cp312-cp312-win_amd64.whl (838.2 kB view details)

Uploaded CPython 3.12 Windows x86-64

pyrfc-3.3.1-cp312-cp312-macosx_14_0_arm64.whl (229.8 kB view details)

Uploaded CPython 3.12 macOS 14.0+ ARM64

pyrfc-3.3.1-cp311-cp311-win_amd64.whl (894.9 kB view details)

Uploaded CPython 3.11 Windows x86-64

pyrfc-3.3.1-cp311-cp311-macosx_14_0_arm64.whl (237.0 kB view details)

Uploaded CPython 3.11 macOS 14.0+ ARM64

pyrfc-3.3.1-cp310-cp310-win_amd64.whl (869.2 kB view details)

Uploaded CPython 3.10 Windows x86-64

pyrfc-3.3.1-cp310-cp310-macosx_13_0_arm64.whl (236.5 kB view details)

Uploaded CPython 3.10 macOS 13.0+ ARM64

pyrfc-3.3.1-cp39-cp39-win_amd64.whl (866.8 kB view details)

Uploaded CPython 3.9 Windows x86-64

pyrfc-3.3.1-cp39-cp39-macosx_13_0_arm64.whl (236.9 kB view details)

Uploaded CPython 3.9 macOS 13.0+ ARM64

pyrfc-3.3.1-cp38-cp38-win_amd64.whl (860.8 kB view details)

Uploaded CPython 3.8 Windows x86-64

pyrfc-3.3.1-cp38-cp38-macosx_13_0_arm64.whl (235.8 kB view details)

Uploaded CPython 3.8 macOS 13.0+ ARM64

File details

Details for the file pyrfc-3.3.1.tar.gz.

File metadata

  • Download URL: pyrfc-3.3.1.tar.gz
  • Upload date:
  • Size: 354.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.1

File hashes

Hashes for pyrfc-3.3.1.tar.gz
Algorithm Hash digest
SHA256 f04eb881f5747b4a4e13150dd62e011c0abddb8f392239be76000b7b6437c7cd
MD5 6a4b393039ea946160b4f7a6c743452c
BLAKE2b-256 8eb51018f4016959299ee812db77ebc9aa7dfb6136f2f24e4471deb22fdd120a

See more details on using hashes here.

File details

Details for the file pyrfc-3.3.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: pyrfc-3.3.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 838.2 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.1

File hashes

Hashes for pyrfc-3.3.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 9bc668c47b998a8a79d89d5dbd3eaf108b87a1e4b81ba23057aba3931e50918c
MD5 ab9f9ca6c0e3468431729a7ed4da3c6b
BLAKE2b-256 1f0539579c91304efd793ea346e204d7d059e7ecdf828fdc7944714798df3abe

See more details on using hashes here.

File details

Details for the file pyrfc-3.3.1-cp312-cp312-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pyrfc-3.3.1-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 13eb9e799ac9b71a1145b7e21a667bf74b5b1092f4328961b72203f5e93dcacc
MD5 20d7b45ba9be05bd00bae957bfdb1f22
BLAKE2b-256 a7cba5fa933447f04714f1f6b4bba8ead54815085936d5c3e64b686314d4ac8f

See more details on using hashes here.

File details

Details for the file pyrfc-3.3.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pyrfc-3.3.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 894.9 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.1

File hashes

Hashes for pyrfc-3.3.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 fc8115d9a6e12c34199a6add47c57f5e875749b6a76a068f82219b5e45cf7995
MD5 fd8a4cadde4e93d4d3b2b012db24ab3f
BLAKE2b-256 39f24fb9ed37ea3fed47cc322e5cc36c3620c704e75ae85418b7e5c15b8f4db8

See more details on using hashes here.

File details

Details for the file pyrfc-3.3.1-cp311-cp311-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pyrfc-3.3.1-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 bee43ec984f3757dba355d540ea3011c82e06a324b4c382503e4856248496cb8
MD5 6f7beb3d59dd31337abfa61fc4c50606
BLAKE2b-256 961b24a92778ffb9389d26c1a1d001eb1cb074a64a97a5a76ee28a8e629fa6bc

See more details on using hashes here.

File details

Details for the file pyrfc-3.3.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: pyrfc-3.3.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 869.2 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.1

File hashes

Hashes for pyrfc-3.3.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 17b3b58055f5d50ce2e31b371ac34859300b77e9fcb764a085074532e0fce15d
MD5 8efe1258dc92b3cd58d45f0d6b43bc59
BLAKE2b-256 3a78ab8e7b244f3d1b24575a5431f5f7c7a2e440cf47691b09b1b37a65a63ec5

See more details on using hashes here.

File details

Details for the file pyrfc-3.3.1-cp310-cp310-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for pyrfc-3.3.1-cp310-cp310-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 c67955f1e5991e16678c47810fa53071a7fe4c75f3efb6a46a3bea0fb02b26a1
MD5 3de292d9ad9736ae231cee379d913696
BLAKE2b-256 34cd2c47dc589e8864e0b17d034fce57837ca20b9602450fb90c8884960ce8ad

See more details on using hashes here.

File details

Details for the file pyrfc-3.3.1-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: pyrfc-3.3.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 866.8 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.1

File hashes

Hashes for pyrfc-3.3.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 258c8ec3506c90c827d07f7c6e31c6f1cbc5a66a4d8136923b97c7ffa5457904
MD5 aed36d4eb9d562586e44cf2adc14d0d9
BLAKE2b-256 60489f2109dfa6f178e9e20142334d2404ce5375fbe51e1fadb0570867fd4c14

See more details on using hashes here.

File details

Details for the file pyrfc-3.3.1-cp39-cp39-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for pyrfc-3.3.1-cp39-cp39-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 9819e142bf66492004d7eeb70a264b438b0adaea392e98b175e0b30d4e02e62c
MD5 06c72c2d6dd1b3cf99528de34f38c25e
BLAKE2b-256 3362547b7db9f0475c540c44c1d5a3a3fedbce382ea79045c22823159cfc210e

See more details on using hashes here.

File details

Details for the file pyrfc-3.3.1-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: pyrfc-3.3.1-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 860.8 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.1

File hashes

Hashes for pyrfc-3.3.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 a041ad34ec5f7d35e86e527ec567a4e2b365706c1d894a92100935b7c1721af4
MD5 94dbd1148cdc5a80a542f2878291cf8f
BLAKE2b-256 6a11e6612cbb3257c758d736a9bca5a1b8bdc3695fdc5b37cd77d21d6c530f2b

See more details on using hashes here.

File details

Details for the file pyrfc-3.3.1-cp38-cp38-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for pyrfc-3.3.1-cp38-cp38-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 db5f48bbd15d98f7457d43670524916a5f61c422a1ae6942352694c91e57ae72
MD5 392d1960ea878451089e18cef13eb4dd
BLAKE2b-256 cd9170dc8a4d3b9762192add8a8d388c74636d9bc7a128658fcce899eb133734

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page