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:

  1. Ett anropsgränssnitt för ABAP-program
  2. 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-gränssnittets funktioner

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.

RFC-gränssnittets funktioner

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

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

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.

Hur man kodar en RFC

2) Skriv koden för funktionsmodulen.

Hur man kodar en RFC

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

Hur man kodar en RFC

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.