Remote Function Call (RFC) in SAP ABAP Tutorial

⚡ Intelligente Zusammenfassung

Remote Function Call (RFC) ist der SAP Kommunikationsmechanismus, der es einem ABAP-Programm ermöglicht, ein Funktionsmodul aufzurufen, das auf einem anderen Programm läuft SAP oder externes System. Es ist abstracEs kümmert sich um die Netzwerkinfrastruktur, konvertiert Datenformate und meldet Fehler sauber an den Aufrufer zurück.

  • 📡 Kernmechanismus: CALL FUNCTION…DESTINATION ruft einen Funktionsbaustein auf einem in SM59 definierten logischen Ziel auf.
  • 🔁 Vier Varianten: SyncChronologische, asynchrone, transaktionale und Queued-RFCs garantieren jeweils eine andere Zustellungskonsistenz.tract.
  • 🌐 Verbindungstypen: SM59 unterstützt Typ 3 (ABAP-zu-ABAP), Typ I (Peers innerhalb derselben Datenbank) und Typ T (externe Programme).
  • ️ Baupfad: Stellen Sie den Funktionsbaustein in SE37 auf „Fernzugriff“ ein, codieren Sie ihn und definieren Sie das Ziel in SM59 auf dem Aufrufer.
  • 🤖 KI-Perspektive: KI-Assistenten generieren ABAP RFC-Stubs aus natürlichsprachlichen Spezifikationen und analysieren SM58-Fehler, um daraus umsetzbare Korrekturen abzuleiten.

Funktionen der RFC-Schnittstelle

Was ist RFC? SAP?

RFC steht für FernfunktionsaufrufEs handelt sich um den Mechanismus, der es Geschäftsanwendungen ermöglicht, mit anderen Systemen in vordefinierten Formaten zu kommunizieren und Informationen auszutauschen. RFC ist die gebräuchlichste Methode, um … SAP Das System kommuniziert mit einem anderen, und es ist auch die Brücke, die verbindet. SAP Systeme zu Nicht-SAP um weitere Anwendungsbeispiele zu finden.

RFC bietet zwei Schnittstellen:

  1. Eine Anrufschnittstelle für ABAP-Programme.
  2. Eine Anrufschnittstelle für Nicht-SAP Programme.

Jedes ABAP-Programm kann eine Remote-Funktion über die AUFRUFFUNKTION…ZIEL Aussage. Das DESTINATION Parameter gibt an, SAP System, dass die aufgerufene Funktion auf einem anderen System als dem Aufrufer ausgeführt wird.

Syntax

CALL FUNCTION 'remotefunction'
  DESTINATION dest
  EXPORTING  f1 = ...
  IMPORTING  f2 = ...
  TABLES     t1 = ...
  EXCEPTIONS ...

Logische Ziele werden über Transaktionen definiert. SM59 und in der Tabelle gespeichert RFCDES.

Funktionen der RFC-Schnittstelle

Funktionen der RFC-Schnittstelle

Die RFC-Laufzeitumgebung ist bei jedem Aufruf für drei Dinge zuständig:

  • Umwandlung aller Parameterdaten in die vom Remote-System erwartete Darstellung.
  • Aufrufen der Kommunikationsroutinen, die für die Kommunikation mit dem Remote-System erforderlich sind.
  • Umgang mit Kommunikationsfehlern und deren Anzeige für den Anrufer über das EXCEPTIONS Parameter von CALL FUNCTION.

RFC-Kommunikation zwischen SAP Systeme

RFC ist die SAP Ein RFC (Request for Functions) regelt die Kommunikation zwischen Systemen und vereinfacht die zugehörige Programmierung. Es beschreibt den Aufruf eines Funktionsbausteins, der sich auf einem anderen Rechner als das aufrufende Programm befindet. Technisch gesehen können RFCs verwendet werden, um einen Funktionsbaustein auf dem System aufzurufen. gleich Sie werden zwar auch auf anderen Rechnern verwendet, kommen aber am häufigsten zum Einsatz, wenn das aufrufende und das aufgerufene Programm auf unterschiedlichen Rechnern laufen. Das RFC-Schnittstellensystem dient zum Aufbau von RFC-Verbindungen zwischen verschiedenen Rechnern. SAP SystemeSowie zwischen SAP und extern (nicht-SAP) Systeme.

