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 license

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.

Docker

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

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.

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.

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.1.tar.gz (336.9 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pyrfc-3.1-cp311-cp311-win_amd64.whl (849.9 kB view details)

Uploaded CPython 3.11Windows x86-64

pyrfc-3.1-cp311-cp311-macosx_13_0_x86_64.whl (257.4 kB view details)

Uploaded CPython 3.11macOS 13.0+ x86-64

pyrfc-3.1-cp311-cp311-macosx_13_0_arm64.whl (245.4 kB view details)

Uploaded CPython 3.11macOS 13.0+ ARM64

pyrfc-3.1-cp310-cp310-win_amd64.whl (823.7 kB view details)

Uploaded CPython 3.10Windows x86-64

pyrfc-3.1-cp310-cp310-macosx_13_0_x86_64.whl (257.1 kB view details)

Uploaded CPython 3.10macOS 13.0+ x86-64

pyrfc-3.1-cp310-cp310-macosx_13_0_arm64.whl (245.9 kB view details)

Uploaded CPython 3.10macOS 13.0+ ARM64

pyrfc-3.1-cp39-cp39-win_amd64.whl (828.3 kB view details)

Uploaded CPython 3.9Windows x86-64

pyrfc-3.1-cp39-cp39-macosx_13_0_arm64.whl (246.3 kB view details)

Uploaded CPython 3.9macOS 13.0+ ARM64

pyrfc-3.1-cp39-cp39-macosx_11_0_x86_64.whl (257.9 kB view details)

Uploaded CPython 3.9macOS 11.0+ x86-64

pyrfc-3.1-cp38-cp38-win_amd64.whl (828.8 kB view details)

Uploaded CPython 3.8Windows x86-64

pyrfc-3.1-cp38-cp38-macosx_13_0_x86_64.whl (257.2 kB view details)

Uploaded CPython 3.8macOS 13.0+ x86-64

pyrfc-3.1-cp38-cp38-macosx_13_0_arm64.whl (245.6 kB view details)

Uploaded CPython 3.8macOS 13.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for pyrfc-3.1.tar.gz
Algorithm Hash digest
SHA256 ba9fb8705214539faec329db56e0475df9a864ece3234d34dd101085efa9b98a
MD5 77d39158b9a9f98278183416fa8f474b
BLAKE2b-256 f9ad4a7077fa00ab934cfce91082153e71b34480ff735731094f5ee87ef33d52

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for pyrfc-3.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 6809cd0577ea2f8231c3185be3a776d8562eeefaba0b642841fe09f93e4b1e66
MD5 a97cbe92480e65a47a39c904fcd98fca
BLAKE2b-256 467490466586949a0b9e0e92759bbedeaadfcf7dcd69ca4ae0bb178cb6c161a2

See more details on using hashes here.

File details

Details for the file pyrfc-3.1-cp311-cp311-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for pyrfc-3.1-cp311-cp311-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 69a16c7334df0ba0b20947b8d5c9fdb659ad948cd2c2f6c70aa8ef8e8ede369e
MD5 5dc71067c5960ede4348e4353dc9b369
BLAKE2b-256 35ff7a056116d751401d7f6f418cedb219adcaed69560f382627928baccb0148

See more details on using hashes here.

File details

Details for the file pyrfc-3.1-cp311-cp311-macosx_13_0_arm64.whl.

File metadata

  • Download URL: pyrfc-3.1-cp311-cp311-macosx_13_0_arm64.whl
  • Upload date:
  • Size: 245.4 kB
  • Tags: CPython 3.11, macOS 13.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for pyrfc-3.1-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 66bd9ee7d2051cb65a40de672888f3e545753a2f1ce5c0c53417e9e2fe83ef6a
MD5 eaadbdba126b6c7240fe3b8f0fdb79e4
BLAKE2b-256 3ca3fc8cd5d7b195f4f80eed5c9bbc7005c80261b62ca3723041cf0d9b1a153d

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for pyrfc-3.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 1492065164f0cbfd5e8dbd1e8f9df2b85ecb60de317ea401e6d240e490eaf895
MD5 7155d2d1186402b254bfce72c953ea48
BLAKE2b-256 30433e4fd59503790f2eabb6a2f1198d502e627bf06636199a07f2a64b3c434d

See more details on using hashes here.

File details

Details for the file pyrfc-3.1-cp310-cp310-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for pyrfc-3.1-cp310-cp310-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 b15a96ce995e32c6b5097fbeb629e981a43e13053fbee03c9e420829c801054f
MD5 e3891e49e68614581805e3efdfc02141
BLAKE2b-256 eab3fa0499410002da7ef8dd583b8df2191ec58e1f4e446510827d95e2a25ef2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyrfc-3.1-cp310-cp310-macosx_13_0_arm64.whl
  • Upload date:
  • Size: 245.9 kB
  • Tags: CPython 3.10, macOS 13.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for pyrfc-3.1-cp310-cp310-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 dfbe74094bb9583a7d5f806ed65ef2cb0d6c4d4135f27c27c88e276c38813f23
MD5 d516a3e68aa5c98cfa26332842b8252f
BLAKE2b-256 8e76bb11f0b1c22aa348f05ac343f6bdd3e4cd1c0313d11317af218bbf27c420

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for pyrfc-3.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 8c285cd78d4f83bcea1d9dc7a8bade86780240ce0a4a21715ad84ce298e5d930
MD5 eb2b8f0b2b6f6c54a7aaccdbffe8f169
BLAKE2b-256 3b132e0c26dd618b6142d3a312894640b71d63251cd280a191309e2507b8b021

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyrfc-3.1-cp39-cp39-macosx_13_0_arm64.whl
  • Upload date:
  • Size: 246.3 kB
  • Tags: CPython 3.9, macOS 13.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for pyrfc-3.1-cp39-cp39-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 9d7b9435cc40dd1674cc5f9bac22b7af49f368d55610e216600bc35a0ca746a9
MD5 851d176134a1ba70de1605da52f04ecb
BLAKE2b-256 15417de1584b76a0de2fcb1c53138e260bfc841caa449e56716bd2da233f90fa

See more details on using hashes here.

File details

Details for the file pyrfc-3.1-cp39-cp39-macosx_11_0_x86_64.whl.

File metadata

  • Download URL: pyrfc-3.1-cp39-cp39-macosx_11_0_x86_64.whl
  • Upload date:
  • Size: 257.9 kB
  • Tags: CPython 3.9, macOS 11.0+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for pyrfc-3.1-cp39-cp39-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 9f55cda9768f584feb781fba7842d00b419d6e7d6008f31b2413d90a10efa7b5
MD5 122ee795f5dd390ca4b1b082c8baef37
BLAKE2b-256 7f180fe6baddd845ca3dacb3f4ee135d4d5347b5dba68a830b7fdca2d9abc219

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for pyrfc-3.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 a66a9f4bf65fe7969dd2a53a01ffbd09a3a2cc7281e6c4979325ef696d436eb1
MD5 4b48d041498ed3dec5d579918f1efa61
BLAKE2b-256 e336578d61240e72d589ab030a2f4233fbf4096564cbd81bf21a6908c6159320

See more details on using hashes here.

File details

Details for the file pyrfc-3.1-cp38-cp38-macosx_13_0_x86_64.whl.

File metadata

  • Download URL: pyrfc-3.1-cp38-cp38-macosx_13_0_x86_64.whl
  • Upload date:
  • Size: 257.2 kB
  • Tags: CPython 3.8, macOS 13.0+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for pyrfc-3.1-cp38-cp38-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 d8b2bb1d0043419f905594c2185a7d21d6b27b18603cca69f9da4295393b04f8
MD5 00178ada87de66eda739eb9e69c520b7
BLAKE2b-256 3d533eb320ac25d5ff826a869df51fc9a807a3f758746a346988a4761f6a5d07

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyrfc-3.1-cp38-cp38-macosx_13_0_arm64.whl
  • Upload date:
  • Size: 245.6 kB
  • Tags: CPython 3.8, macOS 13.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for pyrfc-3.1-cp38-cp38-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 10880bb3692657412b5a581307ab3b4aad75303ed4907281c56c59628a56711d
MD5 092c0c02d48fcbb57ec2bff3395c0b02
BLAKE2b-256 63f33e930b08682dde89758e05feff05b630b4026a10f1f510659056f2986596

See more details on using hashes here.

Supported by

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