Remote Function Call (RFC) inn SAP Opplæringen

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 'Ekstern funksjonsanrop'

RFC består av to grensesnitt:

  1. Et anropsgrensesnitt for ABAP-programmer
  2. Et anropsgrensesnitt for ikke-SAP programmer.

Noen ABAP-program kan kalle en fjernfunksjon ved å bruke RINGFUNKSJON...DESTINASJON uttalelse. De MÅL parameter forteller SAP System som den oppringte funksjonen kjører i et annet system enn de som ringer.

Syntaks-

CALL FUNCTION 'remotefunction'

DESTINATION dest

EXPORTING f1 =

IMPORTING f2 =

TABLES t1 =

EXCEPTIONS

Logiske destinasjoner defineres via transaksjon SM59 og lagret i tabell RFCDES

Funksjoner til RFC-grensesnittet

  • Konvertering av alle parameterdata til representasjonen som trengs i det eksterne systemet
  • Ringer kommunikasjonsrutinene som trengs for å snakke med det eksterne systemet.
  • Håndtering av kommunikasjonsfeil, og varsle den som ringer, hvis ønskelig (ved å bruke EXCEPTIONS-parameteren til CALL FUNCTION).

Funksjoner til RFC-grensesnittet

RFC er en SAP protokoll for å håndtere kommunikasjon mellom systemer for å forenkle den relaterte programmeringen. Det er prosessen med å kalle en funksjonsmodul som ligger på en annen maskin enn oppringerprogrammet. RFC-er kan også brukes til å kalle et annet program på samme maskin, men vanligvis brukes det når funksjonsmoduler/programmer for "ringer" og "oppringte" kjører på separate maskiner.

Funksjoner til RFC-grensesnittet

