Vzdálené volání funkcí (RFC) in SAP Výukový program ABAP
⚡ Chytré shrnutí
Vzdálené volání funkcí (RFC) je SAP komunikační mechanismus, který umožňuje programu ABAP vyvolat funkční modul běžící na jiném SAP nebo externí systém. To abstracProvádí kontrolu síťového potrubí, převádí datové formáty a čistě hlásí chyby volajícímu.
Co je RFC v SAP?
RFC představuje Vzdálené volání funkcíJe to mechanismus, který umožňuje obchodním aplikacím komunikovat a vyměňovat si informace – v předdefinovaných formátech – s jinými systémy. RFC je nejběžnějším způsobem. SAP Systém komunikuje s jiným a je také mostem, který spojuje SAP systémy pro ne-SAP aplikace.
RFC nabízí dvě rozhraní:
- Volací rozhraní pro programy ABAP.
- Volací rozhraní pro ne-SAP programy.
Jakýkoli ABAP program může vyvolat vzdálenou funkci pomocí FUNKCE VOLÁNÍ...CÍL prohlášení. The DESTINATION parametr říká SAP systém, na kterém volaná funkce běží na jiném systému než volající.
Syntax
CALL FUNCTION 'remotefunction'
DESTINATION dest
EXPORTING f1 = ...
IMPORTING f2 = ...
TABLES t1 = ...
EXCEPTIONS ...
Logické cíle jsou definovány prostřednictvím transakce SM59 a uloženy v tabulce RFCDES.
Funkce rozhraní RFC
Runtime RFC je při každém volání zodpovědný za tři věci:
- Převod všech dat parametrů do reprezentace očekávané vzdáleným systémem.
- Volání komunikačních rutin potřebných pro komunikaci se vzdáleným systémem.
- Řešení komunikačních chyb a jejich předávání volajícímu prostřednictvím
EXCEPTIONSparametrCALL FUNCTION.
RFC je SAP protokol, který zajišťuje komunikaci mezi systémy a zjednodušuje související programování. Je to proces volání funkčního modulu, který se nachází na jiném počítači než volající program. RFC lze technicky použít k volání funkčního modulu na stejný počítače, ale nejčastěji se používají, když volající a volaný program běží na oddělených počítačích. Systém rozhraní RFC se používá k nastavení RFC spojení mezi různými SAP systémy, stejně jako mezi nimi SAP a externí (ne-SAP) systémy.
Důležité informace o RFC
- SAP používá CPIC protokol (Common Programming Interface for Communication) pro přenos dat mezi systémy. CPIC je SAP-specifické. RFC je komunikační rozhraní postavené na CPI-C, ale s více funkcemi a uživatelsky přívětivějším rozhraním pro aplikační programátory.
- Funkce knihovny RFC podporují C programovací jazyk a Visual Basic na Windows plošiny.
- RFC připojení fungují v celém systému. RFC připojení definované v klientovi 000 lze bez rozdílu použít i z klienta 100.
- RFC je protokol pro volání specializovaných podprogramů (funkčních modulů) po síti. Funkční moduly jsou srovnatelné s funkcemi jazyka C nebo procedurami v jazyce Pascal: zpřístupňují definované rozhraní, přes které se vyměňují data, tabulky a návratové kódy. Funkční moduly jsou spravovány uvnitř... SAP systém ve specializované knihovně, Tvůrce funkcí.
- Tvůrce funkcí (transakce SE37) poskytuje aplikačním programátorům prostředí pro psaní, dokumentaci a Testování funkční moduly, které lze volat lokálně i vzdáleně. Systém automaticky generuje dodatečný kód (tzv. RFC stub) potřebné pro vzdálené hovory.
- RFC spojení jsou udržována pomocí transakcí SM59. SAP také dodává RFC-SDK (Software Development Kit), která používá rozsáhlé knihovny jazyka C, takže se k ní mohou připojit externí programy. SAP systém.
- Jediný rozdíl mezi vzdáleným voláním na jiný server a místním voláním je
DESTINATIONparametr, který určuje cílový server, na kterém se má program spustit.
Výhody RFC
RFC snižuje náročnost programování tím, že eliminuje nutnost opětovné implementace modulů a metod na vzdáleném konci. Vrstva RFC se stará o:
- Převod dat do formátu, kterému vzdálený (cílový) systém rozumí.
- Volání rutin potřebných k nastavení komunikace se vzdáleným systémem.
- Řešení chyb, které vznikají během komunikace.
- Poskytování spolehlivé transakční sémantiky při použití transakčních nebo frontových variant.
Typy RFC
SAP podporuje čtyři varianty RFC. Každá z nich nabízí jiný kompromis mezi latencí, spolehlivostí a zárukami řazení.
1. Syncchronotický RFC (sRFC)
SyncChronické RFC vyžaduje, aby v době volání byl k dispozici klient i server. Je to nejběžnější typ a používá se vždy, když volající potřebuje výsledek ihned po provedení.
sRFC je prostředek komunikace mezi systémy, kde se očekávají potvrzení. Prostředky zdrojového systému čekají na cílový systém a zajišťují, aby zpráva dorazila s potvrzením (ACK). Vyměňovaná data jsou konzistentní a spolehlivá.
Nevýhodou je, že pokud cílový systém není k dispozici, prostředky zdrojového systému čekají, až se vrátí do původního stavu, což může procesy zdrojového systému přepnout do režimu spánku/RFC/CPIC v cílovém systému a zablokovat prostředky.
Používá:
- Komunikace mezi systémy v reálném čase.
- Komunikace mezi SAP Webový aplikační server a SAP GUI.
2. Asynchronní RFC (aRFC)
Asynchronní RFC je komunikace mezi systémy, kde není vyžadováno potvrzení – srovnatelné s dropem.ping pohlednice poštou. Oba systémy nemusí být v době provádění k dispozici a výsledek se okamžitě nevrací volajícímu systému.
Zdrojový systémový zdroj nečeká na cílový systém; doručí data a pokračuje dál. Díky tomu je aRFC rychlý, ale sám o sobě není spolehlivý – pokud cílový systém není k dispozici, může dojít ke ztrátě dat.
Používá:
- Komunikace mezi systémy typu „vystřel a zapomeň“.
- Paralelní zpracování napříč systémy.
3. Transakční RFC (tRFC)
Transakční RFC je speciální forma asynchronního RFC. Zajišťuje transakční zpracování kroků zpracování, které by jinak byly autonomní.
Komponenta tRFC spustí volaný funkční modul na RFC serveru přesně jednou, a to i v případě, že jsou data odeslána vícekrát kvůli problémům se sítí. Vzdálený systém nemusí být dostupný v okamžiku, kdy RFC klient spustí volání. Komponenta tRFC ukládá volanou funkci a její data do SAP databáze pod unikátním ID transakce (TID)Pokud cílový systém není k dispozici, data se zapíší do RFC tabulek (viditelných v transakčních SM58) a později zachyceno plánovačem RSARFCSE, který běží každých 60 sekund.
Používá:
- Rozšíření asynchronního RFC o doručení maximálně jednou.
- Spolehlivá komunikace mezi systémy, kde je důležité provedení přesně jednou.
4. RFC ve frontě (qRFC)
RFC ve frontě rozšiřuje tRFC tím, že zaručuje, že jednotlivé kroky jsou zpracovány v pořadí určeném volající aplikací. Aby bylo zajištěno, že více LUW (logických jednotek práce / transakcí) je zpracováno v zamýšleném pořadí, lze tRFC serializovat pomocí příchozích a odchozích front – odtud pochází název „RFC ve frontě“.
Používá:
- Rozšíření transakčního RFC o striktní řazení.
- Scénáře, kde je definovaná sekvence zpracování povinná.
- Případy, kdy musí být zpracováno několik transakcí v předem definovaném pořadí.
Porovnání typů RFC
| Typ | Volající čeká? | Spolehlivý? | Objednané? | nejlepší |
|---|---|---|---|---|
| sRFC | Ano | Ano | N/A (jednorázový hovor) | Vyhledávání v reálném čase |
| aRFC | Ne | Ne | Ne | Paralelní práce typu „vystřel a zapomeň“ |
| tRFC | Ne | Ano (přesně jednou) | Ne | Spolehlivé asynchronní aktualizace |
| qRFC | Ne | Ano (přesně jednou) | Ano | Přísně uspořádané aktualizace |
Typy RFC připojení
SM59 podporuje několik typů připojení. Níže jsou shrnuty tři, se kterými se setkáte nejčastěji.
Typ 3 – ABAP-ABAP
Záznamy typu 3 určují spojení mezi Systémy ABAPNázev hostitele nebo IP adresa je povinná; přihlašovací informace lze dodat volitelně. Typ 3 je použitelný jak pro RFC mezi systémy ABAP, tak pro externí volání do systémů ABAP.
Typ I – partnerský server stejné databáze
Záznamy typu I určují systémy ABAP, které sdílejí stejnou databázi jako aktuální systém. Tyto záznamy jsou předdefinované a nelze je upravovat. Typický název záznamu vypadá takto ws0015_K18_24:
- ws0015 — název hostitele
- K18 — název systému (databáze)
- 24 — Název služby TCP
Typ T – Externí program
Cíle typu T se připojují k externím programům, které používají RFC API k přijímání RFC. Typ aktivace může být buď Home or RegistracePokud se jedná o Start, je nutné zadat název hostitele a cestu ke spouštěnému programu.
jak na to Code RFC
Komplexní sestavení RFC má pět kroků. První tři jsou mechanické kliknutí v SE37 a SM59; poslední dva se týkají získání con...tracsprávně.
Krok 1: Na kartě atributů funkčního modulu v transakci SE37, nastavte typ zpracování na Modul s dálkovým ovládáním označit funkční modul jako kompatibilní s RFC.
Krok 2: Napište kód pro funkční modul v editoru zdrojového kódu.
Krok 3: Definujte cíl RFC serveru v klientském systému RFC, který volá vzdálenou funkci – provádí se v transakci. SM59.
Krok 4 – Deklarace parametrů: Všechna pole parametrů pro vzdálený funkční modul musí být definována jako referenční pole – tj. musí být zadána podle polí slovníku ABAP. Parametry hodnot nejsou pro vzdáleně aktivované funkční moduly povoleny.
Krok 5 – Výjimky: Systém zvyšuje CHYBA_KOMUNIKACE a SYSTÉMOVÉ CHYBÁNÍ interně na chybách na úrovni transportu. Výjimky na úrovni aplikace lze vyvolat uvnitř vzdálené funkce stejně jako v lokální.
Ladění vzdálených volání funkcí
- To je není možné ladit vzdálené volání funkce do systému, který není ABAP, klasickým způsobem – cizí běhové prostředí je neprůhledné.
- Pro volání RFC typu ABAP-ABAP však lze k monitorování provádění funkce RFC uvnitř vzdáleného systému použít ladicí program ABAP.
- Při vzdálených voláních běží ladicí program ABAP (včetně jeho uživatelského rozhraní) na lokálním systému. Datové hodnoty a další informace za běhu pro vzdálenou funkci jsou streamovány zpět ze vzdáleného systému.
Klíč SAP Transakce RFC
Každodenní sada nástrojů RFC se redukuje na hrstku T-kódů, které by měl každý vývojář ABAP a správce Basis znát bezprostředně po sobě.
| T-kód | Účel |
|---|---|
| SM59 | Udržujte cíle RFC – hostitel, přihlášení, typ, zabezpečení. |
| SE37 | Tvůrce funkcí – vytvářejte nebo upravujte funkční moduly s podporou vzdáleného přístupu. |
| SM58 | Monitorujte neúspěšné transakční RFC a znovu je zpracujte. |
| SMQ1 / SMQ2 | Monitorujte odchozí (SMQ1) a příchozí (SMQ2) fronty qRFC. |
| DŮVĚRA | Udržujte certifikáty SSL používané destinacemi RFC chráněnými HTTPS. |
| ST22 | Prohlédněte krátké výpisy způsobené neúspěšnými vzdálenými voláními. |
Nejlepší postupy pro SAP RFC
Dobře navržená vrstva RFC zajišťuje rychlou, přehlednou a snadnou vývojovou integraci. Následující návyky stojí za to začlenit do každého projektu.
- Vyberte si správnou variantu pro podvodtract. Pro synchronní vyhledávání použijte sRFC, pro asynchronní aktualizace s maximálně jedním provedením tRFC a při řazení záležitostí qRFC.
- Znovu použijte jeden cíl na cílový systém spíše než rozdělování názvů hostitelů na mnoho destinací – provádí rotaci přihlašovacích údajů tractabulka.
- Nikdy pevně kódovat přihlašovací údaje v ABAP. Pokud je to možné, používejte důvěryhodná systémová připojení nebo zabezpečené přihlašovací tikety.
- Pravidelně sledujte SM58 a SMQ2. Zaseknuté položky tRFC tiše zpožďují obchodní procesy, dokud nebudou znovu zpracovány.
- Předávejte pouze parametry referenčního typu. Parametry hodnot přerušují moduly funkcí s dálkově ovládaným ovládáním.
- Použití STRUST ke správě certifikátů TLS pro HTTPS destinace – certifikáty s vypršenou platností jsou hlavní příčinou záhadných výpisů COMMUNICATION_FAILURE.








