Fjärrfunktionsanrop (RFC) in SAP Handledning
Vad är RFC?
RFC är en mekanism som tillåter affärsapplikationer att kommunicera och utbyta information (i fördefinierade format) med andra system. RFC står för "Fjärrfunktionssamtal"
RFC består av två gränssnitt:
- Ett anropsgränssnitt för ABAP-program
- Ett anropsgränssnitt för icke-SAP program.
Vilken som helst ABAP-program kan anropa en fjärrfunktion med hjälp av SAMTALSFUNKTION...DESTINATION påstående. De DESTINATION parametern talar om för SAP System som den anropade funktionen körs i ett annat system än de som ringer.
Syntax-
CALL FUNCTION 'remotefunction' DESTINATION dest EXPORTING f1 = IMPORTING f2 = TABLES t1 = EXCEPTIONS
Logiska destinationer definieras via transaktion SM59 och lagras i tabell RFCDES
RFC-gränssnittets funktioner
- Konvertering av alla parameterdata till den representation som behövs i fjärrsystemet
- Ringer upp de kommunikationsrutiner som behövs för att prata med fjärrsystemet.
- Hantera kommunikationsfel och meddela den som ringer, om så önskas (med parametern EXCEPTIONS i SAMTALSFUNKTIONEN).
RFC är en SAP protokoll för att hantera kommunikation mellan system för att förenkla den relaterade programmeringen. Det är processen att anropa en funktionsmodul som finns på en annan maskin än anroparprogrammet. RFC:er kan också användas för att anropa ett annat program på samma maskin, men vanligtvis används det när "anropande" och "anropade" funktionsmoduler/program körs på separata maskiner.
In SAP, RFC-gränssnittssystem används för att sätta upp RFC-anslutningar mellan olika SAP system, och även mellan en SAP och en extern (icke-SAP) systemet.
Måste känna till detaljer om RFC
- SAP Använder CPIC (Common Programming Interface for Communication) Protocol för att överföra data mellan system. Det är det SAP Specifikt protokoll. Remote Function Call (RFC) är ett kommunikationsgränssnitt baserat på CPI-C, men med fler funktioner och lättare för applikationsprogrammerare att använda
- RFC-bibliotekets funktioner stöder C programmeringsspråk och Visual Basic (på Windows plattformar)
- RFC-anslutningar kan alltid användas över hela systemet. Det betyder att en RFC-anslutning som du har definierat i klient 000 även kan användas från klient 100 (utan någon skillnad).
- RFC är protokollet för anrop av speciella subrutiner (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 deras eget funktionsbibliotek, kallat Funktionsbyggaren.
- Funktionsbyggaren (transaktion SE37) ger applikationsprogrammerare en användbar miljö för programmering, dokumentering och Testning funktionsmoduler som kan anropas lokalt såväl som på distans. R/3-systemet genererar automatiskt tilläggskoden (RFC-stubb) som behövs för fjärrsamtal.
- Du underhå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 tillåta externa program att anslutas till R/3-systemet.
- Den enda skillnaden mellan ett fjärranrop av en funktionsmodul till en annan server och ett lokalt anrop är en speciell parameter (destination) som anger målservern på vilken programmet ska köras.
RFC-fördelarna
RFC hjälper till att minska ansträngningarna för programmerare genom att låta dem undvika omutveckling av moduler och metoder på fjärrsystem. Den är tillräckligt kapabel att:
- Konvertera data till det format som kan förstås av fjärrsystemet (mål).
- Konvertera data till det format som kan förstås av fjärrsystemet (mål).
- Ta fram vissa rutiner som är nödvändiga för att starta kommunikationen med fjärrsystemet.
- Hantera fel som kan uppstå i kommunikationsprocessen.
Typer av RFC
Synchederlig
Kräver att båda systemen (klient och server) är tillgängliga vid tidpunkten för kommunikation eller dataöverföring. Det är den vanligaste typen och krävs när resultatet krävs direkt efter exekveringen av sRFC.
sRFC är ett kommunikationsmedel mellan system där bekräftelser krävs. Källsystemets resurser väntar på målsystemet och säkerställer att de levererar meddelandet/data med ACKD. Uppgifterna är konsekventa och tillförlitliga 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 på målsystem och blockerar därför dessa resurser.
Används för
- För kommunikation mellan system
- För kommunikation mellan SAP Web Application Server till SAP GUI
Asynchronous
Det är kommunikation mellan system där bekräftelser inte krävs (det liknar vykortsleverans). Det kräver inte att båda systemen är tillgängliga vid tidpunkten för exekveringen och resultatet behöver inte omedelbart skickas tillbaka till det anropande systemet .
Källsystemresursen 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
transaktions~~POS=TRUNC
Det är en speciell form av aRFC. Transaktionell RFC säkerställer transaktionsliknande hantering av behandlingssteg som ursprungligen var autonoma.
Transaktionell RFC är en asynkron kommunikationsmetod som exekverar den anropade funktionsmodulen i RFC-servern endast 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 vid den tidpunkt då RFC-klientprogrammet exekverar en tRFC. tRFC-komponenten lagrar den anropade RFC-funktionen, tillsammans med motsvarande data, i SAP databas under ett unikt transaktions-ID (TID). tRFC liknar aRFC eftersom det inte väntar vid 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
I kö
Queued RFC är en förlängning av tRFC. Det säkerställer också att enskilda steg bearbetas i sekvens. För att garantera att flera LUW (Logical Unit of Work/ Transaction) behandlas i den ordning som anges av ansökan. tRFC kan serialiseras med hjälp av köer (inkommande och utgående köer). Därav namnet queued RFC (qRFC). Används för-
- Förlängning 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 kopplingen mellan ABAP-system. Här måste vi ange värdnamn / IP-adress. Du kan dock ange inloggningsinformation om så önskas. Detta gäller för båda typerna av RFC:er, mellan ABAP-system och externa samtal till ABAP-system
Typ I - poster anger ABAP-system som är anslutna till samma databas som det aktuella systemet. Dessa poster är fördefinierade och kan inte ändras. Exempel på postens namn: 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 programmet som ska startas.
Hur kodar man 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 ta upp undantag i en fjärrfunktion precis som du skulle göra i en lokalt anropad funktion.
Felsökning av fjärrfunktionsanrop
- Det är inte möjligt att felsöka ett fjärrfunktionsanrop till ett annat system.
- Men när du testar ABAP-till-ABAP RFC-anrop kan du använda ABAP-debuggern för att övervaka exekveringen 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.