Remote Function Call (RFC) ind SAP tutorial

Hvad er RFC?

RFC er en mekanisme, der gør det muligt for forretningsapplikationer at kommunikere og udveksle information (i foruddefinerede formater) med andre systemer. RFC står for 'Fjernfunktionsopkald'

RFC består af to grænseflader:

  1. En kaldegrænseflade til ABAP-programmer
  2. En opkaldsgrænseflade til ikke-SAP programmer.

Enhver ABAP program kan kalde en fjernfunktion ved hjælp af OPKALDSFUNKTION...DESTINATION udmelding. Det BESTEMMELSESSTED parameter fortæller SAP System, som den kaldte funktion kører i et andet system end de, der ringer.

Syntaks-

CALL FUNCTION 'remotefunction'

DESTINATION dest

EXPORTING f1 =

IMPORTING f2 =

TABLES t1 =

EXCEPTIONS

Logiske destinationer defineres via transaktion SM59 og gemt i tabel RFCDES

RFC-grænsefladens funktioner

  • Konvertering af alle parameterdata til den repræsentation, der er nødvendig i fjernsystemet
  • Ringer til de kommunikationsrutiner, der er nødvendige for at tale med fjernsystemet.
  • Håndtering af kommunikationsfejl og underretning af den, der ringer, hvis det ønskes (ved brug af EXCEPTIONS-parameteren i OPKALDSFUNKTIONEN).

RFC-grænsefladens funktioner

RFC er en SAP protokol til at håndtere kommunikation mellem systemer for at forenkle den relaterede programmering. Det er processen med at kalde et funktionsmodul, som er placeret på en anden maskine end opkaldsprogrammet. RFC'er kan også bruges til at kalde et andet program på den samme maskine, men normalt bruges det, når 'kaldende' og 'kaldte' funktionsmoduler/programmer kører på separate maskiner.

RFC-grænsefladens funktioner

In SAP, RFC Interface system bruges til opsætning af RFC forbindelser mellem forskellige SAP systemer, og også mellem en SAP og en ekstern (ikke-SAP) system.

Skal vide detaljer om RFC

  • SAP Bruger CPIC (Common Programming Interface for Communication) protokol til at overføre data mellem systemer. Det er det SAP Specifik protokol. Remote Function Call (RFC) er en kommunikationsgrænseflade baseret på CPI-C, men med flere funktioner og nemmere for applikationsprogrammører at bruge
  • RFC-bibliotekets funktioner understøtter C programmeringssprog og Visual Basic (på Windows platforme)
  • RFC-forbindelser kan altid bruges på tværs af hele systemet. Det betyder, at en RFC-forbindelse, du har defineret i klient 000, også kan bruges fra klient 100 (uden forskel).
  • RFC er protokollen til at kalde specielle subrutiner (funktionsmoduler) over netværket. Funktionsmoduler kan sammenlignes med C-funktioner eller PASCAL-procedurer. De har en defineret grænseflade, hvorigennem data, tabeller og returkoder kan udveksles. Funktionsmoduler administreres i R/3-systemet i deres eget funktionsbibliotek, kaldet Funktionsbyggeren.
  • Funktionsbyggeren (transaktion SE37) giver applikationsprogrammører et nyttigt miljø til programmering, dokumentering og Test funktionsmoduler, der kan kaldes lokalt såvel som eksternt. R/3-systemet genererer automatisk den ekstra kode (RFC-stub), der er nødvendig for fjernopkald.
  • Du vedligeholder parametrene for RFC-forbindelser ved hjælp af transaktion SM59. R/3-systemet leveres også med et RFC-SDK (Software Development Kit), der bruger omfattende C-biblioteker til at tillade eksterne programmer at blive tilsluttet til R/3-systemet.
  • Den eneste forskel mellem et fjernkald af et funktionsmodul til en anden server og et lokalt opkald er en speciel parameter (destination), der specificerer den målserver, som programmet skal udføres på.

RFC-fordele

RFC hjælper med at reducere programmørernes indsats ved at lade dem undgå re-udvikling af moduler og metoder på fjernsystemer. Den er i stand til at:

  • Konverter dataene til det format, der kan forstås af det eksterne (mål)system.
  • Konverter dataene til det format, der kan forstås af det eksterne (mål)system.
  • Hent visse rutiner, som er nødvendige for at starte kommunikationen med fjernsystemet.
  • Håndter fejl, der kan opstå i kommunikationsprocessen.

Typer af RFC

Typer af RFC

Syncærefuld

Kræver at både systemerne (klient og server) er tilgængelige på tidspunktet for kommunikation eller dataoverførsel. Det er den mest almindelige type og er påkrævet, når resultatet er påkrævet umiddelbart efter udførelse af sRFC.

sRFC er et kommunikationsmiddel mellem systemer, hvor der kræves anerkendelser. Kildesystemets ressourcer venter på målsystemet og sikrer, at de leverer beskeden/dataene med ACKD. Dataene er konsistente og pålidelige til kommunikation.

