Hvad er RFC?
RFC er en mekanisme, der giver forretningsapplikationer mulighed for at kommunikere og udveksle information (i foruddefinerede formater) med andre systemer. RFC står for 'Remote Function Call'
RFC består af to grænseflader:
- En opkaldsgrænseflade til ABAP-programmer
- En opkaldsgrænseflade til ikke-SAP-programmer.
Ethvert ABAP-program kan ringe til en fjernfunktion ved hjælp af CALL FUNCTION ... DESTINATION- sætningen. Den DESTINATION parameter fortæller SAP-systemet, at den kaldte funktion kører i et andet land end opkald system.Syntaks-
OPKALDFUNKTION 'fjernbetjening'DESTINATION destEKSPORTERER f1 =IMPORTERING f2 =TABLER t1 =UNDTAGELSER
Logiske destinationer defineres via transaktion SM59 og gemmes i tabel RFCDES-
funktioner i RFC-grænsefladen
- Konvertering af alle parameterdata til den nødvendige repræsentation i fjernsystemet
- Opkald til de kommunikationsrutiner, der er nødvendige for at tale med fjernsystemet.
- Håndtering af kommunikationsfejl og om nødvendigt underretning af den, der ringer op (ved hjælp af parameteren EXCEPTIONS i CALL FUNCTION).
RFC er en SAP-protokol til håndtering af kommunikation mellem systemer for at forenkle den relaterede programmering. Det er processen med at kalde et funktionsmodul, der findes 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 funktionsmoduler / programmer til 'kald' og 'kaldet' kører på separate maskiner.
I SAP bruges RFC-interface-system til opsætning af RFC-forbindelser mellem forskellige SAP-systemer og også mellem et SAP og et eksternt (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 SAP-specifik protokol. Remote Function Call (RFC) er en kommunikationsgrænseflade baseret på CPI-C, men med flere funktioner og lettere for applikationsprogrammerere at bruge
- RFC-biblioteksfunktionerne understøtter C-programmeringssproget og Visual Basic (på Windows-platforme)
- RFC-forbindelser kan altid bruges på tværs af hele systemet, hvilket 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 underrutiner (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 styres i R / 3-systemet i deres eget funktionsbibliotek, kaldet Function Builder.
- Function Builder (transaktion SE37) giver applikationsprogrammerere et nyttigt miljø til programmering, dokumentation og test af funktionsmoduler, der kan kaldes lokalt såvel som eksternt. R / 3-systemet genererer automatisk den ekstra kode (RFC-stub), der er nødvendig til fjernopkald.
- Du opretholder parametrene for RFC-forbindelser ved hjælp af transaktion SM59. R / 3-systemet leveres også med et RFC-SDK (softwareudviklingssæt), der bruger omfattende C-biblioteker til at muliggøre tilslutning af eksterne programmer til R / 3-systemet.
- Den eneste forskel mellem et fjernopkald fra 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å genudvikling af moduler og metoder på eksterne systemer. Det er i stand til at:
- Konverter dataene til det format, som det eksterne (mål) system kan forstå.
- Konverter dataene til det format, som det eksterne (mål) system kan forstå.
- Hent visse rutiner, der er nødvendige for at starte kommunikation med fjernsystemet.
- Håndter fejl, der kan opstå i kommunikationsprocessen.
Typer af RFC:
Synkron
Kræver, at begge systemer (klient og server) skal være tilgængelige på tidspunktet for kommunikation eller dataoverførsel. Det er den mest almindelige type og kræves, når resultatet kræves umiddelbart efter udførelsen af sRFC.
sRFC er et kommunikationsmiddel mellem systemer, hvor der kræves kvittering. Kildesystemets ressourcer venter på målsystemet og sikrer, at de leverer meddelelsen / dataene med ACKD. Dataene er konsistente og pålidelige til kommunikation.
Problemet er, at hvis målsystemet ikke er tilgængeligt, venter kildesystemressourcerne, indtil målsystemet er tilgængeligt. Dette kan føre til, at kildesystemets processer går i dvaletilstand / RFC / CPIC-tilstand ved målsystemer og dermed blokerer disse ressourcer.
Anvendes til
- Til kommunikation mellem systemer
- Til kommunikation mellem SAP Web Application Server til SAP GUI
Asynkron
Det er kommunikation mellem systemer, hvor der ikke kræves kvittering (det svarer til levering af postkort). Det kræver ikke, at begge systemer er tilgængelige på tidspunktet for udførelsen, og at resultatet ikke straks skal sendes tilbage til det kaldende system. .Kildesystemressourcen venter ikke på målsystemet, da de leverer meddelelsen / 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 behandling
Transaktionel
Det er en særlig 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 på RFC-serveren en gang, selvom dataene sendes flere gange på grund af et eller andet 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-databasen under et unikt transaktions-id (TID). tRFC svarer til aRFC, da den ikke venter på målsystemet (svarer til et registreret indlæg). 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 i hvert 60. sekund). Anvendes til-
- Udvidelse af asynkron RFC
- For 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 (Logisk enhed af arbejde / transaktion) behandles i den rækkefølge, der er angivet i applikationen. tRFC kan serieliseres ved hjælp af køer (indgående og udgående køer). Derfor står navnet RFC (qRFC) i kø. 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
Type 3 - poster angiver forbindelsen mellem ABAP-systemer. Her skal vi angive værtsnavnet / IP-adressen. Du kan dog specificere loginoplysninger, hvis det ønskes. Dette gælder for begge typer RFC'er mellem ABAP-systemer og eksterne opkald til ABAP-systemerType I - poster angiver ABAP-systemer, der er tilsluttet den samme database som det nuværende system. Disse poster er foruddefinerede og kan ikke ændres. Eksempel på postnavn: ws0015_K18_24
- ws0015 = værtsnavn
- K18 = systemnavn (database navn)
- 24 = TCP-servicenavn
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 stienavnet på det program, der skal startes.
Hvordan kode en RFC?
1. I funktionsmodulets attributter (transaktionskode SE37) skal du indstille behandlingstypen som Fjernaktiveret modul for at oprette et fjernfunktionsmodul.
2. Skriv koden til funktionsmodulet.
3. Definer destinationen for RFC-serveren i RFC-klientsystemet, der kalder op til fjernfunktionen (via SM59-transaktion).
4. Erklæring af parametre : Alle parameterfelter for et fjernfunktionsmodul skal defineres som referencefelter, dvs. som ABAP Dictionary-felter.5. undtagelser: Systemet hæver COMMUNICATION_FAILURE og SYSTEM_FAILURE internt. Du kan hæve undtagelser i en fjernfunktion ligesom i en lokalt kaldet funktion.
Fejlfinding af opkald til fjernbetjening
- Det er ikke muligt at fejle et eksternt funktionsopkald til et andet system.
- Men når du tester ABAP-til-ABAP RFC-opkald, kan du bruge ABAP-fejlfindingsprogrammet til at overvåge udførelsen af RFC-funktionen i fjernsystemet.
- Med fjernopkald kører ABAP-fejlfindingsprogrammet (inklusive fejlfindingsgrænsefladen) på det lokale system. Dataværdier og anden kørselsinformation til fjernfunktionen sendes fra fjernsystemet.