Functieoproep op afstand (RFC) in SAP Tutorial

Wat is RFC?

RFC is een mechanisme waarmee bedrijfsapplicaties kunnen communiceren en informatie (in vooraf gedefinieerde formaten) kunnen uitwisselen met andere systemen. RFC staat voor 'Functieoproep op afstand'

RFC bestaat uit twee interfaces:

  1. Een oproepinterface voor ABAP-programma's
  2. Een belinterface voor niet-SAP 's.

Elke ABAP-programma kunt een externe functie oproepen met behulp van de OPROEPFUNCTIE…BESTEMMING uitspraak. De BESTEMMING parameter vertelt de SAP Systeem waarbij de aangeroepen functie in een ander systeem dan de bellers wordt uitgevoerd.

Syntaxis-

CALL FUNCTION 'remotefunction'

DESTINATION dest

EXPORTING f1 =

IMPORTING f2 =

TABLES t1 =

EXCEPTIONS

Logische bestemmingen worden gedefinieerd via transactie SM59 en opgeslagen in Tabel RFCDES

Functies van de RFC-interface

  • Het converteren van alle parametergegevens naar de representatie die nodig is in het externe systeem
  • Het oproepen van de communicatieroutines die nodig zijn om met het externe systeem te praten.
  • Het afhandelen van communicatiefouten en het op de hoogte stellen van de beller, indien gewenst (met behulp van de EXCEPTIONS-parameter van de CALL FUNCTION).

Functies van de RFC-interface

RFC is een SAP protocol voor het afhandelen van de communicatie tussen systemen om de bijbehorende programmering te vereenvoudigen. Het is het proces waarbij een functiemodule wordt aangeroepen die zich op een andere machine bevindt dan het aanroepprogramma. RFC's kunnen ook worden gebruikt om een ​​ander programma op dezelfde machine aan te roepen, maar meestal worden ze gebruikt wanneer 'aanroepende' en 'aangeroepen' functiemodules/programma's op afzonderlijke machines worden uitgevoerd.

Functies van de RFC-interface

In SAPHet RFC-interfacesysteem wordt gebruikt voor het opzetten van RFC-verbindingen tussen verschillende SAP oplossingen, en ook tussen a SAP en een externe (niet-SAP) systeem.

Moet details over RFC weten

  • SAP Maakt gebruik van het CPIC-protocol (Common Programming Interface for Communication) om gegevens tussen systemen over te dragen. Het is SAP Specifiek protocol. Remote Function Call (RFC) is een communicatie-interface gebaseerd op CPI-C, maar met meer functies en gemakkelijker te gebruiken voor applicatieprogrammeurs
  • De RFC-bibliotheekfuncties ondersteunen de C programmeertaal en Visual Basic (op Windows platforms)
  • RFC-verbindingen kunnen altijd over het gehele systeem worden gebruikt. Dit betekent dat een RFC-verbinding die u in client 000 heeft gedefinieerd, ook vanaf client 100 kan worden gebruikt (zonder enig verschil).
  • RFC is het protocol voor het aanroepen van speciale subroutines (functiemodules) via het netwerk. Functiemodules zijn vergelijkbaar met C-functies of PASCAL-procedures. Ze hebben een gedefinieerde interface waarmee gegevens, tabellen en retourcodes kunnen worden uitgewisseld. Functiemodules worden in het R/3-systeem beheerd in hun eigen functiebibliotheek, de Function Builder genaamd.
  • De Function Builder (transactie SE37) biedt applicatieprogrammeurs een handige omgeving voor het programmeren, documenteren en Testen functiemodules die zowel lokaal als op afstand kunnen worden opgeroepen. Het R/3-systeem genereert automatisch de extra code (RFC-stub) die nodig is voor oproepen op afstand.
  • U onderhoudt de parameters voor RFC-verbindingen met transactie SM59. Het R/3-systeem wordt ook geleverd met een RFC-SDK (Software Development Kit) die gebruikmaakt van uitgebreide C-bibliotheken waarmee externe programma's op het R/3-systeem kunnen worden aangesloten.
  • Het enige verschil tussen een externe oproep van een functiemodule naar een andere server en een lokale oproep is een speciale parameter (bestemming) die de doelserver specificeert waarop het programma moet worden uitgevoerd.

De RFC-voordelen

RFC helpt de inspanningen van programmeurs te verminderen, door hen de herontwikkeling van modules en methoden op externe systemen te laten vermijden. Het is capabel genoeg om:

  • Converteer de gegevens naar een formaat dat begrijpelijk is voor het externe (doel)systeem.
  • Converteer de gegevens naar een formaat dat begrijpelijk is voor het externe (doel)systeem.
  • Roep bepaalde routines op die nodig zijn om de communicatie met het externe systeem te starten.
  • Afhandelen van fouten die kunnen optreden tijdens het communicatieproces.

Soorten RFC

Soorten RFC

Synckroniek

Vereist dat beide systemen (client en server) beschikbaar zijn op het moment van communicatie of gegevensoverdracht. Dit is het meest voorkomende type en is vereist wanneer het resultaat onmiddellijk na de uitvoering van sRFC vereist is.

sRFC is een communicatiemiddel tussen systemen waarbij bevestigingen vereist zijn. De bronnen van het bronsysteem wachten op het doelsysteem en zorgen ervoor dat ze het bericht/de gegevens met ACKD afleveren. De gegevens zijn consistent en betrouwbaar voor communicatie.

Het probleem is dat als het doelsysteem niet beschikbaar is, de bronsysteembronnen wachten totdat het doelsysteem beschikbaar is. Dit kan ertoe leiden dat de processen van het bronsysteem op doelsystemen in de slaap-/RFC/CPIC-modus gaan en daardoor deze bronnen blokkeren.

