Remote Function Call (RFC) u SAP ABAP vodič
⚡ Pametni sažetak
Udaljeni poziv funkcije (RFC) je SAP komunikacijski mehanizam koji omogućuje ABAP programu pozivanje funkcijskog modula koji se izvršava na drugom SAP ili vanjski sustav. To je apsolutnotracprovjerava mrežne instalacije, pretvara formate podataka i jasno prijavljuje kvarove pozivatelju.

Što je RFC u SAP?
RFC zalaže za Poziv udaljene funkcijeTo je mehanizam koji omogućuje poslovnim aplikacijama komunikaciju i razmjenu informacija - u unaprijed definiranim formatima - s drugim sustavima. RFC je najčešći način SAP sustav razgovara s drugim, a ujedno je i most koji povezuje SAP sustave za ne-SAP aplikacija.
RFC nudi dva sučelja:
- Sučelje za pozivanje ABAP programi.
- Sučelje za pozivanje za ne-SAP Programi.
Bilo koji ABAP program može pozvati udaljenu funkciju pomoću FUNKCIJA POZIVA…ODREDIŠTE izjava. The DESTINATION parametar govori SAP sustav na kojem se pozvana funkcija izvršava na drugom sustavu od pozivatelja.
Sintaksa
CALL FUNCTION 'remotefunction'
DESTINATION dest
EXPORTING f1 = ...
IMPORTING f2 = ...
TABLES t1 = ...
EXCEPTIONS ...
Logička odredišta definirana su putem transakcije SM59 i pohranjene u tablici RFCDES.
Funkcije RFC sučelja
RFC runtime je odgovoran za tri stvari u svakom pozivu:
- Pretvaranje svih parametarskih podataka u prikaz koji očekuje udaljeni sustav.
- Pozivanje komunikacijskih rutina potrebnih za razgovor s udaljenim sustavom.
- Rješavanje komunikacijskih pogrešaka i njihovo prikazivanje pozivatelju putem
EXCEPTIONSparametarCALL FUNCTION.
RFC je SAP protokol koji obrađuje komunikaciju između sustava i pojednostavljuje povezano programiranje. To je proces pozivanja funkcijskog modula koji se nalazi na drugom računalu od pozivajućeg programa. RFC-ovi se tehnički mogu koristiti za pozivanje funkcijskog modula na isti stroju, ali se najčešće koriste kada se pozivajući i pozvani programi izvode na odvojenim strojevima. RFC sustav sučelja koristi se za postavljanje RFC veza između različitih SAP sustavi, kao i između SAP i vanjski (ne-SAP) sustavi.
Detalji koje morate znati o RFC-u
- SAP koristi CPIC protokol (Common Programming Interface for Communication) za prijenos podataka između sustava. CPIC je SAP-specifičan. RFC je komunikacijsko sučelje izgrađeno na CPI-C-u, ali s više funkcija i prilagođenijim okruženjem za programere aplikacija.
- Funkcije RFC knjižnice podržavaju C programski jezik i Visual Basic na Windows platforme.
- RFC veze rade na cijelom sustavu. RFC veza definirana u klijentu 000 može se koristiti i s klijenta 100 bez ikakve razlike.
- RFC je protokol za pozivanje specijaliziranih potprograma (funkcijskih modula) preko mreže. Funkcijski moduli usporedivi su s C funkcijama ili Pascal procedurama: oni otkrivaju definirano sučelje putem kojeg se razmjenjuju podaci, tablice i povratni kodovi. Funkcijskim modulima se upravlja unutar SAP sustav u namjenskoj knjižnici, Graditelj funkcija.
- Graditelj funkcija (transakcija SE37) pruža programerima aplikacija okruženje za pisanje, dokumentiranje i testiranje funkcijski moduli koji se mogu pozivati lokalno i daljinski. Sustav automatski generira dodatni kod ( RFC završetak) potrebno za udaljene pozive.
- RFC veze se održavaju pomoću transakcija SM59. SAP također šalje RFC-SDK (Komplet za razvoj softvera) koji koristi opsežne C biblioteke kako bi se vanjski programi mogli povezati s SAP sustav.
- Jedina razlika između udaljenog poziva drugom poslužitelju i lokalnog poziva je
DESTINATIONparametar koji određuje ciljni poslužitelj na kojem bi se program trebao izvršavati.
Prednosti RFC-a
RFC smanjuje napor programiranja uklanjanjem potrebe za ponovnom implementacijom modula i metoda na udaljenom kraju. RFC sloj brine se o:
- Pretvaranje podataka u format koji udaljeni (ciljni) sustav može razumjeti.
- Pozivanje rutina potrebnih za uspostavljanje komunikacije s udaljenim sustavom.
- Rješavanje grešaka koje se javljaju tijekom komunikacije.
- Pružanje pouzdane transakcijske semantike kada se koriste transakcijske ili varijante u redu čekanja.
Vrste RFC-a
SAP podržava četiri RFC varijante. Svaka nudi drugačiji kompromis između latencije, pouzdanosti i jamstava naručivanja.
1. Synckronični RFC (sRFC)
SyncKronični RFC zahtijeva da i klijent i poslužitelj budu dostupni u trenutku poziva. To je najčešći tip i koristi se kad god pozivatelju treba rezultat odmah nakon izvršavanja.
sRFC je sredstvo komunikacije između sustava gdje se očekuju potvrde. Resursi izvornog sustava čekaju na ciljnom sustavu i osiguravaju da poruka stigne s ACK-om. Razmijenjeni podaci su konzistentni i pouzdani.
Nedostatak je taj što ako ciljni sustav nije dostupan, resursi izvornog sustava čekaju dok se on ne vrati, što može gurnuti procese izvornog sustava u način rada Sleep/RFC/CPIC na ciljnom sustavu i blokirati resurse.
Koristi za:
- Komunikacija u stvarnom vremenu između sustava.
- Komunikacija između SAP Web aplikacijski poslužitelj i SAP GUI.
2. Asinkroni RFC (aRFC)
Asinkroni RFC je komunikacija između sustava gdje nije potrebna potvrda - usporedivo s ispuštanjemping razglednica poštom. Oba sustava ne moraju biti dostupna u trenutku izvršavanja, a rezultat se ne vraća odmah pozivnom sustavu.
Resurs izvornog sustava ne čeka ciljni sustav; on isporučuje podatke i nastavlja dalje. Zbog toga je aRFC brz, ali ne i pouzdan sam po sebi - podaci se mogu izgubiti ako ciljni sustav nije dostupan.
Koristi za:
- Komunikacija između sustava po principu "isključi i zaboravi".
- Paralelna obrada u različitim sustavima.
3. Transakcijski RFC (tRFC)
Transakcijski RFC je poseban oblik asinhronog RFC-a. Osigurava transakcijsko rukovanje koracima obrade koji bi inače bili autonomni.
tRFC izvršava pozvani funkcijski modul na RFC poslužitelju točno jednom, čak i ako se podaci šalju više puta zbog problema s mrežom. Udaljeni sustav ne mora biti dostupan u trenutku kada RFC klijent pokreće poziv. tRFC komponenta pohranjuje pozvanu funkciju i njezine podatke u SAP baza podataka pod jedinstvenom ID transakcije (TID)Ako ciljni sustav nije dostupan, podaci se zapisuju u RFC tablice (vidljive u transakciji SM58) a kasnije ih je preuzeo izvještaj planera RSARFCSE, koji se izvodi svakih 60 sekundi.
Koristi za:
- Proširenje asinhronog RFC-a s isporukom najviše jednom.
- Pouzdana komunikacija između sustava gdje je važno izvršenje točno jednom.
4. RFC u redu čekanja (qRFC)
RFC u redu čekanja proširuje tRFC jamčeći da se pojedinačni koraci obrađuju u redoslijedu koji je odredila pozivajuća aplikacija. Kako bi se osiguralo da se više LUW-ova (Logičkih jedinica rada / transakcija) obrađuje u predviđenom redoslijedu, tRFC se može serijalizirati pomoću dolaznih i odlaznih redova čekanja - otuda i naziv "RFC u redu čekanja".
Koristi za:
- Proširenje transakcijskog RFC-a strogim uređenjem.
- Scenariji u kojima je definirani slijed obrade obavezan.
- Slučajevi u kojima se nekoliko transakcija mora obraditi unaprijed definiranim redoslijedom.
Usporedba tipova RFC-a
| Tip | Pozivatelj čeka? | Pouzdan? | Naručeno? | Najbolje za |
|---|---|---|---|---|
| sRFC | Da | Da | N/A (jedan poziv) | Pretrage u stvarnom vremenu |
| aRFC | Ne | Ne | Ne | Ispali i zaboravi, paralelni rad |
| tRFC | Ne | Da (točno jednom) | Ne | Pouzdana asinkrona ažuriranja |
| qRFC | Ne | Da (točno jednom) | Da | Strogo uređena ažuriranja |
Vrste RFC veza
SM59 podržava nekoliko vrsta povezivanja. Tri s kojima ćete se najčešće susresti sažete su u nastavku.
Tip 3 — ABAP-ABAP
Unosi tipa 3 određuju vezu između ABAP sustaviNaziv hosta ili IP adresa su obavezni; podaci za prijavu mogu se navesti opcionalno. Tip 3 primjenjiv je i za RFC-ove između ABAP sustava i za vanjske pozive prema ABAP sustavima.
Tip I — Vrstni korisnik iste baze podataka
Unosi tipa I određuju ABAP sustave koji dijele istu bazu podataka kao i trenutni sustav. Ovi unosi su unaprijed definirani i ne mogu se mijenjati. Tipičan naziv unosa izgleda ovako ws0015_K18_24:
- ws0015 — ime domaćina
- K18 — naziv sustava (baze podataka)
- 24 — Naziv TCP servisa
Tip T - Vanjski program
Odredišta tipa T povezuju se s vanjskim programima koji koriste RFC API za primanje RFC-ova. Vrsta aktivacije može biti bilo koja od Start or RegistracijaAko je u pitanju Start, potrebno je navesti naziv hosta i putanju programa koji se pokreće.
kako Code RFC
Izrada RFC-a od početka do kraja ima pet koraka. Prva tri su mehanički klikovi u SE37 i SM59; posljednja dva se odnose na dobivanje kon...tract desno.
Korak 1: Na kartici atributa funkcionalnog modula transakcije SE37, postavite vrstu obrade na Modul s daljinskim upravljanjem označiti funkcijski modul kao RFC-kompatibilan.
Korak 2: Napišite kod za funkcijski modul u editoru izvornog koda.
Korak 3: Definirajte odredište RFC poslužitelja u RFC klijentskom sustavu koji poziva udaljenu funkciju - što se radi u transakciji SM59.
Korak 4 — Deklariranje parametara: Sva polja parametara za udaljeni funkcijski modul moraju biti definirana kao referentna polja - to jest, unesena u polja ABAP rječnika. Vrijednosni parametri nisu dopušteni za udaljeno omogućene funkcijske module.
Korak 5 — Iznimke: Sustav podiže KOMUNIKACIJSKI_GREŠAK i KVAR_SUSTAVA interno na greškama na razini transporta. Iznimke na razini aplikacije mogu se izazvati unutar udaljene funkcije točno kao i u lokalnoj.
Otklanjanje pogrešaka poziva udaljenih funkcija
- To je nije moguće otkloniti pogreške udaljeni poziv funkcije u sustav koji nije ABAP na klasičan način — strano okruženje za izvođenje je neprozirno.
- Međutim, za ABAP-ABAP RFC pozive, ABAP debugger može se koristiti za praćenje izvršavanja RFC funkcije unutar udaljenog sustava.
- S udaljenim pozivima, ABAP debugger (uključujući njegovo korisničko sučelje) radi na lokalnom sustavu. Vrijednosti podataka i ostale informacije o izvođenju za udaljenu funkciju šalju se natrag iz udaljenog sustava.
Ključ SAP RFC transakcije
Svakodnevni RFC alati svode se na nekoliko T-kodova koje bi svaki ABAP programer i Basis administrator trebao znati refleksno.
| T-kod | Svrha |
|---|---|
| SM59 | Održavajte RFC odredišta - host, prijavu, tip, sigurnost. |
| SE37 | Alat za izradu funkcija — stvaranje ili uređivanje modula funkcija s omogućenim daljinskim upravljanjem. |
| SM58 | Pratite neuspješne transakcijske RFC-ove i ponovno ih obradite. |
| SMQ1 / SMQ2 | Pratite izlazne (SMQ1) i ulazne (SMQ2) qRFC redove. |
| POVJERENJE | Održavajte SSL certifikate koje koriste HTTPS-zaštićena RFC odredišta. |
| ST22 | Pregledajte kratke izvatke uzrokovane neuspjelim udaljenim pozivima. |
Najbolji primjeri iz prakse za SAP RFC
Dobro osmišljen RFC sloj omogućuje brze, uočljive i jednostavne integracije za razvoj. Sljedeće navike vrijedi ugraditi u svaki projekt.
- Odaberite pravu varijantu za prevarutract. Koristite sRFC za sinkrone pretrage, tRFC za asinkrona ažuriranja s najviše jednim unosom i qRFC prilikom određivanja redoslijeda.
- Ponovno upotrijebite jedno odredište po ciljnom sustavu umjesto širenja imena hostova na mnoga odredišta - vrši rotaciju vjerodajnica tracstol.
- Nikada ne kodirajte vjerodajnice u ABAP-u. Koristite pouzdane sistemske veze ili sigurne prijave gdje je to moguće.
- Redovito pratite SM58 i SMQ2. Zaglavljeni tRFC unosi tiho odgađaju poslovne procese dok se ponovno ne obrade.
- Prosljeđujte samo parametre referentnog tipa. Parametri vrijednosti prekidaju module funkcija s omogućenim daljinskim upravljanjem.
- Koristite STRUST za upravljanje TLS certifikatima za HTTPS odredišta — istekli certifikati glavni su uzrok misterioznih izvataka COMMUNICATION_FAILURE.







