Information
-
Die nachfolgende Beschreibung ist für Sie relevant, wenn Sie die PLANTA-SAP-Schnittstelle nutzen möchten, die auf Basis von PLANTA-Universal-Schnittstelle realisiert werden kann.
-
Diese Beschreibung liefert ausschließlich technische Informationen zur Kommunikation mit einem SAP-System.
-
Die Anwendersicht, der eigentliche Austausch von Daten und die darauf aufbauende fachliche Logik werden nicht behandelt. Bitte sehen Sie hierzu die Dokumentation Universal-Schnittstelle.
-
PLANTA stellt einige SAP-Standard-Schnittstellen zur Verfügung, die als Vorlage zum Aufsetzen individueller SAP-Schnittstellen verwendet werden können.
Siehe auch: Weitere Integrationen von PLANTA project
Allgemeines
Information
-
Mit dem SAP-System wird per Remote Function Call (RFC) API kommuniziert.
-
Dazu wird die SAP NetWeaver RFC Client-Bibliothek über ein Python-Modul eingebunden und angesprochen.
-
So ist der Zugang zu SAP scriptingfähig und damit höchst flexibel.
-
Einrichtung
Information
-
Mit dem Server liefert PLANTA den CPython Wrapper, der auf dem Python-Modul https://github.com/SAP/PyRFC basiert.
Das Python-Modul pyrfc ist ab Server 39.5.31 im Einsatz und ersetzt das alte Modul pysapnwrfc. Überprüfen Sie Ihre SAP-Anbindung und stellen Sie sie ggf. auf das neue Modul um.
Windows
Voraussetzungen
-
Kundenseitig wird
-
ein SAP-System mit NetWeaver-kompatibler RFC-Implementierung in Versionen 7.20P_7 oder 7.50P_6 benötigt. Empfohlen wird die Version 7.50P_6.
-
Installierte SAP RFC Client-Bibliotheken in der 64bit-x86-Version auf dem Anwendungsserver, auf dem der PLANTA-Server läuft.
-
Das SAP NetWeaver RFC SDK in der Version 7.50P_6 benötigt eine vom folgenden Paket bereitgestellte Runtime: Visual C++ Redistributable Packages for Visual Studio 2013 (msvcr120.dll). Ist die Runtime nicht installiert, können die dlls des SDKs nicht geladen werden.
-
-
Zu beachten bei der Einrichtung
-
Je nachdem, welche PLANTA-Server-Version Sie im Einsatz haben (installieren) und somit je nach Versionenkombination von Python und SAP-Libraries, muss der im PLANTA-Server bereits enthaltene Wrapper u.U. mit dem anderen Wrapper ersetzt werden. Die neuen Wrapper-Dateien finden Sie im gesonderten Verzeichnis SAP Libs for RFC Windows auf dem PLANTA-Transfer-Server. Falls notwendig, die Wrapper-Dateien namens
pyrfc.pydundpyrfc.pdbaus dem entsprechenden Unterverzeichnis nach <Server-Verzeichnis>\sap\lib kopieren.
|
|
SAP 7.20P_7 |
SAP 7.50P_6 |
|---|---|---|
|
Python 3.4.3 (bis S 39.5.26) |
Vorhandene Wrapper-Dateien sind funktional |
nicht verfügbar |
|
Python 3.6.0 (S 39.5.27 - S 39.5.29) |
Vorhandene Wrapper-Dateien müssen ersetzt werden |
Vorhandene Wrapper-Dateien müssen ersetzt werden |
|
Python 3.8.5 (ab S 39.5.30) |
Vorhandene Wrapper-Dateien müssen ersetzt werden |
Vorhandene Wrapper-Dateien sind funktional |
Vorgehensweise
-
Der Pfad zu den SAP-Bibliotheken muss in der Betriebssystems-Umgebungsvariable
PATHzur Verfügung gestellt werden.
Linux
Voraussetzungen
-
Kundenseitig wird
-
ein SAP-System mit NetWeaver-kompatibler RFC-Implementierung in Version 7.20P_7 oder 7.50P_6 benötigt.
-
Der Einsatz von 7.50P_6 verlangt auf PLANTA-Seite mind. den Server 39.5.30.
-
-
Installierte SAP RFC Client-Bibliotheken in der 64bit-x86-Version auf dem Anwendungsserver, auf dem der PLANTA-Server läuft.
-
Zu beachten bei der Einrichtung
-
Je nachdem, welche PLANTA Server-Version Sie im Einsatz haben (installieren) und somit je nach Versionenkombination von Python und SAP-Libraries, muss der im PLANTA-Server bereits enthaltene Wrapper u.U. mit dem anderen Wrapper ersetzt werden. Die neuen Wrapper-Dateien finden Sie im gesonderten Verzeichnis SAP Libs for RFC Linux auf dem PLANTA-Transfer-Server. Falls notwendig, die Wrapper-Datei namens
pyrfc.cpython-*.soaus dem entsprechenden Unterverzeichnis nach <Server-Verzeichnis>/sap/lib kopieren.
|
|
SAP 7.20P_7 |
SAP 7.50P_6 |
|---|---|---|
|
Python 3.4.3 (bis S 39.5.26) |
Vorhandene Wrapper-Dateien sind funktional |
nicht verfügbar |
|
Python 3.6.0 (S 39.5.27 - S 39.5.29) |
Vorhandene Wrapper-Dateien müssen ersetzt werden |
nicht verfügbar |
|
Python 3.8.5 (ab S 39.5.30) |
Vorhandene Wrapper-Dateien sind funktional |
Vorhandene Wrapper-Dateien sind funktional |
Vorgehensweise
-
Der Pfad zu den SAP-Bibliotheken muss in der Betriebssystems-Umgebungsvariable
LD_LIBRARY_PATHzur Verfügung gestellt werden. -
Zusätzlich muss die Betriebssystems-Umgebungsvariable
SAPNWRFC_HOMEmit <Server-Verzeichnis>/sap erstellt werden.
Container-Betrieb
Voraussetzungen
-
Das Worker-Image enthält ab Worker S 39.2.5 das Python-Modul pyrfc. Mit älteren Worker-Images bricht
import pyrfcmit der Meldung „No module named 'pyrfc'“ ab. -
Kundenseitig werden die Bibliotheken des SAP NetWeaver RFC SDK 7.50 für Linux benötigt:
libsapnwrfc.so,libsapucum.sound die ICU-Bibliotheken. Sie sind nicht Teil des Images und werden über den SAP-S-User bezogen. -
Die Worker-Pods müssen den SAP-Anwendungsserver erreichen. Dazu müssen sie seinen Hostnamen auflösen und den Gateway-Port 33<Systemnummer> per TCP erreichen, z. B. 3300 für die Systemnummer 00. Läuft die Verbindung über einen SAProuter, ist es Port 3299. Netzwerkrichtlinien und Firewalls müssen diese Verbindung freigeben.
Zu beachten bei der Einrichtung
-
Die SDK-Bibliotheken werden nur in den Worker-Pods benötigt, da RFC-Aufrufe im Worker-Prozess laufen.
-
Das Worker-Image setzt
LD_LIBRARY_PATH=/planta/dlls. Ein Wert fürLD_LIBRARY_PATHin den Helm-Werten ersetzt diese Vorgabe./planta/dllsmuss deshalb an erster Stelle stehen bleiben, sonst fehlen dem Worker seine eigenen Bibliotheken. -
Binden Sie kein Volume direkt auf
/planta/dllsein, da es die Server-Bibliotheken verdeckt. -
SAPNWRFC_HOMEwird im Container-Betrieb nicht benötigt. -
Dateien, die von Hand in einen laufenden Pod kopiert werden, gehen beim Neustart verloren.
Vorgehensweise: SDK über das Customizing-Image
-
Kopieren Sie die SDK-Bibliotheken in ein kundeneigenes Customizing-Image nach
/psc/src/sap/nwrfcsdk/lib/. Der Customizing-Job überträgt sie auf das Transfer-Volume, das jeder Worker-Pod unter/mnt/transfereinbindet.
FROM registry.planta.services/planta/customizing:<Tag>
COPY nwrfcsdk/lib/ /psc/src/sap/nwrfcsdk/lib/
-
Ergänzen Sie in den Helm-Werten den Bibliothekspfad des Workers:
worker:
env:
LD_LIBRARY_PATH: "/planta/dlls:/mnt/transfer/sap/nwrfcsdk/lib"
-
Starten Sie die Worker-Pods nach jeder Änderung am Customizing-Image neu. Ein Helm-Upgrade, das nur das Customizing-Image ändert, startet sie nicht neu.
-
Das Transfer-Volume darf im Worker-Pod nicht mit
noexeceingebunden sein. Prüfen Sie das in einem laufenden Worker-Pod mitmount | grep /mnt/transfer. Enthält die Ausgabenoexec, verwenden Sie ein abgeleitetes Worker-Image.
Vorgehensweise: abgeleitetes Worker-Image
FROM registry.planta.services/planta/worker:<Tag>
USER root
COPY nwrfcsdk/lib/ /planta/sap/nwrfcsdk/lib/
ENV LD_LIBRARY_PATH=/planta/dlls:/planta/sap/nwrfcsdk/lib
USER planta
-
Setzen Sie in diesem Fall
worker.env.LD_LIBRARY_PATHnicht in den Helm-Werten, da es dasENVdes Images überschreibt. -
Bauen Sie das Image bei jedem Worker-Update neu.
Einrichtung prüfen
-
Führen Sie in einem Makro
import pyrfcundpyrfc.get_nwrfclib_version()aus. Danach folgt ein RFC-Aufruf gegen das SAP-Testsystem. -
Fehlt
pyrfc.Connection, wurde das SDK nicht gefunden. Der Import selbst gelingt trotzdem.
Verwendung
Information
-
Das Python-Modul sapnwrfc kann in PLANTA project innerhalb beliebiger Python-Makros durch
import sapnwrfceingebunden und genutzt werden. -
Das Python-Modul pyrfc kann in PLANTA project innerhalb beliebiger Python-Makros durch
import pyrfceingebunden und genutzt werden