Gebruikt voor

  • Voor communicatie tussen systemen
  • Voor communicatie tussen SAP Webapplicatieserver naar SAP GUI

Asynchronous

Het is communicatie tussen systemen waarbij bevestigingen niet vereist zijn (het is vergelijkbaar met het bezorgen van een briefkaart). Het vereist niet dat beide systemen beschikbaar zijn op het moment van uitvoering en het resultaat hoeft niet onmiddellijk terug te worden gestuurd naar het oproepende systeem .

De bronsysteembron wacht niet op het doelsysteem terwijl deze het bericht/de gegevens aflevert zonder op enige bevestiging te wachten. Het is niet betrouwbaar voor communicatie, aangezien gegevens verloren kunnen gaan als het doelsysteem niet beschikbaar is. Gebruikt voor -

  • Voor communicatie tussen systemen
  • Voor parallelle verwerking

transactionele

Het is een speciale vorm van aRFC. Transactionele RFC zorgt voor een transactie-achtige afhandeling van verwerkingsstappen die oorspronkelijk autonoom waren.

Transactionele RFC is een asynchrone communicatiemethode die de aangeroepen functiemodule in de RFC-server slechts één keer uitvoert, zelfs als de gegevens meerdere keren worden verzonden vanwege een netwerkprobleem. Het externe systeem hoeft niet beschikbaar te zijn op het moment dat het RFC-clientprogramma een tRFC uitvoert. Het tRFC-component slaat de aangeroepen RFC-functie op, samen met de bijbehorende gegevens, in de SAP database onder een unieke transactie-ID (TID). tRFC is vergelijkbaar met aRFC omdat het niet wacht op het doelsysteem (vergelijkbaar met een geregistreerde post). Als het systeem niet beschikbaar is, schrijft het de gegevens naar aRFC-tabellen met een transactie-ID (SM58) die wordt gekozen door de scheduler RSARFCSE (die elke 60 seconden wordt uitgevoerd). Gebruikt voor-

  • Uitbreiding van asynchrone RFC
  • Voor veilige communicatie tussen systemen

In de wachtrij

In de wachtrij geplaatste RFC is een uitbreiding van tRFC. Het zorgt er ook voor dat afzonderlijke stappen op volgorde worden verwerkt. Om te garanderen dat meerdere LUW's (Logical Unit of Work/Transaction) worden verwerkt in de volgorde die door de applicatie wordt aangegeven. tRFC kan worden geserialiseerd met behulp van wachtrijen (inkomende en uitgaande wachtrijen). Vandaar de naam wachtrij RFC (qRFC). Gebruikt voor-

  • Uitbreiding van de Transactionele RFC
  • Voor een gedefinieerde verwerkingsvolgorde
  • Implementatie van qRFC is aan te raden als u wilt garanderen dat meerdere transacties in een vooraf gedefinieerde volgorde worden verwerkt.

Soorten RFC-verbindingen

Soorten RFC-verbindingen

Typ 3 – vermeldingen specificeren de verbinding tussen ABAP-systemen. Hier moeten we de hostnaam / IP-adres opgeven. U kunt desgewenst echter wel aanmeldingsgegevens opgeven. Dit is van toepassing op beide typen RFC's, tussen ABAP-systemen en externe oproepen naar ABAP-systemen

Type ik – vermeldingen specificeren ABAP-systemen die zijn verbonden met dezelfde database als het huidige systeem. Deze gegevens zijn vooraf gedefinieerd en kunnen niet worden gewijzigd. Voorbeeld van een itemnaam: ws0015_K18_24

  • ws0015=hostnaam
  • K18=systeemnaam (databasenaam)
  • 24=TCP-servicenaam

Type T – bestemmingen zijn verbindingen met externe programma's die de RFC API gebruiken om RFC's te ontvangen. Het activeringstype kan Start of Registratie zijn. Als dit Start is, moet u de hostnaam en de padnaam opgeven van het programma dat moet worden gestart.

Hoe codeer je een RFC?

1) Op het tabblad Functiemodule-attributen (transactiecode SE37) stelt u het verwerkingstype in op Op afstand ingeschakelde module om een ​​externe functiemodule te maken.

Hoe een RFC te coderen

2) Schrijf de code voor de functiemodule.

Hoe een RFC te coderen

3) Definieer de bestemming van de RFC-server in het RFC-clientsysteem dat de externe functie aanroept (via SM59-transactie).

Hoe een RFC te coderen

4) Parameters declareren: Alle parametervelden voor een externe functiemodule moeten worden gedefinieerd als referentievelden, dat wil zeggen, zoals ABAP-woordenboekvelden.

5) Uitzonderingen: Het systeem genereert intern COMMUNICATION_FAILURE en SYSTEM_FAILURE. U kunt uitzonderingen genereren in een externe functie, net zoals u dat zou doen in een lokaal aangeroepen functie.

Foutopsporing bij externe functieaanroepen

  • Het is niet mogelijk om te debuggen een functieoproep op afstand naar een ander systeem.
  • Wanneer u echter ABAP-naar-ABAP RFC-oproepen test, kunt u de ABAP-foutopsporing gebruiken om de uitvoering van de RFC-functie op het externe systeem te controleren.
  • Bij oproepen op afstand draait de ABAP-foutopsporing (inclusief de foutopsporingsinterface) op het lokale systeem. Gegevenswaarden en andere runinformatie voor de externe functie worden doorgegeven vanaf het externe systeem.