Wichtige Details zu RFC

  • SAP verwendet das CPIC CPIC (Common Programming Interface for Communication) ist ein Protokoll zur Datenübertragung zwischen Systemen. SAPRFC ist eine Kommunikationsschnittstelle, die auf CPI-C aufbaut, jedoch mehr Funktionen und eine benutzerfreundlichere Oberfläche für Anwendungsprogrammierer bietet.
  • Die RFC-Bibliotheksfunktionen unterstützen die Programmiersprache C und Visual Basic auf Windows Plattformen.
  • RFC-Verbindungen funktionieren systemweit. Eine in Mandant 000 definierte RFC-Verbindung kann auch von Mandant 100 aus ohne Unterschied verwendet werden.
  • RFC ist das Protokoll zum Aufruf spezialisierter Unterprogramme (Funktionsbausteine) über das Netzwerk. Funktionsbausteine ​​sind vergleichbar mit C-Funktionen oder Pascal-Prozeduren: Sie stellen eine definierte Schnittstelle bereit, über die Daten, Tabellen und Rückgabewerte ausgetauscht werden. Funktionsbausteine ​​werden innerhalb des Netzwerks verwaltet. SAP System in einer eigens dafür eingerichteten Bibliothek, die Funktionsgenerator.
  • Der Funktionsgenerator (Transaktion SE37) bietet Anwendungsprogrammierern eine Umgebung zum Schreiben, Dokumentieren und testing Funktionsbausteine, die sowohl lokal als auch remote aufgerufen werden können. Das System generiert automatisch den zusätzlichen Code (den RFC-Stub) für Fernanrufe erforderlich.
  • RFC-Verbindungen werden über Transaktionen verwaltet. SM59. SAP versendet auch ein RFC-SDK (Software Development Kit), das umfangreiche C-Bibliotheken verwendet, damit externe Programme eine Verbindung herstellen können. SAP System.
  • Der einzige Unterschied zwischen einem Remote-Aufruf an einen anderen Server und einem lokalen Aufruf besteht darin, dass DESTINATION Parameter, der den Zielserver angibt, auf dem das Programm ausgeführt werden soll.

Vorteile von RFC

RFC reduziert den Programmieraufwand, da Module und Methoden auf der Gegenseite nicht erneut implementiert werden müssen. Die RFC-Schicht übernimmt folgende Aufgaben:

  • Die Daten werden in ein Format umgewandelt, das das entfernte (Ziel-)System versteht.
  • Aufruf der Routinen, die für die Einrichtung der Kommunikation mit dem entfernten System erforderlich sind.
  • Umgang mit Kommunikationsfehlern.
  • Bereitstellung zuverlässiger Transaktionssemantik bei Verwendung von Transaktions- oder Warteschlangenvarianten.

Arten von RFC

Arten von RFC

SAP Unterstützt vier RFC-Varianten. Jede bietet einen anderen Kompromiss zwischen Latenz, Zuverlässigkeit und Reihenfolgegarantien.

1. Syncchronous RFC (sRFC)

SyncDer chronologische RFC erfordert, dass sowohl Client als auch Server zum Zeitpunkt des Aufrufs verfügbar sind. Er ist der gebräuchlichste Typ und wird immer dann verwendet, wenn der Aufrufer das Ergebnis unmittelbar nach der Ausführung benötigt.

sRFC ist ein Kommunikationsmittel zwischen Systemen, bei dem Bestätigungen erwartet werden. Die Ressourcen des Quellsystems warten auf das Zielsystem und stellen sicher, dass die Nachricht mit einer Bestätigung (ACK) eintrifft. Die ausgetauschten Daten sind konsistent und zuverlässig.

Der Nachteil besteht darin, dass, wenn das Zielsystem nicht verfügbar ist, die Ressourcen des Quellsystems warten, bis es wieder verfügbar ist, was dazu führen kann, dass Quellsystemprozesse auf dem Zielsystem in den Schlaf-/RFC-/CPIC-Modus versetzt werden und Ressourcen blockiert werden.

Benutzt für:

  • Echtzeitkommunikation zwischen Systemen.
  • Kommunikation zwischen den SAP Web Application Server und der SAP GUI.

2. Asynchrones RFC (aRFC)

Asynchrone RFC ist die Kommunikation zwischen Systemen, bei der keine Bestätigung erforderlich ist – vergleichbar mit Drop.ping Eine Postkarte per Post. Beide Systeme müssen zum Ausführungszeitpunkt nicht verfügbar sein, und das Ergebnis wird nicht sofort an das aufrufende System zurückgesendet.

Die Ressource des Quellsystems wartet nicht auf das Zielsystem; sie liefert die Daten und fährt fort. Dadurch ist aRFC zwar schnell, aber allein nicht zuverlässig – Daten können verloren gehen, wenn das Zielsystem nicht verfügbar ist.

Benutzt für:

  • Fire-and-Forget-Kommunikation zwischen Systemen.
  • Parallele Verarbeitung über verschiedene Systeme hinweg.

3. Transaktionsbasierter RFC (tRFC)

Transactional RFC ist eine spezielle Form von asynchronem RFC. Es gewährleistet eine transaktionsähnliche Behandlung von Verarbeitungsschritten, die ansonsten autonom ablaufen würden.

tRFC führt das aufgerufene Funktionsmodul auf dem RFC-Server genau einmal aus, selbst wenn die Daten aufgrund von Netzwerkproblemen mehrfach gesendet werden. Das entfernte System muss zum Zeitpunkt des Aufrufs durch den RFC-Client nicht verfügbar sein. Die tRFC-Komponente speichert die aufgerufene Funktion und ihre Daten im SAP Datenbank unter einer eindeutigen Transaktions-ID (TID)Falls das Zielsystem nicht verfügbar ist, werden die Daten in RFC-Tabellen geschrieben (sichtbar in der Transaktion). SM58und später vom Planungsbericht übernommen RSARFCSE, das alle 60 Sekunden ausgeführt wird.

Benutzt für:

  • Erweiterung von asynchronem RFC mit maximal einmaliger Zustellung.
  • Zuverlässige Kommunikation zwischen Systemen, bei denen die exakt einmalige Ausführung entscheidend ist.

4. Queued RFC (qRFC)

Queued RFC erweitert tRFC, indem es die Verarbeitung einzelner Schritte in der von der aufrufenden Anwendung vorgegebenen Reihenfolge garantiert. Um sicherzustellen, dass mehrere LUWs (logische Arbeitseinheiten/Transaktionen) in der gewünschten Reihenfolge verarbeitet werden, kann tRFC mithilfe von Eingangs- und Ausgangswarteschlangen serialisiert werden – daher der Name „Queued RFC“.

Benutzt für:

  • Erweiterung von Transactional RFC mit strikter Ordnung.
  • Szenarien, in denen eine festgelegte Verarbeitungsreihenfolge zwingend erforderlich ist.
  • Fälle, in denen mehrere Transaktionen in einer vordefinierten Reihenfolge verarbeitet werden müssen.

RFC-Typenvergleich

Typ Anrufer wartet? Zuverlässig? Bestellt? besten Für
sRFC Ja Ja Nicht verfügbar (Einzelanruf) Echtzeit-Abfragen
aRFC Nein Nein Nein Feuern und vergessen, parallele Arbeit
tRFC Nein Ja (genau einmal). Nein Zuverlässige asynchrone Aktualisierungen
qRFC Nein Ja (genau einmal). Ja Streng geordnete Aktualisierungen

Arten von RFC-Verbindungen

Arten von RFC-Verbindungen

SM59 unterstützt verschiedene Verbindungstypen. Die drei am häufigsten anzutreffenden sind nachfolgend zusammengefasst.

Typ 3 — ABAP-zu-ABAP

Einträge vom Typ 3 geben die Verbindung zwischen ABAP-SystemeDer Hostname oder die IP-Adresse ist obligatorisch; Anmeldeinformationen können optional angegeben werden. Typ 3 ist sowohl für RFCs zwischen ABAP-Systemen als auch für externe Aufrufe in ABAP-Systeme anwendbar.

Typ I — Gleichdatenbank-Peer

