Vzdálené volání funkcí (RFC) v kurzu SAP

Obsah:

Anonim

Co je RFC?

RFC je mechanismus, který umožňuje podnikovým aplikacím komunikovat a vyměňovat si informace (v předem definovaných formátech) s jinými systémy. RFC znamená „vzdálené volání funkce“

RFC se skládá ze dvou rozhraní:

  1. Volací rozhraní pro programy ABAP
  2. Volací rozhraní pro programy jiné než SAP.

Libovolný program ABAP může volat vzdálenou funkci pomocí příkazu CALL FUNCTION… DESTINATION . Parametr DESTINATION sděluje systému SAP, že volaná funkce běží v jiném systému než volající.Syntax-

FUNKCE HOVORU 'remotefunction'DESTINATION destVYVÁŽející f1 =DOVOZ f2 =TABULKY t1 =VÝJIMKY

Logické cíle jsou definovány prostřednictvím transakce SM59 a uloženy v tabulce RFCDES
Funkce rozhraní RFC

  • Převod všech dat parametrů na reprezentaci potřebnou ve vzdáleném systému
  • Volání komunikačních rutin potřebných pro komunikaci se vzdáleným systémem.
  • Zpracování chyb komunikace a upozornění volajícího, je-li to požadováno (pomocí parametru VÝJIMKY FUNKCE VOLÁNÍ).


RFC je protokol SAP pro zpracování komunikace mezi systémy pro zjednodušení souvisejícího programování. Jedná se o proces volání funkčního modulu, který je umístěn na jiném stroji než volající program. RFC lze použít také k volání jiného programu na stejném stroji, ale obvykle se používá, když jsou na samostatných počítačích spuštěny funkční moduly / programy „volání“ a „volané“.


V systému SAP se systém rozhraní RFC používá k nastavení připojení RFC mezi různými systémy SAP a také mezi systémem SAP a externím (jiným než SAP) systémem.

Musíte znát podrobnosti o RFC

  • SAP používá k přenosu dat mezi systémy protokol CPIC (Common Programming Interface for Communication). Je to specifický protokol SAP. Remote Function Call (RFC) je komunikační rozhraní založené na CPI-C, ale s více funkcemi a snadnějším používáním pro programátory aplikací
  • Funkce knihovny RFC podporují programovací jazyk C a Visual Basic (na platformách Windows)
  • Připojení RFC lze vždy použít v celém systému. To znamená, že připojení RFC, které jste definovali v klientovi 000, lze použít také od klienta 100 (bez rozdílu).
  • RFC je protokol pro volání speciálních podprogramů (funkčních modulů) po síti. Funkční moduly jsou srovnatelné s funkcemi C nebo PASCAL. Mají definované rozhraní, přes které lze vyměňovat data, tabulky a návratové kódy. Funkční moduly jsou spravovány v systému R / 3 ve vlastní knihovně funkcí, která se nazývá Builder funkcí.
  • Function Builder (transakce SE37) poskytuje aplikačním programátorům užitečné prostředí pro programování, dokumentaci a testování funkčních modulů, které lze volat lokálně i vzdáleně. Systém R / 3 automaticky generuje další kód (útržek RFC) potřebný pro vzdálená volání.
  • Parametry pro připojení RFC udržujete pomocí transakce SM59. Systém R / 3 je dodáván také s RFC-SDK (Software Development Kit), která využívá rozsáhlé knihovny C, aby bylo možné k systému R / 3 připojit externí programy.
  • Jediným rozdílem mezi vzdáleným voláním funkčního modulu na jiný server a místním voláním je speciální parametr (cíl), který určuje cílový server, na kterém má být program spuštěn.

Výhody RFC:

RFC pomáhá snižovat úsilí programátorů tím, že jim umožňuje vyhnout se opětovnému vývoji modulů a metod na vzdálených systémech. Je dostatečně schopný:

  • Převeďte data do formátu srozumitelného pro vzdálený (cílový) systém.
  • Převeďte data do formátu srozumitelného pro vzdálený (cílový) systém.
  • Vyvolejte určité rutiny, které jsou nezbytné pro zahájení komunikace se vzdáleným systémem.
  • Zpracujte chyby, které se mohou vyskytnout v procesu komunikace.

Typy RFC:


Synchronní

Vyžaduje, aby byly systémy (klient i server) k dispozici v době komunikace nebo přenosu dat. Je to nejběžnější typ a je vyžadován, když je výsledek vyžadován bezprostředně po provedení sRFC.
sRFC je prostředek komunikace mezi systémy, kde je vyžadováno potvrzení. Zdroje zdrojového systému čekají na cílovém systému a zajišťují, že doručují zprávu / data pomocí ACKD. Data jsou konzistentní a spolehlivá pro komunikaci.
Problém je v tom, že pokud cílový systém není k dispozici, zdroje zdrojového systému počkají, dokud nebude k dispozici cílový systém. To může vést k tomu, že procesy zdrojového systému přejdou do režimu spánku / RFC / CPIC v cílových systémech, a proto blokují tyto zdroje.
Používá

  • Pro komunikaci mezi systémy
  • Pro komunikaci mezi serverem SAP Web Application Server a SAP GUI

