Remote Function Call (RFC) i SAP Tutorial

Innehållsförteckning:

Anonim

Vad är RFC?

RFC är en mekanism som gör det möjligt för affärsapplikationer att kommunicera och utbyta information (i fördefinierade format) med andra system. RFC står för 'Remote Function Call'

RFC består av två gränssnitt:

  1. Ett samtalsgränssnitt för ABAP-program
  2. Ett samtalsgränssnitt för icke-SAP-program.

Vilket ABAP-program som helst kan ringa en fjärrfunktion med CALL FUNCTION ... DESTINATION- uttalandet. Den DESTINATION parametern berättar SAP-systemet att den anropade funktionen körs i en annan än den som ringer systemet.Syntax-

RINGFUNKTION 'fjärrfunktion'DESTINATION destEXPORTERA f1 =IMPORTERING f2 =TABELLER t1 =UNDANTAG

Logiska destinationer definieras via transaktion SM59 och lagras i tabellen RFCDES-
funktioner i RFC-gränssnittet

  • Konverterar all parameterdata till den representation som behövs i fjärrsystemet
  • Ringer de kommunikationsrutiner som behövs för att prata med fjärrsystemet.
  • Hantera kommunikationsfel och meddela den som ringer om så önskas (med EXCEPTIONS-parametern i CALL FUNCTION).


RFC är ett SAP-protokoll för att hantera kommunikation mellan system för att förenkla relaterad programmering. Det är processen att anropa en funktionsmodul som finns på en annan maskin än uppringningsprogrammet. RFC-skivor kan också användas för att anropa ett annat program på samma maskin, men vanligtvis används det när funktionsmoduler / -program kallas och kallas på separata maskiner.


I SAP används RFC-gränssnittssystem för att ställa in RFC-anslutningar mellan olika SAP-system och även mellan ett SAP och ett externt (icke-SAP) system.

Måste veta detaljer om RFC

  • SAP använder CPIC (Common Programming Interface for Communication) Protocol för att överföra data mellan system. Det är SAP-specifikt protokoll. Remote Function Call (RFC) är ett kommunikationsgränssnitt baserat på CPI-C, men med fler funktioner och enklare för applikationsprogrammerare att använda
  • RFC-biblioteksfunktionerna stöder C-programmeringsspråket och Visual Basic (på Windows-plattformar)
  • RFC-anslutningar kan alltid användas över hela systemet, vilket innebär att en RFC-anslutning som du har definierat i klient 000 också kan användas från klient 100 (utan någon skillnad).
  • RFC är protokollet för att anropa speciella underrutiner (funktionsmoduler) över nätverket. Funktionsmoduler är jämförbara med C-funktioner eller PASCAL-procedurer. De har ett definierat gränssnitt genom vilket data, tabeller och returkoder kan utbytas. Funktionsmoduler hanteras i R / 3-systemet i sitt eget funktionsbibliotek, kallat Function Builder.
  • Function Builder (transaktion SE37) ger applikationsprogrammerare en användbar miljö för programmering, dokumentation och testning av funktionsmoduler som kan anropas lokalt såväl som på distans. R / 3-systemet genererar automatiskt den extra kod (RFC-stub) som behövs för fjärrsamtal.
  • Du behåller parametrarna för RFC-anslutningar med transaktion SM59. R / 3-systemet levereras också med ett RFC-SDK (Software Development Kit) som använder omfattande C-bibliotek för att möjliggöra anslutning av externa program till R / 3-systemet.
  • Den enda skillnaden mellan ett fjärransamtal från en funktionsmodul till en annan server och ett lokalt samtal är en speciell parameter (destination) som anger målservern som programmet ska köras på.

RFC-fördelarna:

RFC hjälper till att minska programmers ansträngningar genom att låta dem undvika återutveckling av moduler och metoder på fjärrsystem. Den är tillräckligt kapabel för att:

  • Konvertera data till det format som är förståeligt för fjärrsystemet (mål).
  • Konvertera data till det format som är förståeligt för fjärrsystemet (mål).
  • Hämta vissa rutiner som är nödvändiga för att starta kommunikation med fjärrsystemet.
  • Hantera fel som kan uppstå i kommunikationsprocessen.

Typer av RFC:


Synkron

Kräver att båda systemen (klient och server) ska vara tillgängliga vid tidpunkten för kommunikation eller dataöverföring. Det är den vanligaste typen och krävs när resultatet krävs omedelbart efter genomförandet av sRFC.
sRFC är ett kommunikationsmedel mellan system där bekräftelser krävs. Källsystemets resurser väntar på målsystemet och ser till att de levererar meddelandet / data med ACKD. Uppgifterna är konsekventa och pålitliga för kommunikation.
Problemet är att om målsystemet inte är tillgängligt, väntar källsystemets resurser tills målsystemet är tillgängligt. Detta kan leda till att källsystemets processer går in i viloläge / RFC / CPIC-läge vid målsystem och därmed blockerar dessa resurser.
Används för

  • För kommunikation mellan system
  • För kommunikation mellan SAP Web Application Server till SAP GUI