Einträge vom Typ I kennzeichnen ABAP-Systeme, die dieselbe Datenbank wie das aktuelle System verwenden. Diese Einträge sind vordefiniert und können nicht geändert werden. Ein typischer Eintragsname sieht wie folgt aus: ws0015_K18_24:

  • ws0015 — Hostname
  • K18 — Systemname (Datenbankname)
  • 24 — TCP-Dienstname

Typ T – Externes Programm

Ziele vom Typ T stellen Verbindungen zu externen Programmen her, die die RFC-API zum Empfangen von RFCs verwenden. Der Aktivierungstyp kann entweder Start or Anmeldung Im Falle der Option „Start“ müssen der Hostname und der Pfad des zu startenden Programms angegeben werden.

So erreichen Code ein RFC

Der vollständige Aufbau eines RFC umfasst fünf Schritte. Die ersten drei sind mechanische Klicks in SE37 und SM59; die letzten beiden betreffen die Einrichtung der Verbindung.tracRichtig.

Schritt 1: Auf der Registerkarte „Funktionsbausteinattribute“ der Transaktion SE37, den Verarbeitungstyp festlegen auf Fernsteuerfähiges Modul um das Funktionsmodul als RFC-fähig zu kennzeichnen.

SE37 Fernsteuerfähiges Modul

Schritt 2: Schreiben Sie den Code für das Funktionsmodul im Quellcode-Editor.

Quellcode des Funktionsmoduls

Schritt 3: Definieren Sie das Ziel des RFC-Servers im RFC-Clientsystem, das die Remote-Funktion aufruft – dies erfolgt in der Transaktion. SM59.

SM59 Zielkonfiguration

Schritt 4 — Parameter deklarieren: Alle Parameterfelder eines Remote-Funktionsbausteins müssen als Referenzfelder definiert werden – d. h. sie müssen mit Feldern aus dem ABAP Dictionary typisiert sein. Wertparameter sind für Remote-fähige Funktionsbausteine ​​nicht zulässig.

Schritt 5 – Ausnahmen: Das System wirft Kommunikationsfehler und SYSTEMFEHLER Intern werden Fehler auf Transportebene behandelt. Ausnahmen auf Anwendungsebene können innerhalb einer Remote-Funktion genauso ausgelöst werden wie in einer lokalen Funktion.

Debuggen von Remote-Funktionsaufrufen

  • Debuggen nicht möglich Ein Remote-Funktionsaufruf in ein Nicht-ABAP-System auf die klassische Weise – die fremde Laufzeitumgebung ist undurchsichtig.
  • Bei ABAP-zu-ABAP-RFC-Aufrufen kann jedoch der ABAP-Debugger verwendet werden, um die Ausführung der RFC-Funktion im entfernten System zu überwachen.
  • Bei Remote-Aufrufen läuft der ABAP-Debugger (einschließlich seiner Benutzeroberfläche) auf dem lokalen System. Datenwerte und andere Laufzeitinformationen für die Remote-Funktion werden vom Remote-System zurückgesendet.

Wesentliche SAP RFC-Transaktionen

Die alltägliche RFC-Toolbox reduziert sich auf eine Handvoll T-Codes, die jeder ABAP-Entwickler und Basis-Administrator reflexartig kennen sollte.

T-Code Zweck
SM59 RFC-Ziele pflegen – Host, Anmeldung, Typ, Sicherheit.
SE37 Funktionsgenerator – Erstellen oder Bearbeiten von fernsteuerbaren Funktionsbausteinen.
SM58 Fehlgeschlagene transaktionale RFCs überwachen und erneut verarbeiten.
SMQ1 / SMQ2 Überwachen Sie ausgehende (SMQ1) und eingehende (SMQ2) qRFC-Warteschlangen.
STRUST Pflegen Sie die SSL-Zertifikate, die von HTTPS-geschützten RFC-Zielen verwendet werden.
ST22 Untersuchen Sie Kurzdumps, die durch fehlgeschlagene Remote-Aufrufe verursacht wurden.

Best Practices für SAP RFC

Eine gut konzipierte RFC-Schicht sorgt für schnelle, nachvollziehbare und leicht erweiterbare Integrationen. Die folgenden Vorgehensweisen sollten in jedes Projekt integriert werden.

  • Wählen Sie die richtige Variante für die Herausforderung.tract. Verwenden Sie sRFC für synchrone Suchvorgänge, tRFC für asynchrone Aktualisierungen, die höchstens einmal erfolgen, und qRFC, wenn die Reihenfolge wichtig ist.
  • Ein Ziel pro Zielsystem wiederverwenden Anstatt Hostnamen auf viele Ziele zu verteilen, wird die Anmeldeinformationsrotation genutzt. tracTabelle.
  • Anmeldeinformationen niemals fest im Code speichern. in ABAP. Verwenden Sie nach Möglichkeit vertrauenswürdige Systemverbindungen oder sichere Anmeldetickets.
  • SM58 und SMQ2 regelmäßig überwachen. Feststeckende tRFC-Einträge verzögern Geschäftsprozesse unbemerkt, bis sie erneut verarbeitet werden.
  • Übergeben Sie nur Parameter vom Referenztyp. Wertparameter führen zu Problemen mit fernsteuerbaren Funktionsbausteinen.
  • Verwenden Sie STRUST zur Verwaltung von TLS-Zertifikaten. Bei HTTPS-Zielen sind abgelaufene Zertifikate eine der Hauptursachen für mysteriöse COMMUNICATION_FAILURE-Fehlermeldungen.

Häufig gestellte Fragen

RFC ist das Low-Level-Protokoll, das jedes fernsteuerbare Funktionsmodul aufruft. Ein BAPI ist ein spezifisches, SAP-zertifiziertes Funktionsmodul, das eine stabile Geschäftsobjektmethode bereitstellt – jede BAPI wird über RFC bereitgestellt, aber nicht jeder RFC-Aufruf trifft eine BAPI.

Ein Trusted RFC ist ein SM59-Ziel, bei dem das Zielsystem der Authentifizierung des Aufrufers vertraut, sodass bei jedem Aufruf kein Passwort ausgetauscht wird. Der Benutzerkontext des Aufrufers wird weitergegeben. Dadurch werden fest codierte Anmeldeinformationen entfernt, allerdings auf Kosten einer strengeren Konfiguration.

SM58 zeigt fehlgeschlagene oder ausstehende RFC-Transaktionseinträge an, die auf die erneute Verarbeitung warten. Jede Zeile enthält die Transaktions-ID, das aufgerufene Funktionsmodul, das Ziel, den Fehlertext und den Zeitpunkt des letzten Wiederholungsversuchs.

Nein. RFC-Datenverkehr ist standardmäßig unverschlüsselt. SNC (Secure Network Communications) oder TLS/HTTPS-Ziele müssen so konfiguriert werden, dass der Datenverkehr verschlüsselt wird. SNC ist der Standardmechanismus für Produktionsumgebungen.

tRFC garantiert, dass ein Aufruf genau einmal ausgeführt wird, erhält aber nicht die Reihenfolge der Aufrufe. qRFC baut auf tRFC auf und serialisiert Aufrufe zusätzlich über eingehende oder ausgehende Warteschlangen, sodass Aufrufe in der exakt von der Anwendung definierten Reihenfolge ausgeführt werden.

Ja. Externe Programme können sich bei einem registrieren. SAP Gateway unter Verwendung des RFC SDK (JCo für Java, NCo für .NET oder das C SDK). SAP Anschließend ruft er sie über ein Ziel vom Typ T auf, genau wie jedes andere ABAP-Funktionsmodul.

KI-Assistenten generieren ABAP RFC-Stubs aus natürlichsprachlichen Spezifikationen, schlagen den richtigen Zieltyp für ein Szenario vor und übersetzen SM58-Fehlertexte in eine konkrete Korrekturliste – wodurch die tägliche Integrationsarbeit für Basis- und ABAP-Teams beschleunigt wird.

Ja. Geben Sie einem KI-Assistenten den ST22-Dump oder den SM58-Fehler, und er korreliert COMMUNICATION_FAILURE / SYSTEM_FAILURE-Muster mit den wahrscheinlichsten Ursachen – abgelaufenes Zertifikat, Gateway ausgefallen, fehlende Autorisierung – und schlägt den relevanten T-Code zur Überprüfung vor.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: