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.
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:
- Eine Anrufschnittstelle fรผr ABAP-Programme.
- 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
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
EXCEPTIONSParameter vonCALL FUNCTION.
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
DESTINATIONParameter, 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
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
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.
Schritt 2: Schreiben Sie den Code fรผr das Funktionsmodul im Quellcode-Editor.
Schritt 3: Definieren Sie das Ziel des RFC-Servers im RFC-Clientsystem, das die Remote-Funktion aufruft โ dies erfolgt in der Transaktion. SM59.
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.








