RFC Server in SAP S/4HANA konfigurieren
RFC (Remote Function Call) ist ein von SAP bereitgestellter Mechanismus, der es erlaubt, Funktionen oder Funktionsbausteine entweder innerhalb eines SAP-Systems oder zwischen SAP- und Nicht-SAP-Systemen aufzurufen. Mittels RFC können externe Programme — als RFC-Server bezeichnet — von SAP ausgelöst werden, um ihre Funktionen auszuführen. OctoMesh kann als eine solche externe Plattform genutzt werden, um RFC-Server-Prozesse bereitzustellen, die aus SAP über eine definierte RFC-Destination aufgerufen werden können.
Grundlegender Ablauf
- Innerhalb von SAP erstellen Sie eine RFC-Destination, die auf ein externes Programm verweist (den RFC-Server in OctoMesh).
- Der RFC-Server registriert sich beim SAP Gateway mit einer zuvor definierten Program ID.
- SAP kann anschließend RFC-fähige Funktionsbausteine oder Prozeduren im externen System (OctoMesh) aufrufen.
Eine Pipeline erstellen, die einen RFC-Server ausführt
-
Erstellen oder erweitern Sie die SAP-Konfiguration in Refinery Studio im Abschnitt
General/Configuration. Typischerweise sollte die Konfiguration die folgenden Felder definieren:- Configuration Name: Der Name der Konfiguration, muss mit dem Feld
sapConfigurationin der Pipeline-Konfiguration übereinstimmen. - App Server Host: Der Host des SAP-Systems.
- System/instance Number: Die Systemnummer des SAP-Systems, z. B.
00 - System ID: Die System-ID des SAP-Systems, z. B.
S4H - Client (tenant): Die Mandantennummer des SAP-Systems, z. B.
100 - User: Der Benutzername für die Anmeldung am SAP-System.
- Password: Das Passwort für die Anmeldung am SAP-System.
Zusätzlich müssen wir die folgenden Felder definieren:
- Gateway Host: Der Host des SAP Gateway, z. B.
vhcals4hci - Gateway Service: Der Dienst des SAP Gateway, z. B.
sapgw00 - Program ID: Die Program ID, mit der sich der RFC-Server beim SAP Gateway registriert, z. B.
NWRFC_OCTOMESH_ID - Registration Count: Die Anzahl der Registrierungen, die der RFC-Server beim SAP Gateway durchführt, z. B.
1
- Configuration Name: Der Name der Konfiguration, muss mit dem Feld
-
Erstellen Sie eine Pipeline, die den RFC-Server ausführt. Die Pipeline sollte die folgenden Nodes enthalten:
-
FromRfcServerCall@1: Der Trigger-Node, der auf RFC-Aufrufe von SAP wartet. Die Konfiguration sollte die folgenden Felder definieren:
- SAP Configuration: Der Name der im vorherigen Schritt erstellten SAP-Konfiguration.
- Function Name: Der Name des Funktionsbausteins, für den der RFC-Server Aufrufe annimmt.
triggers:- type: FromRfcServerCall@1sapConfiguration: sap-test-systemfunctionName: Z_OCTOMESH_TEST_FUNCTIONtransformations:- type: Logger@1message: "RFC Server called"
-
Konfiguration in SAP
Es gibt zwei Hauptschritte, um einen RFC-Server in SAP zu konfigurieren. Der Gateway-Host und -Dienst müssen in der RFC-Destination definiert werden, und der Funktionsbaustein muss erstellt und als remote-fähig markiert werden.
RFC-Destination erstellen
Um ein RFC-Server-Programm auszuführen, ist etwas Konfiguration erforderlich
- Erstellen Sie die RFC-Destination durch Ausführen der Transaktion
SM59 - Geben Sie die Destination-Zeichenkette ein und wählen Sie den Verbindungstyp
T
- Nach dem Klick auf OK wählen Sie als Aktivierungstyp „Registered Server Program"
- Geben Sie eine Beschreibung ein.
- Geben Sie die Program ID ein
- Lassen Sie die Gateway-Optionen leer oder setzen Sie sie auf den Namen des Gateway-Servers (z. B. den Hostnamen des HANA-DB-Servers
vhcals4hci)
Hosts-Datei bearbeiten
- Fügen Sie in C:\Windows\System32\drivers\etc\hosts diese Einträge hinzu
# S4H Appliance
<External IP Address SAP S4HANA/HDB server> vhcals4hci.dummy.nodomain vhcals4hci
vhcals4hcs.dummy.nodomain vhcals4hcs vhcalhdbdb vhcaldhbdb.dummy.nodomain
<IP Address SAP NW JAVA/ASE/ADS server> vhcalj2eci.dummy.nodomain vhcalj2eci
vhcalj2ecs.dummy.nodomain vhcalj2ecs vhcalj2edb vhcalj2edb.dummy.nodomain
<IP Address SAP BI Platform > bihost bihost.dummy.nodomain
Info (für mich als DAU)
- HDB = HANA DB
- ADS = Adobe Document Services
- SAP BI = ist dasselbe
Externe GW-Sicherheit bearbeiten
Es ist auch möglich, entsprechende Sicherheitsinformationen zu setzen, um externe RFC-Programme zu ermöglichen.
Gehen Sie dazu zur Transaktion SMGW und wählen Sie im Menü:
Zu den SAP Gateway Security Files gibt es viele Informationen.

