Chiamata di funzione remota (RFC) in SAP Esercitazione
Cos'è la RFC?
RFC è un meccanismo che consente alle applicazioni aziendali di comunicare e scambiare informazioni (in formati predefiniti) con altri sistemi. RFC sta per 'Chiamata di funzione remota'
RFC è costituito da due interfacce:
- Un'interfaccia di chiamata per i programmi ABAP
- Un'interfaccia di chiamata per i non-SAP programmi.
Qualsiasi Programma ABAP può chiamare una funzione remota utilizzando il comando FUNZIONE CHIAMATA…DESTINAZIONE dichiarazione. Il DESTINAZIONE il parametro dice a SAP Sistema in cui la funzione chiamata viene eseguita in un sistema diverso da quello chiamante.
Sintassi-
CALL FUNCTION 'remotefunction' DESTINATION dest EXPORTING f1 = IMPORTING f2 = TABLES t1 = EXCEPTIONS
Le destinazioni logiche vengono definite tramite transazione SM59 e memorizzato nella tabella RFCDES
Funzioni dell'interfaccia RFC
- Conversione di tutti i dati dei parametri nella rappresentazione necessaria nel sistema remoto
- Chiamando le routine di comunicazione necessarie per parlare con il sistema remoto.
- Gestire gli errori di comunicazione e avvisare il chiamante, se lo si desidera (utilizzando il parametro ECCEZIONI della FUNZIONE CHIAMATA).
RFC è un SAP protocollo per gestire le comunicazioni tra sistemi per semplificare la relativa programmazione. È il processo di chiamata di un modulo funzione che risiede su una macchina diversa dal programma chiamante. Le RFC possono essere utilizzate anche per chiamare un programma diverso sulla stessa macchina, ma di solito vengono utilizzate 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 SAP di riferimento, e anche tra a SAP e uno esterno (nonSAPsistema).
Dettagli da sapere su RFC
- SAP Utilizza il protocollo CPIC (Common Programming Interface for Communication) per trasferire dati tra sistemi. È SAP Protocollo specifico. Remote Function Call (RFC) è un'interfaccia di comunicazione basata su CPI-C, ma con più funzioni e più semplice da utilizzare per i programmatori di applicazioni
- Le funzioni della libreria RFC supportano il file Linguaggio di programmazione C. e Visual Basic (su Windows piattaforme)
- 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 richiamare sottoprogrammi speciali (moduli funzionali) attraverso la rete. I moduli funzionali sono paragonabili alle funzioni C o alle procedure PASCAL. Hanno un'interfaccia definita attraverso la quale possono essere scambiati dati, tabelle e codici di ritorno. I moduli funzione sono gestiti nel sistema R/3 nella propria 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 Testing moduli funzionali richiamabili sia localmente che da remoto. Il Sistema R/3 genera automaticamente il codice aggiuntivo (RFC stub) necessario per le chiamate remote.
- I parametri per le connessioni RFC vengono mantenuti utilizzando la transazione SM59. L'R/3 System viene inoltre fornito con un RFC-SDK (Software Development Kit) che utilizza ampie librerie C per consentire la connessione di programmi esterni all'R/3 System.
- L'unica differenza tra una chiamata remota di un modulo funzionale ad 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 della RFC
RFC aiuta a ridurre gli sforzi dei programmatori, consentendo loro di evitare il ri-sviluppo di moduli e metodi su sistemi remoti. È sufficientemente in grado di:
- Convertire i dati in un formato comprensibile dal sistema remoto (di destinazione).
- Convertire i dati in un formato comprensibile dal sistema remoto (di destinazione).
- Richiamare alcune routine necessarie per avviare la comunicazione con il sistema remoto.
- Gestire gli errori che potrebbero verificarsi nel processo di comunicazione.
Tipi di RFC
Synccronico
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 riconoscimenti. Le risorse del sistema di origine attendono il sistema di destinazione e assicurano che consegnino il messaggio/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 finché il sistema di destinazione non è disponibile. Ciò potrebbe portare i processi del sistema di origine ad entrare in modalità Sospensione/RFC/CPIC sui sistemi di destinazione e quindi bloccare queste risorse.
Usato per
- Per la comunicazione tra sistemi
- Per la comunicazione tra SAP Server di applicazioni Web a SAP GUI
asincrono
È una comunicazione tra sistemi in cui non sono richiesti riconoscimenti (è simile alla consegna di cartoline). Non richiede che entrambi i sistemi siano disponibili al momento dell'esecuzione e non è necessario che il risultato venga immediatamente rispedito al sistema chiamante .
La risorsa del sistema di origine non attende il sistema di destinazione poiché consegna il messaggio/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 sistemi
- Per l'elaborazione parallela
transazionale
È una forma speciale di aRFC. La RFC transazionale garantisce una gestione simile a quella delle transazioni delle fasi di elaborazione originariamente autonome.
RFC transazionale è 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 al momento in cui il programma client RFC esegue un tRFC. Il componente tRFC memorizza la funzione RFC chiamata, insieme ai dati corrispondenti, nel SAP database con un ID transazione univoco (TID). tRFC è simile a aRFC in quanto non attende nel sistema di destinazione (simile a un post registrato). Se il sistema non è disponibile, scriverà i dati nelle tabelle aRFC con un ID transazione (SM58) che viene scelto dallo scheduler RSARFCSE (che viene eseguito ogni 60 secondi). Usato per-
- Estensione di RFC asincrono
- Per una comunicazione sicura tra i sistemi
In coda
RFC in coda è un'estensione di tRFC. Garantisce inoltre che i singoli passaggi vengano elaborati in sequenza. Per garantire che più LUW (unità logica di lavoro/transazione) vengano elaborate nell'ordine specificato dall'applicazione. tRFC può essere serializzato utilizzando le code (code in entrata e in uscita). Da qui il nome RFC in coda (qRFC). Usato per-
- Estensione della RFC transazionale
- Per una sequenza di lavorazione definita
- Si consiglia l'implementazione di qRFC se si desidera garantire che diverse transazioni vengano elaborate in un ordine predefinito.
Tipi di connessioni RFC
Tipo 3 – le voci specificano la connessione tra Sistemi ABAP. Qui dobbiamo specificare il nome host/indirizzo IP. Se lo si desidera, è tuttavia possibile specificare le informazioni di accesso. Ciò è applicabile per entrambi i tipi di RFC, tra sistemi ABAP e chiamate esterne ai sistemi ABAP
Tipo I – le voci specificano i sistemi ABAP collegati allo stesso database del sistema corrente. Queste voci sono predefinite e non possono essere modificate. Nome della voce di esempio: ws0015_K18_24
- ws0015=nome host
- K18=nome del sistema (nome del database)
- 24=Nome del servizio TCP
Digitare T – le destinazioni sono connessioni a programmi esterni che utilizzano l'API RFC per ricevere RFC. Il tipo di attivazione può essere Inizio o Registrazione. Se è Start, è necessario specificare il nome host e il percorso del programma da avviare.
Come codificare una RFC?
1) Nella scheda degli attributi del modulo funzionale (codice transazione SE37), impostare il tipo di elaborazione come Modulo abilitato a remoto per creare un modulo funzionale remoto.
2) Scrivere il codice per il modulo funzione.
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 funzionale remoto devono essere definiti come campi di riferimento, ovvero come campi del dizionario ABAP.
5) Eccezioni: Il sistema solleva 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 una chiamata di funzione remota ad 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 sull'esecuzione per la funzione remota vengono trasmessi dal sistema remoto.