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.

  • 📡 Základní mechanismus: VOLÁNÍ FUNKCE…CÍL vyvolá funkční modul v logickém cíli definovaném v SM59.
  • 🔁 Čtyři varianty: SyncChronické, asynchronní, transakční a frontové RFC zaručují různé způsoby doručení.tract.
  • 🌐 Typy připojení: SM59 podporuje typ 3 (ABAP-ABAP), typ I (partneři stejné databáze) a typ T (externí programy).
  • 🛠️ Cesta sestavení: Nastavte funkční modul v SE37 na Vzdáleně povolený, naprogramujte jej a definujte cíl v SM59 volajícího.
  • 🤖 Úhel umělé inteligence: Asistenti s umělou inteligencí generují ABAP RFC stuby ze specifikací v přirozeném jazyce a analyzují chyby SM58 do proveditelných oprav.

Funkce rozhraní RFC

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í:

  1. Volací rozhraní pro programy ABAP.
  2. 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

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 EXCEPTIONS parametr CALL FUNCTION.

RFC komunikace mezi SAP systémy

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 DESTINATION parametr, 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

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í

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.

SE37 Modul s dálkovým ovládáním

Krok 2: Napište kód pro funkční modul v editoru zdrojového kódu.

Zdrojový kód funkčního modulu

Krok 3: Definujte cíl RFC serveru v klientském systému RFC, který volá vzdálenou funkci – provádí se v transakci. SM59.

Nastavení cíle 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.

Nejčastější dotazy

RFC je nízkoúrovňový protokol, který volá libovolný modul funkcí s povoleným vzdáleným přístupem. BAPI je specifický, SAP-certifikovaný funkční modul, který zpřístupňuje stabilní metodu obchodního objektu – každé BAPI je zpřístupněno prostřednictvím RFC, ale ne každé volání RFC narazí na BAPI.

Důvěryhodný RFC je cíl dle SM59, kde cílový systém důvěřuje ověřování volajícího, takže při každém volání se nevyměňuje heslo. Šíří se kontext uživatele volajícího. Odstraní se pevně zakódované přihlašovací údaje na úkor přísnějšího nastavení.

SM58 zobrazuje neúspěšné nebo čekající transakční položky RFC čekající na opětovné zpracování. Každý řádek obsahuje ID transakce, volaný funkční modul, cílovou destinaci, text chyby a čas posledního opakování.

Ne. Ve výchozím nastavení je provoz RFC nešifrovaný. Cíle SNC (Secure Network Communications) nebo TLS/HTTPS musí být nakonfigurovány pro šifrování provozu. SNC je standardní mechanismus pro produkční prostředí.

tRFC zaručuje, že volání je provedeno přesně jednou, ale nezachovává pořadí volání. qRFC staví na tRFC a navíc serializuje volání prostřednictvím příchozích nebo odchozích front, takže volání probíhají v přesném pořadí, které aplikace definovala.

Ano. Externí programy se mohou registrovat u SAP brána pomocí RFC SDK (JCo pro Java, NCo pro .NET nebo C SDK). SAP pak je volá přes cíl typu T stejně jako jakýkoli funkční modul ABAP.

Asistenti umělé inteligence generují RFC stuby ABAP ze specifikací v přirozeném jazyce, navrhují správný typ cíle pro scénář a převádějí text chyby SM58 do konkrétního seznamu oprav – což urychluje každodenní integrační práci týmů Basis a ABAP.

Ano. Zadejte asistentovi s umělou inteligencí výpis ST22 nebo chybu SM58 a ten koreluje vzory COMMUNICATION_FAILURE / SYSTEM_FAILURE s nejpravděpodobnějšími příčinami – vypršený certifikát, nefunkční brána, chybějící autorizace – a navrhne příslušný T-kód ke kontrole.

Shrňte tento příspěvek takto: