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: