Skip to main content
Yanked

This release has been yanked by its maintainers, and will be ignored by installers, except when explicitly specified.
Reason given by maintainers: No longer supported, see https://github.com/SAP/PyRFC/issues/372

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

Release files for pyrfc 3.3.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pyrfc 3.3.1
File Size Uploaded
pyrfc-3.3.1.tar.gz 354.7 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for pyrfc 3.3.1
File
pyrfc-3.3.1-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
pyrfc-3.3.1-cp312-cp312-macosx_14_0_arm64.whl CPython 3.12 CPython 3.12 macOS 14.0+ ARM64 Details
pyrfc-3.3.1-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
pyrfc-3.3.1-cp311-cp311-macosx_14_0_arm64.whl CPython 3.11 CPython 3.11 macOS 14.0+ ARM64 Details
pyrfc-3.3.1-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
pyrfc-3.3.1-cp310-cp310-macosx_13_0_arm64.whl CPython 3.10 CPython 3.10 macOS 13.0+ ARM64 Details
pyrfc-3.3.1-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details
pyrfc-3.3.1-cp39-cp39-macosx_13_0_arm64.whl CPython 3.9 CPython 3.9 macOS 13.0+ ARM64 Details
pyrfc-3.3.1-cp38-cp38-win_amd64.whl CPython 3.8 CPython 3.8 Windows x86-64 Details
pyrfc-3.3.1-cp38-cp38-macosx_13_0_arm64.whl CPython 3.8 CPython 3.8 macOS 13.0+ ARM64 Details

Total release size: 5.9 MB

Release files / pyrfc-3.3.1.tar.gz

Download URL pyrfc-3.3.1.tar.gz
Size 354.7 kB
Tags Source
SHA-256 checksum
How to use checksums
f04eb881f5747b4a4e13150dd62e011c0abddb8f392239be76000b7b6437c7cd
BLAKE2b-256 checksum
How to use checksums
8eb51018f4016959299ee812db77ebc9aa7dfb6136f2f24e4471deb22fdd120a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.12.1

Release files / pyrfc-3.3.1-cp312-cp312-win_amd64.whl

Download URL pyrfc-3.3.1-cp312-cp312-win_amd64.whl
Size 838.2 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
9bc668c47b998a8a79d89d5dbd3eaf108b87a1e4b81ba23057aba3931e50918c
BLAKE2b-256 checksum
How to use checksums
1f0539579c91304efd793ea346e204d7d059e7ecdf828fdc7944714798df3abe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.12.1

Release files / pyrfc-3.3.1-cp312-cp312-macosx_14_0_arm64.whl

Download URL pyrfc-3.3.1-cp312-cp312-macosx_14_0_arm64.whl
Size 229.8 kB
Tags CPython 3.12 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
13eb9e799ac9b71a1145b7e21a667bf74b5b1092f4328961b72203f5e93dcacc
BLAKE2b-256 checksum
How to use checksums
a7cba5fa933447f04714f1f6b4bba8ead54815085936d5c3e64b686314d4ac8f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.12.1

Release files / pyrfc-3.3.1-cp311-cp311-win_amd64.whl

Download URL pyrfc-3.3.1-cp311-cp311-win_amd64.whl
Size 894.9 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
fc8115d9a6e12c34199a6add47c57f5e875749b6a76a068f82219b5e45cf7995
BLAKE2b-256 checksum
How to use checksums
39f24fb9ed37ea3fed47cc322e5cc36c3620c704e75ae85418b7e5c15b8f4db8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.12.1

Release files / pyrfc-3.3.1-cp311-cp311-macosx_14_0_arm64.whl

Download URL pyrfc-3.3.1-cp311-cp311-macosx_14_0_arm64.whl
Size 237.0 kB
Tags CPython 3.11 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
bee43ec984f3757dba355d540ea3011c82e06a324b4c382503e4856248496cb8
BLAKE2b-256 checksum
How to use checksums
961b24a92778ffb9389d26c1a1d001eb1cb074a64a97a5a76ee28a8e629fa6bc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.12.1

Release files / pyrfc-3.3.1-cp310-cp310-win_amd64.whl

Download URL pyrfc-3.3.1-cp310-cp310-win_amd64.whl
Size 869.2 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
17b3b58055f5d50ce2e31b371ac34859300b77e9fcb764a085074532e0fce15d
BLAKE2b-256 checksum
How to use checksums
3a78ab8e7b244f3d1b24575a5431f5f7c7a2e440cf47691b09b1b37a65a63ec5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.12.1

Release files / pyrfc-3.3.1-cp310-cp310-macosx_13_0_arm64.whl

Download URL pyrfc-3.3.1-cp310-cp310-macosx_13_0_arm64.whl
Size 236.5 kB
Tags CPython 3.10 macOS 13.0+ ARM64
SHA-256 checksum
How to use checksums
c67955f1e5991e16678c47810fa53071a7fe4c75f3efb6a46a3bea0fb02b26a1
BLAKE2b-256 checksum
How to use checksums
34cd2c47dc589e8864e0b17d034fce57837ca20b9602450fb90c8884960ce8ad
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.12.1

Release files / pyrfc-3.3.1-cp39-cp39-win_amd64.whl

Download URL pyrfc-3.3.1-cp39-cp39-win_amd64.whl
Size 866.8 kB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
258c8ec3506c90c827d07f7c6e31c6f1cbc5a66a4d8136923b97c7ffa5457904
BLAKE2b-256 checksum
How to use checksums
60489f2109dfa6f178e9e20142334d2404ce5375fbe51e1fadb0570867fd4c14
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.12.1

Release files / pyrfc-3.3.1-cp39-cp39-macosx_13_0_arm64.whl

Download URL pyrfc-3.3.1-cp39-cp39-macosx_13_0_arm64.whl
Size 236.9 kB
Tags CPython 3.9 macOS 13.0+ ARM64
SHA-256 checksum
How to use checksums
9819e142bf66492004d7eeb70a264b438b0adaea392e98b175e0b30d4e02e62c
BLAKE2b-256 checksum
How to use checksums
3362547b7db9f0475c540c44c1d5a3a3fedbce382ea79045c22823159cfc210e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.12.1

Release files / pyrfc-3.3.1-cp38-cp38-win_amd64.whl

Download URL pyrfc-3.3.1-cp38-cp38-win_amd64.whl
Size 860.8 kB
Tags CPython 3.8 Windows x86-64
SHA-256 checksum
How to use checksums
a041ad34ec5f7d35e86e527ec567a4e2b365706c1d894a92100935b7c1721af4
BLAKE2b-256 checksum
How to use checksums
6a11e6612cbb3257c758d736a9bca5a1b8bdc3695fdc5b37cd77d21d6c530f2b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.12.1

Release files / pyrfc-3.3.1-cp38-cp38-macosx_13_0_arm64.whl

Download URL pyrfc-3.3.1-cp38-cp38-macosx_13_0_arm64.whl
Size 235.8 kB
Tags CPython 3.8 macOS 13.0+ ARM64
SHA-256 checksum
How to use checksums
db5f48bbd15d98f7457d43670524916a5f61c422a1ae6942352694c91e57ae72
BLAKE2b-256 checksum
How to use checksums
cd9170dc8a4d3b9762192add8a8d388c74636d9bc7a128658fcce899eb133734
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.12.1

Release history Release notifications | RSS feed

This release

3.3.1 This release

11 release files

3.3

16 release files

3.2

13 release files

3.1

13 release files

3.0

13 release files

2.8.3

15 release files

2.8.2

11 release files

2.8.1

12 release files

2.8.0

11 release files

2.7.2

11 release files

2.5.1

11 release files

2.5.0

11 release files

2.4.2

9 release files

2.4.1

9 release files

2.4.0

10 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page