Remote Function Call (RFC) nel tutorial SAP

Sommario:

Anonim

Cos'è RFC?

RFC è un meccanismo che consente alle applicazioni aziendali di comunicare e scambiare informazioni (in formati predefiniti) con altri sistemi. RFC sta per "Remote Function Call"

RFC è costituito da due interfacce:

  1. Un'interfaccia di chiamata per i programmi ABAP
  2. Un'interfaccia di chiamata per programmi non SAP.

Qualsiasi programma ABAP può chiamare una funzione remota utilizzando l' istruzione CALL FUNCTION… DESTINATION . Il parametro DESTINATION indica al sistema SAP che la funzione chiamata viene eseguita in un sistema diverso dai chiamanti.Sintassi-

FUNZIONE DI CHIAMATA 'remotefunction'DESTINAZIONE destESPORTAZIONE f1 =IMPORTAZIONE f2 =TABELLE t1 =ECCEZIONI

Le destinazioni logiche vengono definite tramite la transazione SM59 e memorizzate nella tabella Funzioni RFCDES
dell'interfaccia RFC

  • Conversione di tutti i dati dei parametri nella rappresentazione necessaria nel sistema remoto
  • Chiamare le routine di comunicazione necessarie per parlare con il sistema remoto.
  • Gestione degli errori di comunicazione e notifica al chiamante, se lo si desidera (utilizzando il parametro EXCEPTIONS della FUNZIONE DI CHIAMATA).


RFC è un protocollo SAP per gestire le comunicazioni tra i sistemi per semplificare la relativa programmazione. È il processo di chiamata di un modulo funzione che risiede su una macchina diversa dal programma chiamante. Gli RFC possono essere utilizzati anche per chiamare un programma diverso sulla stessa macchina, ma di solito vengono utilizzati quando i moduli / programmi funzione "chiamanti" e "chiamati" sono in esecuzione su macchine separate.


In SAP, il sistema di interfaccia RFC viene utilizzato per impostare connessioni RFC tra diversi sistemi SAP e anche tra un sistema SAP e un sistema esterno (non SAP).

Deve conoscere i dettagli su RFC

  • SAP utilizza il protocollo CPIC (Common Programming Interface for Communication) per trasferire i dati tra i sistemi. È un protocollo specifico per SAP. Remote Function Call (RFC) è un'interfaccia di comunicazione basata su CPI-C, ma con più funzioni e più facile da usare per i programmatori di applicazioni
  • Le funzioni della libreria RFC supportano il linguaggio di programmazione C e Visual Basic (su piattaforme Windows)
  • Le connessioni RFC possono sempre essere utilizzate nell'intero sistema. Ciò significa che una connessione RFC definita nel client 000 può essere utilizzata anche dal client 100 (senza alcuna differenza).
  • RFC è il protocollo per chiamare speciali subroutine (moduli funzionali) sulla rete. I moduli funzionali sono paragonabili alle funzioni C o alle procedure PASCAL. Hanno un'interfaccia definita attraverso la quale è possibile scambiare dati, tabelle e codici di ritorno. I moduli funzione sono gestiti nel sistema R / 3 nella loro libreria di funzioni, chiamata Function Builder.
  • Il Function Builder (transazione SE37) fornisce ai programmatori di applicazioni un ambiente utile per la programmazione, la documentazione e il test di moduli funzionali che possono essere chiamati localmente e in remoto. Il sistema R / 3 genera automaticamente il codice aggiuntivo (stub RFC) necessario per le chiamate remote.
  • I parametri per le connessioni RFC vengono mantenuti utilizzando la transazione SM59. Il sistema R / 3 viene inoltre fornito con un RFC-SDK (Software Development Kit) che utilizza ampie librerie C per consentire la connessione di programmi esterni al sistema R / 3.
  • L'unica differenza tra una chiamata remota di un modulo funzione a un altro server e una chiamata locale è un parametro speciale (destinazione) che specifica il server di destinazione su cui deve essere eseguito il programma.

I vantaggi RFC:

RFC aiuta a ridurre gli sforzi dei programmatori, consentendo loro di evitare il ri-sviluppo di moduli e metodi su sistemi remoti. È abbastanza in grado di:

  • Converti i dati nel formato comprensibile dal sistema remoto (target).
  • Converti i dati nel formato comprensibile dal sistema remoto (target).
  • Richiama alcune routine necessarie per avviare la comunicazione con il sistema remoto.
  • Gestire gli errori che potrebbero verificarsi nel processo di comunicazione.

Tipi di RFC:


Sincrono

Richiede che entrambi i sistemi (client e server) siano disponibili al momento della comunicazione o del trasferimento dei dati. È il tipo più comune ed è richiesto quando il risultato è richiesto immediatamente dopo l'esecuzione di sRFC.
sRFC è un mezzo di comunicazione tra sistemi in cui sono richiesti i riconoscimenti. Le risorse del sistema di origine attendono sul sistema di destinazione e assicurano che consegnino il messaggio / i dati con ACKD. I dati sono coerenti e affidabili per la comunicazione.
Il problema è che se il sistema di destinazione non è disponibile, le risorse del sistema di origine attendono fino a quando il sistema di destinazione non è disponibile. Ciò può portare i processi del sistema di origine ad entrare in modalità Sleep / RFC / CPIC nei sistemi di destinazione e quindi bloccare queste risorse.
Usato per

  • Per la comunicazione tra i sistemi
  • Per la comunicazione tra SAP Web Application Server e SAP GUI

Asincrono

È la comunicazione tra sistemi in cui non sono richiesti riconoscimenti (è simile alla consegna di una cartolina), non richiede che entrambi i sistemi siano disponibili al momento dell'esecuzione e il risultato non deve essere immediatamente rinviato al sistema chiamante .

La risorsa del sistema di origine non attende il sistema di destinazione mentre recapita il messaggio / i dati senza attendere alcun riconoscimento. Non è affidabile per la comunicazione poiché i dati potrebbero andare persi se il sistema di destinazione non è disponibile. Usato per -

  • Per la comunicazione tra i sistemi
  • Per l'elaborazione parallela

Transazionale

È una forma speciale di aRFC. L'RFC transazionale garantisce la gestione simile a una transazione delle fasi di elaborazione originariamente autonome.

Transactional RFC è un metodo di comunicazione asincrono che esegue il modulo funzione chiamato nel server RFC solo una volta, anche se i dati vengono inviati più volte a causa di qualche problema di rete. Il sistema remoto non deve essere disponibile nel momento in cui il programma client RFC sta eseguendo un tRFC. Il componente tRFC memorizza la funzione RFC chiamata, insieme ai dati corrispondenti, nel database SAP sotto un ID transazione univoco (TID). tRFC è simile a aRFC in quanto non attende nel sistema di destinazione (simile a un messaggio registrato). Se il sistema non è disponibile, scriverà i dati in tabelle aRFC con un ID transazione (SM58) che viene selezionato dallo scheduler RSARFCSE (che viene eseguito ogni 60 secondi). Usato per-

  • Estensione della RFC asincrona
  • Per una comunicazione sicura tra i sistemi

In coda

L'RFC in coda è un'estensione di tRFC. Assicura inoltre che i singoli passaggi vengano elaborati in sequenza.

Per garantire che più LUW (Logical Unit of Work / Transaction) vengano elaborate nell'ordine specificato dall'applicazione. tRFC può essere serializzato utilizzando le code (code in entrata e in uscita). Da qui il nome in coda RFC (qRFC). Usato per-

  • Estensione della RFC transazionale
  • Per una sequenza di elaborazione definita
  • L'implementazione di qRFC è consigliata se si desidera garantire che più transazioni vengano elaborate in un ordine predefinito.

Tipi di connessioni RFC


Tipo 3 : le voci specificano la connessione tra i sistemi ABAP. Qui, dobbiamo specificare il nome host / indirizzo IP. È tuttavia possibile specificare le informazioni di accesso, se lo si desidera. Questo è applicabile per entrambi i tipi di RFC, tra sistemi ABAP e chiamate esterne a sistemi ABAPTipo I: le voci specificano i sistemi ABAP collegati allo stesso database del sistema corrente. Queste voci sono predefinite e non possono essere modificate. Nome voce di esempio: ws0015_K18_24

  • ws0015 = nome host
  • K18 = nome del sistema (nome del database)
  • 24 = nome del servizio TCP

Tipo T : le destinazioni sono connessioni a programmi esterni che utilizzano l'API RFC per ricevere RFC. Il tipo di attivazione può essere Avvio o Registrazione. Se è Start, è necessario specificare il nome host e il percorso del programma da avviare.

Come codificare un RFC?

1. Nella scheda Attributi modulo funzione (codice transazione SE37), impostare il tipo di elaborazione come Modulo abilitato per il remoto per creare un modulo per la funzione remoto.


2. Scrivere il codice per il modulo funzionale.


3. Definire la destinazione del server RFC nel sistema client RFC che chiama la funzione remota (tramite transazione SM59).


4.Dichiarazione dei parametri : tutti i campi dei parametri per un modulo funzione remoto devono essere definiti come campi di riferimento, cioè come i campi Dizionario ABAP.5. Eccezioni: il sistema genera internamente COMMUNICATION_FAILURE e SYSTEM_FAILURE. Puoi sollevare eccezioni in una funzione remota proprio come faresti in una funzione chiamata localmente.

Debug delle chiamate di funzioni remote

  • Non è possibile eseguire il debug di una chiamata di funzione remota su un altro sistema.
  • Tuttavia, durante il test delle chiamate RFC ABAP-ABAP, è possibile utilizzare il debugger ABAP per monitorare l'esecuzione della funzione RFC nel sistema remoto.
  • Con le chiamate remote, il debugger ABAP (inclusa l'interfaccia di debug) viene eseguito sul sistema locale. I valori dei dati e altre informazioni di esecuzione per la funzione remota vengono trasmessi dal sistema remoto.