Hva er RFC?
RFC er en mekanisme som lar forretningsapplikasjoner kommunisere og utveksle informasjon (i forhåndsdefinerte formater) med andre systemer. RFC står for 'Remote Function Call'
RFC består av to grensesnitt:
- Et anropsgrensesnitt for ABAP-programmer
- Et ringegrensesnitt for ikke-SAP-programmer.
Ethvert ABAP-program kan ringe til en ekstern funksjon ved å bruke CALL FUNCTION ... DESTINATION- setningen. Den DESTINASJON parameter forteller SAP-systemet at den anropte funksjons løper i en annen enn den som ringer system.Syntaks-
RINGFUNKSJON 'fjernkontroll'DESTINASJON destEKSPORTERER f1 =IMPORTERING f2 =TABELLER t1 =UNNTAK
Logiske destinasjoner defineres via transaksjon SM59 og lagres i tabellen RFCDES-
funksjoner til RFC-grensesnittet
- Konvertering av alle parameterdata til representasjonen som trengs i det eksterne systemet
- Ringer til kommunikasjonsrutinene som trengs for å snakke med det eksterne systemet.
- Håndtere kommunikasjonsfeil og varsle innringeren, hvis ønskelig (ved hjelp av parameteren EXCEPTIONS for CALL FUNCTION).
RFC er en SAP-protokoll for å håndtere kommunikasjon mellom systemer for å forenkle den relaterte programmeringen. Det er prosessen med å ringe til en funksjonsmodul som ligger på en annen maskin enn innringerprogrammet. RFC-er kan også brukes til å ringe et annet program på samme maskin, men vanligvis brukes det når funksjonsmoduler / programmer som kalles og kalles, kjører på separate maskiner.
I SAP brukes RFC Interface-system for å sette opp RFC-forbindelser mellom forskjellige SAP-systemer, og også mellom et SAP og et eksternt (ikke-SAP) system.
Må vite detaljer om RFC
- SAP bruker CPIC (Common Programming Interface for Communication) Protocol for å overføre data mellom systemer. Det er SAP-spesifikk protokoll. Remote Function Call (RFC) er et kommunikasjonsgrensesnitt basert på CPI-C, men med flere funksjoner og enklere for applikasjonsprogrammerere å bruke
- RFC-biblioteksfunksjonene støtter C-programmeringsspråket og Visual Basic (på Windows-plattformer)
- RFC-tilkoblinger kan alltid brukes over hele systemet. Dette betyr at en RFC-forbindelse du har definert i klient 000, også kan brukes fra klient 100 (uten forskjell).
- RFC er protokollen for å ringe spesielle underrutiner (funksjonsmoduler) over nettverket. Funksjonsmoduler er sammenlignbare med C-funksjoner eller PASCAL-prosedyrer. De har et definert grensesnitt der data, tabeller og returkoder kan byttes ut. Funksjonsmoduler administreres i R / 3-systemet i sitt eget funksjonsbibliotek, kalt Function Builder.
- Function Builder (transaksjon SE37) gir applikasjonsprogrammerere et nyttig miljø for programmering, dokumentasjon og testing av funksjonsmoduler som kan kalles lokalt så vel som eksternt. R / 3-systemet genererer automatisk tilleggskoden (RFC-stubbe) som er nødvendig for eksterne samtaler.
- Du opprettholder parametrene for RFC-tilkoblinger ved hjelp av transaksjon SM59. R / 3-systemet leveres også med et RFC-SDK (Software Development Kit) som bruker omfattende C-biblioteker for å tillate at eksterne programmer kobles til R / 3-systemet.
- Den eneste forskjellen mellom en ekstern samtale fra en funksjonsmodul til en annen server og en lokal samtale er en spesiell parameter (destinasjon) som spesifiserer målserveren som programmet skal kjøres på.
RFC-fordelene:
RFC bidrar til å redusere innsatsen til programmerere, ved å la dem unngå reutvikling av moduler og metoder på eksterne systemer. Den er i stand til å:
- Konverter dataene til formatet som er forståelig av det eksterne (mål) systemet.
- Konverter dataene til formatet som er forståelig av det eksterne (mål) systemet.
- Åpne visse rutiner som er nødvendige for å starte kommunikasjon med det eksterne systemet.
- Håndter feil som kan oppstå i kommunikasjonsprosessen.
Typer RFC:
Synkron
Krever at begge systemene (klient og server) skal være tilgjengelige på tidspunktet for kommunikasjon eller dataoverføring. Det er den vanligste typen og kreves når resultatet kreves umiddelbart etter utførelsen av sRFC.
sRFC er et kommunikasjonsmiddel mellom systemer der det kreves bekreftelser. Ressursene til kildesystemet venter på målsystemet og sørger for at de leverer meldingen / dataene med ACKD. Dataene er konsistente og pålitelige for kommunikasjon.
Problemet er at hvis målsystemet ikke er tilgjengelig, venter kildesystemressursene til målsystemet er tilgjengelig. Dette kan føre til at kildesystemets prosesser går i hvilemodus / RFC / CPIC-modus på målsystemer og dermed blokkerer disse ressursene.
Brukt til
- For kommunikasjon mellom systemer
- For kommunikasjon mellom SAP Web Application Server til SAP GUI
Asynkron
Det er kommunikasjon mellom systemer der bekreftelser ikke er påkrevd (det ligner på levering av postkort). Det krever ikke at begge systemene er tilgjengelige på tidspunktet for utførelsen, og at resultatet ikke umiddelbart kreves sendt tilbake til anropssystemet. .Kildesystemressursen venter ikke på målsystemet da de leverer meldingen / dataene uten å vente på bekreftelse. Det er ikke pålitelig for kommunikasjon siden data kan gå tapt hvis målsystemet ikke er tilgjengelig. Brukt til -
- For kommunikasjon mellom systemer
- For parallell behandling
Transaksjonell
Det er en spesiell form for aRFC. Transactional RFC sikrer transaksjonslignende håndtering av behandlingstrinn som opprinnelig var autonome.Transactional RFC er en asynkron kommunikasjonsmetode som bare utfører den kalte funksjonsmodulen i RFC-serveren en gang, selv om dataene sendes flere ganger på grunn av noe nettverksproblem. Eksternt system trenger ikke å være tilgjengelig på det tidspunktet RFC-klientprogrammet kjører en tRFC. TRFC-komponenten lagrer den kalt RFC-funksjonen, sammen med tilsvarende data, i SAP-databasen under en unik transaksjons-ID (TID). tRFC ligner på aRFC da den ikke venter på målsystemet (ligner på et registrert innlegg). Hvis systemet ikke er tilgjengelig, vil det skrive dataene inn i aRFC-tabeller med en transaksjons-ID (SM58) som plukkes av planleggeren RSARFCSE (som kjører hvert 60. sekund). Brukt For-
- Utvidelse av asynkron RFC
- For sikker kommunikasjon mellom systemene
I kø
RFC i kø er en utvidelse av tRFC. Det sørger også for at individuelle trinn behandles i rekkefølge.For å garantere at flere LUW-er (logisk arbeidsenhet / transaksjon) behandles i den rekkefølgen spesifisert av applikasjonen. tRFC kan serieiseres ved hjelp av køer (inn- og utgående køer). Derav navnet i kø RFC (qRFC). Brukt For-
- Utvidelse av Transactional RFC
- For en definert behandlingssekvens
- Implementering av qRFC anbefales hvis du vil garantere at flere transaksjoner behandles i en forhåndsdefinert rekkefølge.
Typer RFC-tilkoblinger
Type 3 - oppføringer angir forbindelsen mellom ABAP-systemer. Her må vi spesifisere vertsnavnet / IP-adressen. Du kan imidlertid spesifisere påloggingsinformasjon hvis ønskelig. Dette gjelder for begge typer RFC-er, mellom ABAP-systemer og eksterne anrop til ABAP-systemerType I - oppføringer angir ABAP-systemer som er koblet til samme database som det nåværende systemet. Disse oppføringene er forhåndsdefinerte og kan ikke endres. Eksempel på oppføringsnavn: ws0015_K18_24
- ws0015 = vertsnavn
- K18 = systemnavn (databasenavn)
- 24 = TCP-tjenestenavn
Type T - destinasjoner er tilkoblinger til eksterne programmer som bruker RFC API for å motta RFCer. Aktiveringstypen kan være enten Start eller Registrering. Hvis det er Start, må du spesifisere vertsnavnet og stienavnet til programmet som skal startes.
Hvordan kode en RFC?
1. I funksjonsmodulattributtfanen (transaksjonskode SE37) angir du behandlingstypen som ekstern aktivert modul for å opprette en ekstern funksjonsmodul.
2. Skriv koden for funksjonsmodulen.
3. Definer destinasjonen til RFC-serveren i RFC-klientsystemet som kaller fjernfunksjonen (via SM59-transaksjon).
4. Deklarerende parametere : Alle parameterfelt for en ekstern funksjonsmodul må defineres som referansefelt, det vil si som ABAP Dictionary-felt.5. unntak: Systemet hever COMMUNICATION_FAILURE og SYSTEM_FAILURE internt. Du kan heve unntak i en ekstern funksjon, akkurat som i en lokalt kalt funksjon.
Feilsøking av eksterne samtalefunksjoner
- Det er ikke mulig å feilsøke et eksternt funksjonsanrop til et annet system.
- Når du tester ABAP-til-ABAP RFC-samtaler, kan du imidlertid bruke ABAP-feilsøkingsprogrammet til å overvåke kjøringen av RFC-funksjonen i det eksterne systemet.
- Med eksterne samtaler kjører ABAP-feilsøkingsprogrammet (inkludert feilsøkingsgrensesnittet) på det lokale systemet. Dataverdier og annen kjøreinformasjon for fjernfunksjonen sendes inn fra det eksterne systemet.