Problemet er, at hvis målsystemet ikke er tilgængeligt, venter kildesystemets ressourcer, indtil målsystemet er tilgængeligt. Dette kan føre til, at kildesystemets processer går i dvale/RFC/CPIC-tilstand på målsystemer og blokerer derfor disse ressourcer.

Bruges til

  • Til kommunikation mellem systemer
  • Til kommunikation mellem SAP Web Application Server til SAP GUI

Asynkron

Det er kommunikation mellem systemer, hvor kvitteringer ikke er påkrævet (det svarer til postkortlevering). Det kræver ikke, at begge systemer er tilgængelige på udførelsestidspunktet, og resultatet skal ikke umiddelbart sendes tilbage til det kaldende system .

Kildesystemressourcen venter ikke på målsystemet, da de leverer beskeden/dataene uden at vente på nogen bekræftelse. Det er ikke pålideligt til kommunikation, da data kan gå tabt, hvis målsystemet ikke er tilgængeligt. Anvendes til -

  • Til kommunikation mellem systemer
  • Til parallel bearbejdning

transaktionsbeslutning

Det er en speciel form for aRFC. Transaktionel RFC sikrer transaktionslignende håndtering af behandlingstrin, der oprindeligt var autonome.

Transaktionel RFC er en asynkron kommunikationsmetode, der kun udfører det kaldte funktionsmodul i RFC-serveren én gang, selvom dataene sendes flere gange på grund af et netværksproblem. Fjernsystemet behøver ikke være tilgængeligt på det tidspunkt, hvor RFC-klientprogrammet udfører en tRFC. tRFC-komponenten gemmer den kaldte RFC-funktion sammen med de tilsvarende data i SAP database under et unikt transaktions-id (TID). tRFC ligner aRFC, da det ikke venter ved målsystemet (ligner på en registreret post). Hvis systemet ikke er tilgængeligt, vil det skrive dataene ind i aRFC-tabeller med et transaktions-id (SM58), som vælges af planlæggeren RSARFCSE (som kører hvert 60. sekund). Anvendes til-

  • Udvidelse af Asynkron RFC
  • Til sikker kommunikation mellem systemer

I kø

RFC i kø er en udvidelse af tRFC. Det sikrer også, at individuelle trin behandles i rækkefølge. For at garantere, at flere LUW'er (Logical Unit of Work/ Transaction) behandles i den rækkefølge, som ansøgningen angiver. tRFC kan serialiseres ved hjælp af køer (indgående og udgående køer). Deraf navnet RFC i kø (qRFC). Anvendes til-

  • Udvidelse af Transactional RFC
  • For en defineret behandlingssekvens
  • Implementering af qRFC anbefales, hvis du vil garantere, at flere transaktioner behandles i en foruddefineret rækkefølge.

Typer af RFC-forbindelser

Typer af RFC-forbindelser

Type 3 – indgange angiver forbindelsen mellem ABAP systemer. Her skal vi angive værtsnavnet / IP-adressen. Du kan dog angive logonoplysninger, hvis det ønskes. Dette gælder for begge typer RFC'er, mellem ABAP-systemer og eksterne opkald til ABAP-systemer

Type I - poster angiver ABAP-systemer, der er forbundet til den samme database som det aktuelle system. Disse poster er foruddefinerede og kan ikke ændres. Eksempel på postnavn: ws0015_K18_24

  • ws0015=værtsnavn
  • K18=systemnavn (databasenavn)
  • 24=TCP-tjenestenavn

Type T – destinationer er forbindelser til eksterne programmer, der bruger RFC API til at modtage RFC'er. Aktiveringstypen kan enten være Start eller Registrering. Hvis det er Start, skal du angive værtsnavnet og stinavnet på det program, der skal startes.

Hvordan kodes en RFC?

1) På fanen funktionsmodulattributter (transaktionskode SE37) skal du indstille behandlingstypen som fjernaktiveret modul for at oprette et fjernfunktionsmodul.

Sådan kodes en RFC

2) Skriv koden til funktionsmodulet.

Sådan kodes en RFC

3) Definer destinationen for RFC-serveren i RFC-klientsystemet, der kalder fjernfunktionen (via SM59-transaktion).

Sådan kodes en RFC

4) Erklæring af parametre: Alle parameterfelter for et fjernfunktionsmodul skal defineres som referencefelter, det vil sige som ABAP Dictionary-felter.

5) Undtagelser: Systemet hæver COMMUNICATION_FAILURE og SYSTEM_FAILURE internt. Du kan rejse undtagelser i en fjernfunktion, ligesom du ville gøre i en lokalt kaldet funktion.

Fejlfinding af fjernfunktionsopkald

  • Det er ikke muligt at fejlfinde et fjernfunktionskald til et andet system.
  • Men når du tester ABAP-til-ABAP RFC-opkald, kan du bruge ABAP-debuggeren til at overvåge udførelsen af ​​RFC-funktionen i fjernsystemet.
  • Ved fjernopkald kører ABAP-debuggeren (inklusive fejlfindingsgrænsefladen) på det lokale system. Dataværdier og anden kørselsinformation for fjernfunktionen sendes ind fra fjernsystemet.