Apel de funcție de la distanță (RFC) în SAP tutorial
Ce este RFC?
RFC este un mecanism care permite aplicațiilor de afaceri să comunice și să schimbe informații (în formate predefinite) cu alte sisteme. RFC înseamnă „Apel de funcție de la distanță”
RFC este format din două interfețe:
- O interfață de apelare pentru programele ABAP
- O interfață de apelare pentru non-SAP programe.
Orice program ABAP poate apela o funcție de la distanță folosind FUNCȚIE DE APEL...DESTINATIE afirmație. The DESTINAŢIE parametrul spune SAP Sistem pe care funcția apelată îl rulează într-un alt sistem decât cei care apelează.
Sintaxă-
CALL FUNCTION 'remotefunction' DESTINATION dest EXPORTING f1 = IMPORTING f2 = TABLES t1 = EXCEPTIONS
Destinațiile logice sunt definite prin tranzacție SM59 și stocate în tabel RFCDES
Funcțiile interfeței RFC
- Convertirea tuturor datelor parametrilor la reprezentarea necesară în sistemul de la distanță
- Apelarea rutinelor de comunicare necesare pentru a vorbi cu sistemul de la distanță.
- Gestionarea erorilor de comunicație și notificarea apelantului, dacă se dorește (folosind parametrul EXCEPȚII din FUNCȚIA DE APEL).
RFC este un SAP protocol pentru a gestiona comunicațiile între sisteme pentru a simplifica programarea aferentă. Este procesul de apelare a unui modul funcțional care se află pe o mașină diferită de programul apelant. RFC-urile pot fi folosite și pentru a apela un program diferit de pe aceeași mașină, dar de obicei, este folosit atunci când modulele/programele funcționale „apelate” și „apelate” rulează pe mașini separate.
In SAP, Sistemul de interfață RFC este utilizat pentru configurarea conexiunilor RFC între diferite SAP sisteme, și, de asemenea, între a SAP și un extern (non-SAP) sistem.
Trebuie să știți detalii despre RFC
- SAP Utilizează protocolul CPIC (Common Programming Interface for Communication) pentru a transfera date între sisteme. Este SAP Protocol specific. Remote Function Call (RFC) este o interfață de comunicații bazată pe CPI-C, dar cu mai multe funcții și mai ușor de utilizat pentru programatorii de aplicații
- Funcțiile bibliotecii RFC acceptă limbaj de programare C și Visual Basic (activat Windows platforme)
- Conexiunile RFC pot fi întotdeauna utilizate în întregul sistem. Aceasta înseamnă că o conexiune RFC pe care ați definit-o în clientul 000 poate fi folosită și de la clientul 100 (fără nicio diferență).
- RFC este protocolul pentru apelarea subrutinelor speciale (module funcționale) prin rețea. Modulele funcționale sunt comparabile cu funcțiile C sau procedurile PASCAL. Au o interfață definită prin care pot fi schimbate date, tabele și coduri de returnare. Modulele de funcții sunt gestionate în sistemul R/3 în propria bibliotecă de funcții, numită Function Builder.
- Function Builder (tranzacția SE37) oferă programatorilor de aplicații un mediu util pentru programare, documentare și Testarea module funcționale care pot fi apelate atât local, cât și de la distanță. Sistemul R/3 generează automat codul suplimentar (RFC stub) necesar pentru apelurile de la distanță.
- Mențineți parametrii pentru conexiunile RFC utilizând tranzacția SM59. Sistemul R/3 este, de asemenea, livrat cu un RFC-SDK (kit de dezvoltare software) care utilizează biblioteci C extinse pentru a permite conectarea programelor externe la sistemul R/3.
- Singura diferență între un apel la distanță al unui modul funcțional către un alt server și un apel local este un parametru special (destinație) care specifică serverul țintă pe care urmează să fie executat programul.
Avantajele RFC
RFC ajută la reducerea eforturilor programatorilor, permițându-i să evite redezvoltarea modulelor și metodelor la sistemele de la distanță. Este suficient de capabil să:
- Convertiți datele într-un format ușor de înțeles de sistemul de la distanță (țintă).
- Convertiți datele într-un format ușor de înțeles de sistemul de la distanță (țintă).
- Apelați anumite rutine care sunt necesare pentru a începe comunicarea cu sistemul de la distanță.
- Gestionați erorile care ar putea apărea în procesul de comunicare.
Tipuri de RFC
Synccinstit
Necesită ca ambele sisteme (client și server) să fie disponibile în momentul comunicării sau transferului de date. Este cel mai comun tip și este necesar atunci când rezultatul este necesar imediat după execuția sRFC.
sRFC este un mijloc de comunicare între sisteme în care sunt necesare confirmări. Resursele sistemului sursă așteaptă pe sistemul țintă și se asigură că livrează mesajul/datele cu ACKD. Datele sunt consistente și de încredere pentru comunicare.
Problema este că dacă sistemul țintă nu este disponibil, resursele sistemului sursă așteaptă până când sistemul țintă este disponibil. Acest lucru poate duce la ca Procesele sistemului sursă să intre în modul Sleep/RFC/CPIC la sistemele țintă și, prin urmare, blochează aceste resurse.
Folosit pentru
- Pentru comunicarea între sisteme
- Pentru comunicarea între SAP Web Application Server la SAP GUI
asincronă
Este o comunicare între sisteme în care nu sunt necesare confirmări (este similar cu livrarea cărții poștale). Nu necesită ca ambele sisteme să fie disponibile în momentul execuției și rezultatul nu este necesar să fie trimis imediat înapoi către sistemul apelant. .
Resursa Sistemul sursă nu așteaptă sistemul țintă, deoarece acesta livrează mesajul/datele fără a aștepta vreo confirmare. Nu este de încredere pentru comunicare, deoarece datele se pot pierde dacă sistemul țintă nu este disponibil. Folosit pentru -
- Pentru comunicarea între sisteme
- Pentru procesare paralelă
Tranzactionala
Este o formă specială de aRFC. RFC tranzacțională asigură o gestionare asemănătoare unei tranzacții a etapelor de procesare care au fost inițial autonome.
RFC tranzacțional este o metodă de comunicare asincronă care execută modulul de funcție numit în serverul RFC o singură dată, chiar dacă datele sunt trimise de mai multe ori din cauza unei probleme de rețea. Sistemul la distanță nu trebuie să fie disponibil în momentul în care programul client RFC execută un tRFC. Componenta tRFC stochează funcția RFC numită, împreună cu datele corespunzătoare, în SAP baza de date sub un ID unic de tranzacție (TID). tRFC este similar cu aRFC, deoarece nu așteaptă la sistemul țintă (similar cu o postare înregistrată). Dacă sistemul nu este disponibil, va scrie datele în tabelele aRFC cu un ID de tranzacție (SM58) care este ales de planificatorul RSARFCSE (care rulează la fiecare 60 de secunde). Folosit pentru-
- Extensie a RFC asincron
- Pentru comunicarea sigură între sisteme
În așteptare
RFC în coadă este o extensie a tRFC. De asemenea, se asigură că pașii individuali sunt procesați în succesiune. Pentru a garanta că mai multe LUW (Unitate logică de lucru/tranzacție) sunt procesate în ordinea specificată de aplicație. tRFC poate fi serializat folosind cozi (cozi de intrare și de ieșire). De aici și numele RFC în coadă (qRFC). Folosit pentru-
- Extinderea RFC tranzacțională
- Pentru o secvență de procesare definită
- Implementarea qRFC este recomandată dacă doriți să garantați că mai multe tranzacții sunt procesate într-o ordine predefinită.
Tipuri de conexiuni RFC
Tip 3 – intrările specifică legătura dintre sisteme ABAP. Aici, trebuie să specificăm numele gazdei / adresa IP. Puteți, totuși, să specificați informații de conectare dacă doriți. Acest lucru este aplicabil pentru ambele tipuri de RFC, între sisteme ABAP și apeluri externe către sisteme ABAP
Tip I - intrările specifică sisteme ABAP conectate la aceeași bază de date ca și sistemul curent. Aceste intrări sunt predefinite și nu pot fi modificate. Exemplu de nume de intrare: ws0015_K18_24
- ws0015=nume gazdă
- K18=numele sistemului (numele bazei de date)
- 24=Numele serviciului TCP
Tastați T – destinațiile sunt conexiuni la programe externe care utilizează API-ul RFC pentru a primi RFC-uri. Tipul de activare poate fi fie Pornire, fie Înregistrare. Dacă este Start, trebuie să specificați numele gazdei și calea programului care urmează să fie pornit.
Cum se codifică un RFC?
1) În fila Atribute modul modulului funcțional (codul tranzacției SE37), setați tipul de procesare ca Modul activat la distanță pentru a crea un modul funcțional la distanță.
2) Scrieți codul pentru modulul funcțional.
3) Definiți destinația serverului RFC în sistemul client RFC care apelează funcția de la distanță (prin tranzacția SM59).
4) Declararea parametrilor: Toate câmpurile de parametri pentru un modul de funcții la distanță trebuie definite ca câmpuri de referință, adică ca câmpurile Dicționar ABAP.
5) Excepții: Sistemul generează COMMUNICATION_FAILURE și SYSTEM_FAILURE intern. Puteți ridica excepții într-o funcție de la distanță exact așa cum ați face într-o funcție numită local.
Depanarea apelurilor de funcții de la distanță
- Acesta este nu se poate depana un apel de la distanță la un alt sistem.
- Cu toate acestea, atunci când testați apelurile RFC ABAP-la-ABAP, puteți utiliza depanatorul ABAP pentru a monitoriza execuția funcției RFC în sistemul de la distanță.
- Cu apeluri de la distanță, depanatorul ABAP (inclusiv interfața de depanare) rulează pe sistemul local. Valorile datelor și alte informații de rulare pentru funcția de la distanță sunt transmise de la sistemul de la distanță.