Asynkron

Det är kommunikation mellan system där bekräftelser inte krävs (det liknar leverans av vykort). Det kräver inte att båda systemen är tillgängliga vid tidpunkten för körningen och resultatet inte omedelbart måste skickas tillbaka till det anropande systemet .

Källsystemets resurs väntar inte på målsystemet eftersom de levererar meddelandet / data utan att vänta på någon bekräftelse. Det är inte tillförlitligt för kommunikation eftersom data kan gå förlorade om målsystemet inte är tillgängligt. Används för -

  • För kommunikation mellan system
  • För parallell bearbetning

Transaktionellt

Det är en speciell form av aRFC. Transaktionell RFC säkerställer transaktionslik hantering av bearbetningssteg som ursprungligen var autonoma.

Transactional RFC är en asynkron kommunikationsmetod som kör den anropade funktionsmodulen i RFC-servern bara en gång, även om data skickas flera gånger på grund av något nätverksproblem. Fjärrsystemet behöver inte vara tillgängligt när RFC-klientprogrammet kör en tRFC. TRFC-komponenten lagrar den anropade RFC-funktionen tillsammans med motsvarande data i SAP-databasen under ett unikt transaktions-ID (TID). tRFC liknar aRFC eftersom det inte väntar på målsystemet (liknar ett registrerat inlägg). Om systemet inte är tillgängligt kommer det att skriva in data i aRFC-tabeller med ett transaktions-ID (SM58) som väljs av schemaläggaren RSARFCSE (som körs var 60: e sekund). Används för-

  • Förlängning av asynkron RFC
  • För säker kommunikation mellan system

Kö RFC är en förlängning av tRFC. Det säkerställer också att enskilda steg bearbetas i följd.

För att garantera att flera LUW: er (logisk enhet för arbete / transaktion) behandlas i den ordning som anges i applikationen. tRFC kan serieseras med hjälp av köer (inkommande och utgående köer). Därav namnet RFC (qRFC) i kö. Används för-

  • Utvidgning av Transactional RFC
  • För en definierad bearbetningssekvens
  • Implementering av qRFC rekommenderas om du vill garantera att flera transaktioner behandlas i en fördefinierad ordning.

Typer av RFC-anslutningar


Typ 3 - poster anger anslutningen mellan ABAP-system. Här måste vi ange värdnamnet / IP-adressen. Du kan dock ange inloggningsinformation om så önskas. Detta gäller för båda typerna av RFC mellan ABAP-system och externa samtal till ABAP-systemTyp I - poster anger ABAP-system som är anslutna till samma databas som det nuvarande systemet. Dessa poster är fördefinierade och kan inte ändras. Exempel på postnamn: ws0015_K18_24

  • ws0015 = värdnamn
  • K18 = systemnamn (databasnamn)
  • 24 = TCP-tjänstens namn

Typ T - destinationer är anslutningar till externa program som använder RFC API för att ta emot RFC: er. Aktiveringstypen kan vara antingen Start eller Registrering. Om det är Start måste du ange värdnamnet och sökvägen för det program som ska startas.

Hur kodar jag en RFC?

1. På fliken funktionsmodulattribut (transaktionskod SE37), ställ in bearbetningstypen som fjärraktiverad modul för att skapa en fjärrfunktionsmodul.


2. Skriv koden för funktionsmodulen.


3. Definiera destinationen för RFC-servern i RFC-klientsystemet som anropar fjärrfunktionen (via SM59-transaktion).


4.Deklarera parametrar : Alla parameterfält för en fjärrfunktionsmodul måste definieras som referensfält, det vill säga som ABAP Dictionary-fält.5. undantag: Systemet höjer COMMUNICATION_FAILURE och SYSTEM_FAILURE internt. Du kan höja undantagen i en fjärrfunktion precis som i en lokalt kallad funktion.

Felsökning av fjärrfunktionssamtal

  • Det är inte möjligt att felsöka ett fjärrfunktionsanrop till ett annat system.
  • Men när du testar ABAP-till-ABAP RFC-samtal kan du använda ABAP-felsökaren för att övervaka utförandet av RFC-funktionen i fjärrsystemet.
  • Med fjärrsamtal körs ABAP-felsökaren (inklusive felsökningsgränssnittet) på det lokala systemet. Datavärden och annan körinformation för fjärrfunktionen skickas in från fjärrsystemet.