Es ist zu Testzwecken auch möglich, den Hostnamen auf '*' zu setzen, um alle Hosts zuzulassen.
Einen Funktionsbaustein erstellen
In SAP ist ein Funktionsbaustein ein wiederverwendbares Codestück, das aus anderen ABAP-Programmen aufgerufen werden kann. Indem ein Funktionsbaustein „remote-fähig" gemacht wird, wird er über Remote Function Calls (RFC) zugänglich. Remote-fähige Funktionsbausteine können aus verschiedenen Systemen aufgerufen werden, einschließlich externer Umgebungen.
-
Auf den Function Builder (SE37) zugreifen
- Melden Sie sich an Ihrem SAP-System an.
- Geben Sie die Transaktion SE37 im Befehlsfeld ein und drücken Sie Enter.
-
Einen neuen Funktionsbaustein erstellen
- Geben Sie im Feld „Function Module" einen Namen für Ihren Funktionsbaustein ein. Typischerweise beginnen kundeneigene Funktionsbausteine mit
ZoderY, zum Beispiel:Z_OCTOMESH_TEST_FUNCTION. - Klicken Sie auf die Schaltfläche „Create" oder drücken Sie F8.
- Geben Sie im Feld „Function Module" einen Namen für Ihren Funktionsbaustein ein. Typischerweise beginnen kundeneigene Funktionsbausteine mit
-
Grunddaten eingeben
- Geben Sie im Popup-Dialog einen kurzen Beschreibungstext für Ihren Funktionsbaustein ein, z. B. „My Remote-Enabled Function Module".
- Wählen Sie eine Funktionsgruppe, in der der Funktionsbaustein gespeichert wird. Falls Sie keine bestehende Funktionsgruppe haben, können Sie eine erstellen, indem Sie auf die Schaltfläche „New Function Group" klicken.
- Klicken Sie auf Save.
-
Den Funktionsbaustein als remote-fähig markieren
- Suchen Sie auf dem Reiter „Attributes" die Option „Processing Type".
- Wählen Sie „Remote-Enabled Module" aus der Dropdown-Liste. Dies ist entscheidend, um RFC-Aufrufe zu erlauben.
Hinweis: Sobald auf „Remote-Enabled" gesetzt, wird der Funktionsbaustein für RFC-Aufrufe verfügbar. Stellen Sie sicher, dass jeglicher Code innerhalb des Funktionsbausteins RFC-kompatibel ist (zum Beispiel keine direkten Benutzereingabe-Prompts, kein direkter Dateisystemzugriff usw., sofern nicht speziell behandelt).
-
Import-/Export-/Changing-Parameter definieren
- Gehen Sie auf den Reiter „Import" und definieren Sie alle Eingabeparameter, die Ihr Funktionsbaustein benötigt.
- Gehen Sie auf den Reiter „Export" für Ausgabeparameter.
- Verwenden Sie bei Bedarf die Reiter „Changing" und „Tables".
Achten Sie darauf, die Parametertypen zu setzen und anzugeben, ob sie optional oder verpflichtend sind.
-
Dokumentation hinzufügen (optional, aber empfohlen)
- Geben Sie auf dem Reiter „Documentation" Details dazu an, was der Funktionsbaustein tut, welche Parameter er hat und alle weiteren relevanten Hinweise.
-
Den ABAP-Quellcode schreiben
- Schreiben Sie auf dem Reiter „Source Code" die Codelogik, die Sie remote ausführen möchten.
- Halten Sie Ihren Code modular und stellen Sie sicher, dass keine nicht-RFC-konformen Befehle verwendet werden.
-
Prüfen und aktivieren
- Klicken Sie auf die Schaltfläche „Check" oder drücken Sie Ctrl+F2, um die Syntax zu prüfen.
- Falls keine Fehler gefunden werden, klicken Sie auf die Schaltfläche „Activate" oder drücken Sie Ctrl+F3, um den Funktionsbaustein zu aktivieren.
-
Ihren Funktionsbaustein testen
- In SE37 können Sie Ihren Funktionsbaustein lokal testen, indem Sie F8 (Test/Execute) drücken.
- Zum Testen von Remote-Aufrufen können Sie RFC-fähige Testwerkzeuge verwenden oder ihn von einem anderen System/Mandanten aus aufrufen.
Verwenden Sie nach dem Testen die Pipeline-Debugging-Funktionalität, um die Daten zu sehen, die der RFC-Server empfangen hat.