Asynchronní

Jedná se o komunikaci mezi systémy, kde se nepožaduje potvrzení (je to podobné jako u doručování pohlednic). Nevyžaduje, aby byly oba systémy k dispozici v době provedení, a výsledek nemusí být okamžitě odeslán zpět do volajícího systému .

Prostředek zdrojového systému nečeká na cílový systém, protože doručuje zprávu / data bez čekání na potvrzení. Není to spolehlivé pro komunikaci, protože pokud není cílový systém k dispozici, může dojít ke ztrátě dat. Používá -

  • Pro komunikaci mezi systémy
  • Pro paralelní zpracování

Transakční

Jedná se o speciální formu aRFC. Transakční RFC zajišťuje transakční zpracování zpracování kroků, které byly původně autonomní.

Transakční RFC je metoda asynchronní komunikace, která provádí volaný funkční modul na serveru RFC pouze jednou, a to i v případě, že jsou data odeslána několikrát kvůli nějakému problému se sítí. Vzdálený systém nemusí být k dispozici v době, kdy klientský program RFC provádí tRFC. Komponenta tRFC ukládá volanou funkci RFC společně s odpovídajícími daty do databáze SAP pod jedinečným ID transakce (TID). tRFC je podobný aRFC, protože nečeká v cílovém systému (podobně jako registrovaný příspěvek). Pokud systém není k dispozici, zapíše Data do tabulek aRFC s ID transakce (SM58), které vybere plánovač RSARFCSE (který běží každých 60 sekund). Používá-

  • Rozšíření asynchronního RFC
  • Pro bezpečnou komunikaci mezi systémy

Ve frontě

Queueed RFC is an extension of tRFC. Rovněž zajišťuje, že jednotlivé kroky jsou zpracovávány v pořadí.

Aby bylo zajištěno, že bude zpracováno více LUW (logická jednotka práce / transakce) v pořadí stanoveném aplikací. tRFC lze serializovat pomocí front (příchozí a odchozí fronty). Proto byl název zařazen do fronty RFC (qRFC). Používá-

  • Rozšíření transakčního RFC
  • Pro definovanou sekvenci zpracování
  • Implementace qRFC se doporučuje, pokud chcete zaručit, že bude několik transakcí zpracováno v předem definovaném pořadí.

Typy připojení RFC


Typ 3 - položky určují spojení mezi systémy ABAP. Zde musíme zadat název hostitele / IP adresu. V případě potřeby však můžete určit přihlašovací údaje. To platí pro oba typy RFC, mezi systémy ABAP a externími hovory do systémů ABAPTyp I - položky specifikují systémy ABAP připojené ke stejné databázi jako aktuální systém. Tyto položky jsou předdefinovány a nelze je měnit. Příklad názvu záznamu: ws0015_K18_24

  • ws0015 = název hostitele
  • K18 = název systému (název databáze)
  • 24 = název služby TCP

Typ T - cíle jsou připojení k externím programům, které používají RFC API k přijímání RFC. Typ aktivace může být Start nebo Registrace. Pokud je to Start, musíte zadat název hostitele a cestu ke spuštění programu.

Jak kódovat RFC?

1. Na kartě atributů funkčních modulů (kód transakce SE37) nastavte typ zpracování jako Vzdálený povolený modul a vytvořte vzdálený funkční modul.


2. Napište kód funkčního modulu.


3. Definujte cíl serveru RFC v klientském systému RFC, který volá vzdálenou funkci (prostřednictvím transakce SM59).


4. Deklarování parametrů : Všechna pole parametrů pro vzdálený funkční modul musí být definována jako referenční pole, tj. Jako pole slovníku ABAP.5. Výjimky: Systém interně zvyšuje hodnoty COMMUNICATION_FAILURE a SYSTEM_FAILURE. Ve vzdálené funkci můžete vyvolat výjimky stejně jako v místně volané funkci.

Ladění vzdálených volání funkcí

  • Je to možné ladit volání vzdálené funkce na jiný systém.
  • Při testování volání RFC ABAP na ABAP však můžete pomocí debuggeru ABAP sledovat provádění funkce RFC ve vzdáleném systému.
  • Se vzdálenými hovory běží ladicí program ABAP (včetně ladicího rozhraní) v místním systému. Hodnoty dat a další informace o běhu vzdálené funkce jsou předávány ze vzdáleného systému.