SAP RFC – Remote Function Calls

Seit der Einführung von SAP R/3 im Jahr 1993 werden Funktionen in SAP ABAP mit sogenannten Funktionsbausteinen gekapselt. Diese Funktionsbausteine können für den entfernten Aufruf von anderen SAP Systemen und aus anderen Programmiersprachen (Java, Microsoft .NET usw.) eingestellt werden. Die Firma SAP SE stellt hierfür RFC Bibliotheken zur Verfügung. Die RFC Bibliotheken wandeln die Input Parameter in das SAP RFC Protokoll um und ermöglichen die Verbindung zu einem SAP System. Dieses Protokoll wird übrigens auch vom SAP GUI verwendet.

SE37 RFC Function Module

Web Services in SAP

Mit dem SAP Basis Release 6.20 im Jahr 2003 wurde ein Webserver in SAP ABAP Systeme integriert. Aus dem SAP Web Application Server (SAP WAS) wurde mit nachfolgenden Releases der SAP NetWeaver Server. Damit wurde das HTTP Protokoll sowie Authentifizierungsverfahren wie HTTP Basic Authentication angeboten. Für das Mapping von XML Daten wurde eine XSLT Engine implementiert, welche auch die Zuweisung zu ABAP Variablen ermöglicht. Im Unterschied zum SAP RFC Protokoll sind hier auch SAP ausgehende Webservice Aufrufe möglich.

Performance

Das SAP RFC Protokoll ist grundsätzlich für die Verarbeitung von Eingaben durch SAP Anwender im SAP GUI vorgesehen. Eingehende Aufrufe werden von den Prozessen mit dem Typ Dialog von den Applikationsservern entgegengenommen und verarbeitet. SAP RFC Schnittstellen teilen sich somit die verfügbaren Dialog Prozesse mit den SAP GUI Anwendern. Eine Massenverarbeitung ist somit von der IT Architektur nicht vorgesehen. Das RFC Protokoll und die dazu notwendigen Konvertierungen sind wahrscheinlich auch aus vorgenanntem Grund nicht auf Performance ausgelegt.

Im Vergleich dazu zeichnet sich das HTTP Protokoll und die Umwandlung von XML nach ABAP und umgekehrt durch eine hervorragende Performance aus, da dies in der SAP Basis in C implementiert ist. Die SAP Standard Implementierung für Webservices verwendet intern weiterhin das RFC Protokoll, wodurch die Vorteile teilweise wieder verloren gehen. Für die Anbindung von SAP NetWeaver Gateway „Fiori“ Servern an SAP ERP Systeme steht seit kurzem auch eine Anbindung über HTTP zur Verfügung.

Sicherheit

Mit der Transaktion STRUST und der integrierten Security Bibliothek CommonCryptoLib stehen für Webservices verschiedene Verschlüsselungsmethoden zur Verfügung. Das SSL Protokoll sollte standardmäßig zur Verfügung stehen und kann auch für Webservices innerhalb des LAN’s eines Unternehmens problemlos eingesetzt werden.

SAP RFC Schnittstellen sind immer unverschlüsselt. Sicherheit kann nur über externe Tools wie ein VPN Tunnel erreicht werden.

Implementierung

Für SAP RFC Implementierungen ist ein SAP Funktionsbaustein-Aufruf mit Hilfe der SAP RFC Bibliothek in der gewählten Programmiersprache zu realisieren. SAP Standard Test- und Debugging Funktionen sind gegeben, aber keine Protokollierung der Datenübertragung. Eine Schwierigkeit für SAP RFC Implementierungen besteht darin, dass die Daten selbst nicht überprüft werden können und die Umwandlung der Daten in das RFC Protokoll nicht einsehbar ist. Es ergeben sich Fragestellungen wie zum Beispiel Datum, Dezimalzahlen oder Tabellentypen (Arrays) im Aufruf übergeben werden müssen.

SAP Webservice Aufruf-Implementierungen sind grundsätzlich ident zu anderen Webservice Aufrufen. Vorab muss entschieden werden, wie ein SAP Funktionsbaustein als Webservice publiziert werden soll. Die Möglichkeiten reichen hier vom SOA Manager, über den SAP Business Connector, SAP PI/XI, SAP Cloud Connector bis hin zu OData Services. Die letztgenannten Services lassen sich auch als JSON REST APIs realisieren.