Zum Hauptinhalt springen

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​

  1. 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 sapConfiguration in 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
  2. 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@1
      sapConfiguration: sap-test-system
      functionName: Z_OCTOMESH_TEST_FUNCTION
      transformations:
      - type: Logger@1
      message: "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.

  1. 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.
  2. Einen neuen Funktionsbaustein erstellen

    • Geben Sie im Feld „Function Module" einen Namen für Ihren Funktionsbaustein ein. Typischerweise beginnen kundeneigene Funktionsbausteine mit Z oder Y, zum Beispiel: Z_OCTOMESH_TEST_FUNCTION.
    • Klicken Sie auf die Schaltfläche „Create" oder drücken Sie F8.
  3. 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.
  4. 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).

  5. 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.
  6. 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.
  7. 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.
  8. 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.
  9. 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.