Remote Function Call (RFC) in SAP-zelfstudie

Inhoudsopgave:

Anonim

Wat is RFC?

RFC is een mechanisme waarmee bedrijfstoepassingen kunnen communiceren en informatie (in vooraf gedefinieerde formaten) kunnen uitwisselen met andere systemen. RFC staat voor 'Remote Function Call'

RFC bestaat uit twee interfaces:

  1. Een oproepende interface voor ABAP-programma's
  2. Een aanroepende interface voor niet-SAP-programma's.

Elk ABAP-programma kan een externe functie aanroepen met de instructie CALL FUNCTION… DESTINATION . De parameter DESTINATION vertelt het SAP-systeem dat de aangeroepen functie wordt uitgevoerd in een ander systeem dan de bellers.Syntaxis-

OPROEPFUNCTIE 'op afstand'BESTEMMING bestemmingEXPORTEREN f1 =IMPORTEREN f2 =TABELLEN t1 =UITZONDERINGEN

Logische bestemmingen worden gedefinieerd via transactie SM59 en opgeslagen in tabel RFCDES-
functies van de RFC-interface

  • Het converteren van alle parametergegevens naar de weergave die nodig is in het externe systeem
  • Bellen van de communicatieroutines die nodig zijn om met het externe systeem te praten.
  • Communicatiefouten afhandelen en de beller desgewenst op de hoogte stellen (met behulp van de parameter EXCEPTIONS van de OPROEPFUNCTIE).


RFC is een SAP-protocol om communicatie tussen systemen af ​​te handelen om de gerelateerde programmering te vereenvoudigen. Het is het proces waarbij een functiemodule wordt aangeroepen die zich op een andere machine bevindt dan het oproepprogramma. RFC's kunnen ook worden gebruikt om een ​​ander programma op dezelfde machine aan te roepen, maar meestal wordt het gebruikt wanneer 'calling' en 'called' functiemodules / programma's op aparte machines worden uitgevoerd.


In SAP wordt het RFC Interface-systeem gebruikt voor het opzetten van RFC-verbindingen tussen verschillende SAP-systemen, en ook tussen een SAP en een extern (niet-SAP) systeem.

Moet details over RFC weten

  • SAP gebruikt het CPIC-protocol (Common Programming Interface for Communication) om gegevens tussen systemen uit te wisselen. Het is een 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 programmeertaal C en Visual Basic (op Windows-platforms)
  • RFC-verbindingen kunnen altijd over het hele systeem worden gebruikt. Dit betekent dat een RFC-verbinding die u hebt gedefinieerd in client 000 ook kan worden gebruikt vanaf client 100 (zonder enig verschil).
  • RFC is het protocol voor het oproepen 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 beheerd in het R / 3-systeem in hun eigen functiebibliotheek, genaamd de Function Builder.
  • De Function Builder (transactie SE37) biedt applicatieprogrammeurs een handige omgeving voor het programmeren, documenteren en testen van functiemodules die zowel lokaal als op afstand kunnen worden opgeroepen. Het R / 3-systeem genereert automatisch de aanvullende code (RFC-stub) die nodig is voor externe oproepen.
  • 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 om externe programma's op het R / 3-systeem aan te sluiten.
  • Het enige verschil tussen een externe oproep van een functieblok naar een andere server en een lokale oproep is een speciale parameter (bestemming) die de doelserver specificeert waarop het programma moet worden uitgevoerd.

De voordelen van RFC:

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

  • Zet de gegevens om in het formaat dat begrijpelijk is voor het externe (doel) systeem.
  • Zet de gegevens om in het formaat dat begrijpelijk is voor het externe (doel) systeem.
  • Roep bepaalde routines op die nodig zijn om de communicatie met het systeem op afstand te starten.
  • Behandel fouten die kunnen optreden tijdens het communicatieproces.

Soorten RFC:


Synchroon

