Zdalne wywołanie funkcji (RFC) w SAP Poradnik

Co to jest RFC?

RFC to mechanizm umożliwiający aplikacjom biznesowym komunikację i wymianę informacji (w predefiniowanych formatach) z innymi systemami. RFC oznacza „Zdalne wywołanie funkcji”

RFC składa się z dwóch interfejsów:

  1. Interfejs wywołujący dla programów ABAP
  2. Interfejs wywołujący dla osób nie-SAP programy.

Każdy programu ABAP może wywołać funkcję zdalną za pomocą FUNKCJA WYWOŁANIA…CEL oświadczenie. ten PRZEZNACZENIE parametr mówi SAP System, w którym wywoływana funkcja działa w systemie innym niż wywołujący.

Składnia-

CALL FUNCTION 'remotefunction'

DESTINATION dest

EXPORTING f1 =

IMPORTING f2 =

TABLES t1 =

EXCEPTIONS

Logiczne miejsca docelowe są definiowane poprzez transakcję SM59 i zapisane w tabeli RFCDES

Funkcje interfejsu RFC

  • Konwersja wszystkich danych parametrów do reprezentacji potrzebnej w systemie zdalnym
  • Wywoływanie procedur komunikacyjnych niezbędnych do komunikacji ze zdalnym systemem.
  • Obsługa błędów komunikacyjnych i w razie potrzeby powiadamianie dzwoniącego (za pomocą parametru WYJĄTKI FUNKCJI POŁĄCZENIA).

Funkcje interfejsu RFC

RFC jest SAP protokół do obsługi komunikacji między systemami w celu uproszczenia powiązanego programowania. Jest to proces wywoływania modułu funkcyjnego, który znajduje się na innej maszynie niż program wywołujący. Dokumentów RFC można również używać do wywoływania innego programu na tej samej maszynie, ale zwykle używa się ich, gdy „wywoływanie” i „wywoływanie” modułów/programów funkcyjnych działa na oddzielnych komputerach.

Funkcje interfejsu RFC

In SAP, System interfejsu RFC służy do konfigurowania połączeń RFC pomiędzy różnymi SAP systemy, a także pomiędzy A SAP i zewnętrzny (nie-SAP).

Szczegóły, które musisz znać na temat RFC

  • SAP Wykorzystuje protokół CPIC (Common Programming Interface for Communication) do przesyłania danych pomiędzy systemami. To jest SAP Konkretny protokół. Remote Function Call (RFC) to interfejs komunikacyjny oparty na CPI-C, ale z większą liczbą funkcji i łatwiejszy w użyciu dla programistów aplikacji
  • Funkcje biblioteki RFC obsługują język programowania C i Visual Basic (wł Windows platformy)
  • Połączenia RFC można zawsze stosować w całym systemie. Oznacza to, że połączenie RFC zdefiniowane w kliencie 000 może być również używane z klientem 100 (bez żadnej różnicy).
  • RFC to protokół umożliwiający wywoływanie specjalnych podprogramów (modułów funkcyjnych) w sieci. Moduły funkcyjne są porównywalne z funkcjami C lub procedurami PASCAL. Posiadają zdefiniowany interfejs, za pomocą którego można wymieniać dane, tabele i kody powrotne. Modułami funkcyjnymi zarządza się w systemie R/3 w ich własnej bibliotece funkcji, zwanej Konstruktorem Funkcji.
  • Konstruktor funkcji (transakcja SE37) zapewnia programistom aplikacji przydatne środowisko do programowania, dokumentowania i Testowanie moduły funkcyjne, które można wywoływać lokalnie i zdalnie. System R/3 automatycznie generuje dodatkowy kod (odcinek RFC) potrzebny do zdalnych połączeń.
  • Parametry połączeń RFC utrzymujesz za pomocą transakcji SM59. System R/3 jest również dostarczany z pakietem RFC-SDK (Software Development Kit), który wykorzystuje obszerne biblioteki C, aby umożliwić podłączenie programów zewnętrznych do systemu R/3.
  • Jedyną różnicą pomiędzy zdalnym wywołaniem modułu funkcyjnego do innego serwera a wywołaniem lokalnym jest specjalny parametr (miejsce docelowe), który określa serwer docelowy, na którym program ma być wykonany.

Zalety RFC

RFC pomaga zmniejszyć wysiłek programistów, pozwalając im uniknąć ponownego opracowywania modułów i metod w systemach zdalnych. Jest na tyle zdolny, aby:

  • Konwertuj dane do formatu zrozumiałego dla systemu zdalnego (docelowego).
  • Konwertuj dane do formatu zrozumiałego dla systemu zdalnego (docelowego).
  • Wywołaj pewne procedury niezbędne do rozpoczęcia komunikacji z systemem zdalnym.
  • Obsługuj błędy, które mogą pojawić się w procesie komunikacji.

Rodzaje RFC

Rodzaje RFC

Syncchronny

Wymaga, aby oba systemy (klient i serwer) były dostępne w momencie komunikacji lub przesyłania danych. Jest to najpopularniejszy typ i jest wymagany, gdy wynik jest wymagany natychmiast po wykonaniu sRFC.

sRFC to sposób komunikacji pomiędzy systemami, w którym wymagane są potwierdzenia. Zasoby systemu źródłowego czekają na system docelowy i zapewniają dostarczenie komunikatu/danych z potwierdzeniem ACKD. Dane są spójne i wiarygodne w zakresie komunikacji.

Problem polega na tym, że jeśli system docelowy nie jest dostępny, zasoby systemu źródłowego czekają, aż system docelowy będzie dostępny. Może to spowodować przejście procesów systemu źródłowego w tryb uśpienia/RFC/CPIC w systemach docelowych, a tym samym zablokowanie tych zasobów.

Używany do

  • Do komunikacji pomiędzy systemami
  • Do komunikacji pomiędzy SAP Serwer aplikacji internetowych do SAP GUI

Asynchroniczny

Jest to komunikacja pomiędzy systemami, w której nie są wymagane potwierdzenia (podobnie jak w przypadku dostarczania kartki pocztowej). Nie wymaga, aby oba systemy były dostępne w momencie realizacji i nie jest wymagane natychmiastowe odesłanie wyniku do systemu wywołującego .

Zasób systemu źródłowego nie czeka na system docelowy, który dostarcza wiadomość/dane, nie czekając na żadne potwierdzenie. Komunikacja nie jest niezawodna, ponieważ dane mogą zostać utracone, jeśli system docelowy nie będzie dostępny. Używany do -

  • Do komunikacji pomiędzy systemami
  • Do przetwarzania równoległego

Transakcyjny

Jest to specjalna forma aRFC. Transakcyjne RFC zapewnia transakcyjną obsługę etapów przetwarzania, które pierwotnie były autonomiczne.

Transakcyjny RFC to asynchroniczna metoda komunikacji, która wykonuje wywoływany moduł funkcji na serwerze RFC tylko raz, nawet jeśli dane są wysyłane wielokrotnie z powodu jakiegoś problemu sieciowego. Zdalny system nie musi być dostępny w czasie, gdy program klienta RFC wykonuje tRFC. Komponent tRFC przechowuje wywoływaną funkcję RFC wraz z odpowiadającymi jej danymi w SAP baza danych pod unikalnym identyfikatorem transakcji (TID). tRFC jest podobny do aRFC, ponieważ nie czeka w systemie docelowym (podobnie jak zarejestrowany list). Jeśli system jest niedostępny, zapisze dane do tabel aRFC z identyfikatorem transakcji (SM58), który jest wybierany przez harmonogram RSARFCSE (który działa co 60 sekund). Używany do-

  • Rozszerzenie asynchronicznego RFC
  • Do bezpiecznej komunikacji pomiędzy systemami

W kolejce

Kolejkowane RFC jest rozszerzeniem tRFC. Zapewnia również, że poszczególne kroki są przetwarzane sekwencyjnie. Aby zagwarantować, że wiele LUW (Logical Unit of Work/Transaction) jest przetwarzanych w kolejności określonej przez aplikację. tRFC można serializować przy użyciu kolejek (kolejek przychodzących i wychodzących). Stąd nazwa kolejkowane RFC (qRFC). Używany do-

  • Rozszerzenie transakcyjnego RFC
  • Dla określonej kolejności przetwarzania
  • Wdrożenie qRFC jest zalecane, jeśli chcesz mieć pewność, że kilka transakcji zostanie przetworzonych w określonej kolejności.

Rodzaje połączeń RFC

Rodzaje połączeń RFC

Wpisz 3 – wpisy określają połączenie pomiędzy systemy ABAP. Tutaj musimy podać nazwę hosta / adres IP. W razie potrzeby możesz jednak określić dane logowania. Ma to zastosowanie do obu typów RFC, pomiędzy systemami ABAP i wywołaniami zewnętrznymi do systemów ABAP

typ I – wpisy określają systemy ABAP podłączone do tej samej bazy danych, co bieżący system. Wpisy te są wstępnie zdefiniowane i nie można ich modyfikować. Przykładowa nazwa wpisu: ws0015_K18_24

  • ws0015=nazwa hosta
  • K18=nazwa systemu (nazwa bazy danych)
  • 24=Nazwa usługi TCP

Wpisz T – miejsca docelowe to połączenia z programami zewnętrznymi, które korzystają z API RFC w celu odbierania RFC. Typ aktywacji może być Start lub Rejestracja. Jeśli jest to Start, należy określić nazwę hosta i ścieżkę programu, który ma zostać uruchomiony.

Jak zakodować RFC?

1) W zakładce atrybutów modułu funkcyjnego (kod transakcji SE37) ustaw typ przetwarzania na Moduł z obsługą zdalną, aby utworzyć zdalny moduł funkcyjny.

Jak kodować RFC

2) Napisz kod modułu funkcyjnego.

Jak kodować RFC

3) Zdefiniuj miejsce docelowe serwera RFC w systemie klienta RFC, który wywołuje funkcję zdalną (poprzez transakcję SM59).

Jak kodować RFC

4) Deklarowanie parametrów: Wszystkie pola parametrów zdalnego modułu funkcyjnego muszą być zdefiniowane jako pola referencyjne, czyli takie jak pola słownika ABAP.

5) Wyjątki: System zgłasza wewnętrznie komunikaty COMMUNICATION_FAILURE i SYSTEM_FAILURE. Możesz zgłaszać wyjątki w funkcji zdalnej, tak samo jak w przypadku funkcji wywoływanej lokalnie.

Debugowanie zdalnych wywołań funkcji

  • Jest nie można debugować zdalne wywołanie funkcji do innego systemu.
  • Jednakże podczas testowania wywołań RFC ABAP-to-ABAP można użyć debugera ABAP do monitorowania wykonywania funkcji RFC w systemie zdalnym.
  • W przypadku wywołań zdalnych debuger ABAP (w tym interfejs debugowania) działa w systemie lokalnym. Wartości danych i inne informacje o działaniu funkcji zdalnej są przesyłane z systemu zdalnego.