Apel de funcții la distanță (RFC) în tutorialul SAP

Cuprins:

Anonim

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 funcție la distanță”

RFC constă din două interfețe:

  1. O interfață de apelare pentru programe ABAP
  2. O interfață de apelare pentru programe non-SAP.

Orice program ABAP poate apela o funcție la distanță folosind instrucțiunea CALL FUNCTION ... DESTINATION . DESTINAȚIE Parametrul spune SAP System că numita funcție se execută într - o altă țară decât apelanții de sistem.Sintaxă-

FUNCȚIA DE APEL „funcție la distanță”DESTINAȚIE destEXPORTARE f1 =IMPORTARE f2 =TABELE t1 =EXCEPȚII

Destinațiile logice sunt definite prin tranzacția SM59 și stocate în tabelul Funcții RFCDES
ale interfeței RFC

  • Conversia tuturor datelor parametrilor la reprezentarea necesară în sistemul la distanță
  • Apelarea rutinelor de comunicare necesare pentru a vorbi cu sistemul la distanță.
  • Tratarea erorilor de comunicații și notificarea apelantului, dacă se dorește (folosind parametrul EXCEPTIONS al FUNCȚIEI DE APEL).


RFC este un protocol SAP 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 altă mașină decât programul apelantului. RFC-urile pot fi utilizate pentru a apela un program diferit și pe aceeași mașină, dar, de obicei, este utilizat atunci când modulele / programele funcționale „apelare” și „apelare” rulează pe mașini separate.


În SAP, sistemul de interfață RFC este utilizat pentru configurarea conexiunilor RFC între diferite sisteme SAP, precum și între un SAP și un sistem extern (non-SAP).

Detalii despre RFC

  • SAP utilizează protocolul CPIC (Common Programming Interface for Communication) pentru a transfera date între sisteme. Este protocolul SAP 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 de programatorii de aplicații
  • Funcțiile bibliotecii RFC acceptă limbajul de programare C și Visual Basic (pe platformele Windows)
  • Conexiunile RFC pot fi utilizate întotdeauna pe întregul sistem. Aceasta înseamnă că o conexiune RFC pe care ați definit-o în clientul 000 poate fi utilizată ș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 funcționale sunt gestionate în sistemul R / 3 în propria lor bibliotecă de funcții, numită Generator de funcții.
  • Function Builder (tranzacția SE37) oferă programatorilor de aplicații un mediu util pentru programarea, documentarea și testarea modulelor 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ță.
  • Păstrați parametrii pentru conexiunile RFC utilizând tranzacția SM59. Sistemul R / 3 este, de asemenea, livrat cu un RFC-SDK (Software Development Kit) care utilizează biblioteci extinse C pentru a permite conectarea programelor externe la sistemul R / 3.
  • Singura diferență dintre 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-le să evite re-dezvoltarea modulelor și metodelor la sistemele la distanță. Este suficient de capabil să:

  • Convertiți datele în formatul ușor de înțeles de sistemul la distanță (țintă).
  • Convertiți datele în formatul ușor de înțeles de sistemul la distanță (țintă).
  • Apelați anumite rutine necesare pentru a începe comunicarea cu sistemul la distanță.
  • Manipulați erorile care ar putea apărea în procesul de comunicare.

Tipuri de RFC:


Sincron

Necesită ca ambele sisteme (client și server) să fie disponibile în momentul comunicării sau al transferului de date. Este cel mai comun tip și este necesar atunci când rezultatul este necesar imediat după executarea sRFC.
sRFC este un mijloc de comunicare între sistemele în care sunt necesare confirmări. Resursele sistemului sursă așteaptă sistemul țintă și se asigură că livrează mesajul / datele cu ACKD. Datele sunt consistente și fiabile pentru comunicare.
Problema este dacă sistemul țintă nu este disponibil, resursele sistemului sursă așteaptă până când sistemul țintă este disponibil. Acest lucru poate duce la Procesele sistemului sursă pentru a intra în modul Repaus / RFC / CPIC la sistemele țintă și, prin urmare, blochează aceste resurse.
Folosit pentru

  • Pentru comunicarea între sisteme
  • Pentru comunicarea între SAP Web Application Server și SAP GUI

Asincron

Este o comunicare între sisteme în care nu sunt necesare confirmări (este similară cu livrarea cărților poștale). Nu necesită ca ambele sisteme să fie disponibile în momentul executării și nu este necesar ca rezultatul să fie trimis imediat înapoi la sistemul de apelare .

Resursa sistemului sursă nu așteaptă sistemul țintă deoarece livrează mesajul / datele fără a aștepta nici o confirmare. Nu este fiabil pentru comunicare, deoarece datele se pot pierde dacă sistemul țintă nu este disponibil. Folosit pentru -

  • Pentru comunicarea între sisteme
  • Pentru procesare paralelă

Tranzacțional

Este o formă specială de aRFC. RFC tranzacțional asigură gestionarea tranzacțională a etapelor de procesare care au fost inițial autonome.

RFC tranzacțional este o metodă de comunicare asincronă care execută modulul funcțional apelat în serverul RFC o singură dată, chiar dacă datele sunt trimise de mai multe ori din cauza unor 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 baza de date SAP sub un ID de tranzacție unic (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 tabele aRFC cu un ID de tranzacție (SM58) care este ales de planificatorul RSARFCSE (care rulează la fiecare 60 de secunde). Folosit pentru-

  • Extinderea RFC asincron
  • Pentru o comunicare sigură între sisteme

În așteptare

RFC în coadă este o extensie a tRFC. De asemenea, se asigură că etapele individuale sunt procesate în ordine.

Pentru a garanta că mai multe LUW-uri (unitate logică de lucru / tranzacție) sunt procesate în ordinea specificată de aplicație. tRFC poate fi serializat folosind cozi (cozi de intrare și ieșire). De aici și numele RFC (qRFC) în coadă. 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


Tipul 3 - intrările specifică conexiunea dintre sistemele ABAP. Aici, trebuie să specificăm numele gazdei / adresa IP. Cu toate acestea, puteți specifica informații de conectare, dacă doriți. Acest lucru este aplicabil pentru ambele tipuri de RFC-uri, între sistemele ABAP și apelurile externe către sistemele ABAPTip I - intrările specifică sistemele ABAP conectate la aceeași bază de date ca sistemul curent. Aceste intrări sunt predefinite și nu pot fi modificate. Nume exemplu de intrare: ws0015_K18_24

  • ws0015 = numele gazdei
  • K18 = numele sistemului (numele bazei de date)
  • 24 = numele serviciului TCP

Tipul T - destinațiile sunt conexiuni la programe externe care utilizează API-ul RFC pentru a primi RFC-uri. Tipul de activare poate fi Start sau Î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 a modulului funcțional (cod tranzacție 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 la distanță (prin tranzacție SM59).


4. Declararea parametrilor : Toate câmpurile de parametri pentru un modul funcțional la distanță trebuie definite ca câmpuri de referință, adică ca câmpurile dicționar ABAP.5. Excepții: sistemul creează COMMUNICATION_FAILURE și SYSTEM_FAILURE intern. Puteți ridica excepții într-o funcție la distanță la fel cum ați face într-o funcție numită local.

Depanarea apelurilor de funcții la distanță

  • Nu este posibil să depanați un apel de funcție la distanță către un alt sistem.
  • Cu toate acestea, atunci când testați apelurile RFAP ABAP-la-ABAP, puteți utiliza depanatorul ABAP pentru a monitoriza execuția funcției RFC în sistemul de la distanță.
  • Cu apelurile 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 la distanță sunt transmise din sistemul la distanță.