In SAP, RFC Interface-system brukes for å sette opp RFC-forbindelser mellom ulike SAP systemer, og også mellom en SAP og en ekstern (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 det 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åk og Visual Basic (på Windows plattformer)
  • RFC-tilkoblinger kan alltid brukes på tvers av 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 å kalle spesielle subrutiner (funksjonsmoduler) over nettverket. Funksjonsmoduler er sammenlignbare med C-funksjoner eller PASCAL-prosedyrer. De har et definert grensesnitt som data, tabeller og returkoder kan utveksles gjennom. Funksjonsmoduler administreres i R/3-systemet i deres eget funksjonsbibliotek, kalt funksjonsbyggeren.
  • Funksjonsbyggeren (transaction SE37) gir applikasjonsprogrammerere et nyttig miljø for programmering, dokumentering og Testing funksjonsmoduler som kan kalles lokalt så vel som eksternt. R/3-systemet genererer automatisk tilleggskoden (RFC-stubben) som trengs for eksterne samtaler.
  • Du opprettholder parametrene for RFC-tilkoblinger ved å bruke transaksjon SM59. R/3-systemet leveres også med en RFC-SDK (Software Development Kit) som bruker omfattende C-biblioteker for å tillate eksterne programmer å kobles til R/3-systemet.
  • Den eneste forskjellen mellom et eksternt kall fra en funksjonsmodul til en annen server og et lokalt kall 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å re-utvikling 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.
  • Hent frem visse rutiner som er nødvendige for å starte kommunikasjon med fjernsystemet.
  • Håndtere feil som kan oppstå i kommunikasjonsprosessen.

Typer RFC

Typer RFC

Syncærefull

Krever at begge systemene (klient og server) er tilgjengelige på tidspunktet for kommunikasjon eller dataoverføring. Det er den vanligste typen og kreves når resultatet kreves umiddelbart etter utførelse 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 prosessene til kildesystemet går inn i hvilemodus/RFC/CPIC-modus på målsystemer og blokkerer derfor disse ressursene.

brukes 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 nødvendig (det ligner på postkortlevering). Det krever ikke at begge systemene er tilgjengelige på utførelsestidspunktet, og resultatet er ikke umiddelbart nødvendig å sendes tilbake til det ringe systemet. .

Kildesystemressursen venter ikke på målsystemet når de leverer meldingen/dataene uten å vente på noen bekreftelse. Det er ikke pålitelig for kommunikasjon siden data kan gå tapt hvis målsystemet ikke er tilgjengelig. Brukes til –

  • For kommunikasjon mellom systemer
  • For parallell behandling

transaksjons~~POS=TRUNC

Det er en spesiell form for aRFC. Transaksjonell RFC sikrer transaksjonslignende håndtering av behandlingstrinn som opprinnelig var autonome.

Transaksjons-RFC er en asynkron kommunikasjonsmetode som utfører den kalte funksjonsmodulen i RFC-serveren bare én gang, selv om dataene sendes flere ganger på grunn av et nettverksproblem. Det eksterne systemet trenger ikke være tilgjengelig på tidspunktet når RFC-klientprogrammet kjører en tRFC. tRFC-komponenten lagrer den kalte RFC-funksjonen, sammen med de tilsvarende dataene, i SAP database under en unik transaksjons-ID (TID). tRFC ligner på aRFC da den ikke venter ved 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 velges av planleggeren RSARFCSE (som kjører hvert 60. sekund). Brukes til-

  • Utvidelse av asynkron RFC
  • For sikker kommunikasjon mellom systemer

I kø

RFC i kø er en utvidelse av tRFC. Det sikrer også at individuelle trinn behandles i rekkefølge. For å garantere at flere LUW-er (Logical Unit of Work/ Transaction) blir behandlet i den rekkefølgen som er spesifisert av søknaden. tRFC kan serialiseres ved hjelp av køer (innkommende og utgående køer). Derav navnet i kø RFC (qRFC). Brukes til-

  • Utvidelse av Transactional RFC
  • For en definert behandlingssekvens
  • Implementering av qRFC anbefales dersom du vil garantere at flere transaksjoner behandles i en forhåndsdefinert rekkefølge.

Typer RFC-tilkoblinger

Typer RFC-tilkoblinger

Type 3 – oppføringer spesifiserer forbindelsen mellom ABAP-systemer. Her må vi spesifisere vertsnavnet / IP-adressen. Du kan imidlertid spesifisere påloggingsinformasjon om ønskelig. Dette gjelder for begge typer RFC-er, mellom ABAP-systemer og eksterne anrop til ABAP-systemer

Type I – oppføringer spesifiserer ABAP-systemer koblet til samme database som det gjeldende 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

Skriv T – destinasjoner er tilkoblinger til eksterne programmer som bruker RFC API for å motta RFC-er. Aktiveringstypen kan enten være Start eller Registrering. Hvis det er Start, må du spesifisere vertsnavnet og banenavnet til programmet som skal startes.

Hvordan kode en RFC?

1) I funksjonsmodulattributter-fanen (transaksjonskode SE37) setter du behandlingstypen som Remote-aktivert modul for å opprette en ekstern funksjonsmodul.

Hvordan kode en RFC

2) Skriv koden for funksjonsmodulen.

Hvordan kode en RFC

3) Definer destinasjonen til RFC-serveren i RFC-klientsystemet som kaller opp fjernfunksjonen (via SM59-transaksjon).

Hvordan kode en RFC

4) Erklære 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 gjøre unntak i en ekstern funksjon akkurat som du ville gjort i en lokalt kalt funksjon.

Feilsøking av eksterne funksjonsanrop

  • Det er ikke mulig å feilsøke et eksternt funksjonskall til et annet system.
  • Men når du tester ABAP-til-ABAP RFC-anrop, kan du bruke ABAP-feilsøkeren til å overvåke utførelsen av RFC-funksjonen i det eksterne systemet.
  • Med eksterne samtaler kjører ABAP-feilsøkeren (inkludert feilsøkingsgrensesnittet) på det lokale systemet. Dataverdier og annen kjøringsinformasjon for fjernfunksjonen sendes inn fra fjernsystemet.