Vereist dat beide systemen (client en server) beschikbaar zijn op het moment van communicatie of gegevensoverdracht. Het 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 bezorgen. De gegevens zijn consistent en betrouwbaar voor communicatie.
Het probleem is dat als het doelsysteem niet beschikbaar is, de bronsysteembronnen wachten tot het doelsysteem beschikbaar is. Dit kan ertoe leiden dat de processen van het bronsysteem op de doelsystemen in de slaap- / RFC- / CPIC-modus gaan en daardoor deze bronnen blokkeren.
Gebruikt voor

  • Voor communicatie tussen systemen
  • Voor communicatie tussen SAP Web Application Server en SAP GUI

Asynchroon

Het is communicatie tussen systemen waarbij bevestigingen niet vereist zijn (het is vergelijkbaar met bezorging per briefkaart). Het vereist niet dat beide systemen beschikbaar zijn op het moment van uitvoering en het resultaat hoeft niet onmiddellijk te worden teruggestuurd naar het oproepsysteem .

De bron van het bronsysteem wacht niet op het doelsysteem terwijl ze het bericht / de gegevens bezorgen zonder op een 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

Transactioneel

Het is een speciale vorm van aRFC. Transactionele RFC zorgt voor een transactieachtige 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 systeem op afstand hoeft niet beschikbaar te zijn op het moment dat het RFC-clientprogramma een tRFC uitvoert. De tRFC-component slaat de opgeroepen RFC-functie, samen met de bijbehorende gegevens, op in de SAP-database onder een uniek transactie-ID (TID). tRFC is vergelijkbaar met aRFC omdat het niet wacht op het doelsysteem (vergelijkbaar met een aangetekende post). Als het systeem niet beschikbaar is, zal het de gegevens naar aRFC-tabellen schrijven met een transactie-ID (SM58) die wordt gekozen door de planner RSARFCSE (die elke 60 seconden loopt). 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 individuele stappen op volgorde worden verwerkt.

Om te garanderen dat meerdere LUW's (Logical Unit of Work / Transaction) worden verwerkt in de door de applicatie aangegeven volgorde. tRFC kan worden geserialiseerd met behulp van wachtrijen (inkomende en uitgaande wachtrijen). Vandaar de naam in de wachtrij RFC (qRFC). Gebruikt voor-

  • Uitbreiding van de transactionele RFC
  • Voor een gedefinieerde verwerkingsvolgorde
  • Implementatie van qRFC wordt aanbevolen als u wilt garanderen dat meerdere transacties in een vooraf gedefinieerde volgorde worden verwerkt.

Soorten RFC-verbindingen


Type 3 - vermeldingen specificeren de verbinding tussen ABAP-systemen. Hier moeten we de hostnaam / IP-adres specificeren. U kunt desgewenst echter aanmeldingsgegevens opgeven. Dit is van toepassing op beide typen RFC's, tussen ABAP-systemen en externe oproepen naar ABAP-systemenType I - vermeldingen specificeren ABAP-systemen die zijn verbonden met dezelfde database als het huidige systeem. Deze vermeldingen zijn vooraf gedefinieerd en kunnen niet worden gewijzigd. Voorbeeld vermelding naam: 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 het Start is, moet u de hostnaam en de padnaam van het te starten programma specificeren.

Hoe een RFC coderen?

1. Stel op het tabblad Kenmerken van de functiemodule (transactiecode SE37) het verwerkingstype in op Module met op afstand geactiveerde module om een ​​functie module op afstand te creëren.


2. Schrijf de code voor het functieblok.


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


4. Parameters declareren : alle parametervelden voor een externe functiemodule moeten worden gedefinieerd als referentievelden, dat wil zeggen, zoals ABAP-woordenboekvelden.5. Uitzonderingen: het systeem verhoogt intern COMMUNICATION_FAILURE en SYSTEM_FAILURE. U kunt uitzonderingen maken in een externe functie, net zoals u dat zou doen in een lokaal aangeroepen functie.

Foutopsporing van externe functieaanroepen

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