Zdalne wywołanie funkcji (RFC) w samouczku SAP

Spisie treści:

Anonim

Co to jest RFC?

RFC to mechanizm, który umożliwia aplikacjom biznesowym komunikację i wymianę informacji (w predefiniowanych formatach) z innymi systemami. RFC oznacza „Remote Function Call”

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

  1. Interfejs wywołujący dla programów ABAP
  2. Interfejs wywołujący dla programów innych niż SAP.

Każdy program ABAP może wywołać funkcję zdalną za pomocą instrukcji CALL FUNCTION… DESTINATION . CEL parametr informuje, że system SAP zwana funkcja działa w systemie innym niż rozmówców.Składnia-

FUNKCJA POŁĄCZENIA 'zdalna'PRZEZNACZENIE dotEKSPORTOWANIE f1 =IMPORTOWANIE f2 =TABELE t1 =WYJĄTKI

Logiczne miejsca docelowe są definiowane za pomocą transakcji SM59 i przechowywane w tabeli RFCDES
Funkcje interfejsu RFC

  • Konwersja wszystkich danych parametrów do reprezentacji potrzebnej w systemie zdalnym
  • Wywołanie procedur komunikacyjnych potrzebnych do rozmowy z systemem zdalnym.
  • Obsługa błędów komunikacyjnych i powiadamianie dzwoniącego, jeśli jest to wymagane (przy użyciu parametru EXCEPTIONS funkcji CALL FUNCTION).


RFC to protokół SAP 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. RFC mogą być używane do wywoływania innego programu na tej samej maszynie, ale zwykle jest używane, gdy „wywołujące” i „wywoływane” moduły / programy funkcyjne działają na oddzielnych maszynach.


W SAP system interfejsu RFC służy do zestawiania połączeń RFC między różnymi systemami SAP, a także między systemem SAP a systemem zewnętrznym (innym niż SAP).

Musisz znać szczegóły dotyczące RFC

  • SAP używa protokołu CPIC (Common Programming Interface for Communication) do przesyłania danych między systemami. Jest to protokół specyficzny dla SAP. Zdalne wywołanie funkcji (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 (na platformach Windows)
  • Połączenia RFC mogą być zawsze używane w całym systemie, co oznacza, że ​​połączenie RFC zdefiniowane w kliencie 000 może być również używane z klienta 100 (bez żadnej różnicy).
  • RFC to protokół służący do wywoływania specjalnych podprogramów (modułów funkcyjnych) w sieci. Moduły funkcyjne są porównywalne z funkcjami C lub procedurami PASCAL. Mają zdefiniowany interfejs, przez który można wymieniać dane, tabele i kody powrotne. Moduły funkcyjne są zarządzane 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 testowania modułów funkcyjnych, które można wywoływać lokalnie lub zdalnie. System R / 3 automatycznie generuje dodatkowy kod (kod RFC) potrzebny do połączeń zdalnych.
  • Utrzymujesz parametry połączeń RFC za pomocą transakcji SM59. System R / 3 jest również dostarczany z zestawem 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ą między zdalnym wywołaniem modułu funkcji na inny serwer a wywołaniem lokalnym jest specjalny parametr (miejsce docelowe), który określa serwer docelowy, na którym ma być wykonywany program.

Zalety RFC:

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

  • Przekonwertuj dane na format zrozumiały dla systemu zdalnego (docelowego).
  • Przekonwertuj dane na format zrozumiały dla systemu zdalnego (docelowego).
  • Wywołaj określone procedury, które są niezbędne do rozpoczęcia komunikacji ze zdalnym systemem.
  • Obsługuj błędy, które mogą wystąpić w procesie komunikacji.

Rodzaje RFC:


Synchroniczny

Wymaga dostępności obu systemów (klienta i serwera) w czasie komunikacji lub przesyłania danych. Jest to najpowszechniejszy typ i jest wymagany, gdy wynik jest wymagany natychmiast po wykonaniu sRFC.
sRFC to środek komunikacji między systemami, w którym wymagane są potwierdzenia. Zasoby systemu źródłowego czekają w systemie docelowym i zapewniają dostarczenie wiadomości / danych z ACKD. Dane są spójne i wiarygodne do komunikacji.
Problem polega na tym, że jeśli system docelowy jest niedostępny, zasoby systemu źródłowego czekają, aż system docelowy będzie dostępny. Może to prowadzić do przejścia procesów systemu źródłowego w tryb uśpienia / RFC / CPIC w systemach docelowych, a tym samym blokuje te zasoby.
Używany do

  • Do komunikacji między systemami
  • Do komunikacji między serwerem aplikacji sieci Web SAP a interfejsem GUI SAP

Asynchroniczny

Jest to komunikacja między systemami, w których nie są wymagane potwierdzenia (podobnie jak przesyłka pocztowa), nie wymaga, aby oba systemy były dostępne w momencie wykonania, a wynik nie musi być od razu odsyłany z powrotem do systemu wywołującego .

Zasoby systemu źródłowego nie czekają na system docelowy, ponieważ dostarczają wiadomość / dane bez oczekiwania na potwierdzenie. Komunikacja nie jest niezawodna, ponieważ dane mogą zostać utracone, jeśli system docelowy nie jest dostępny. Używany do -

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

Transakcyjne

Jest to specjalna forma aRFC. Transakcyjny RFC zapewnia podobną do transakcji obsługę kroków przetwarzania, które pierwotnie były autonomiczne.

Transakcyjne RFC to asynchroniczna metoda komunikacji, która wykonuje wywoływany moduł funkcji na serwerze RFC tylko raz, nawet jeśli dane są wysyłane wiele razy z powodu problemu z siecią. System zdalny nie musi być dostępny w czasie, gdy program klienta RFC wykonuje tRFC. Komponent tRFC przechowuje wywołaną funkcję RFC wraz z odpowiednimi danymi w bazie danych SAP pod unikalnym identyfikatorem transakcji (TID). tRFC jest podobny do aRFC, ponieważ nie czeka w systemie docelowym (podobnie do zarejestrowanego postu). Jeśli system nie jest dostępny, zapisze dane w tabelach aRFC z identyfikatorem transakcji (SM58), który jest wybierany przez program planujący RSARFCSE (który jest uruchamiany co 60 sekund). Używany do-

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

W kolejce

Queued RFC jest rozszerzeniem tRFC. Zapewnia również, że poszczególne kroki są wykonywane po kolei.

Aby zagwarantować, że wiele LUW (logicznych jednostek pracy / transakcji) jest przetwarzanych w kolejności określonej w aplikacji. tRFC można serializować za pomocą kolejek (kolejek przychodzących i wychodzących). Stąd nazwa kolejki RFC (qRFC). Używany do-

  • Rozszerzenie transakcyjnego RFC
  • Do określonej kolejności obróbki
  • Implementacja qRFC jest zalecana, jeśli chcesz zagwarantować, że kilka transakcji zostanie przetworzonych w określonej kolejności.

Rodzaje połączeń RFC


Typ 3 - wpisy określają połączenie między systemami ABAP. Tutaj musimy określić nazwę hosta / adres IP. W razie potrzeby możesz jednak podać informacje logowania. Dotyczy to obu typów dokumentów RFC, między systemami ABAP i zewnętrznymi połączeniami z systemami ABAP.Typ I - pozycje określają systemy ABAP podłączone do tej samej bazy danych co bieżący system. Te wpisy 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

Typ T - miejsca docelowe to połączenia z programami zewnętrznymi, które używają interfejsu API RFC do odbierania specyfikacji RFC. Typ aktywacji to Start lub Rejestracja. Jeśli jest to Start, musisz określić nazwę hosta i ścieżkę programu, który ma zostać uruchomiony.

Jak zakodować RFC?

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


2. Wpisz kod modułu funkcyjnego.


3. Zdefiniuj miejsce docelowe serwera RFC w systemie klienta RFC, który wywołuje funkcję zdalną (za pośrednictwem transakcji SM59).


4. Deklarowanie parametrów : Wszystkie pola parametrów dla zdalnego modułu funkcyjnego muszą być zdefiniowane jako pola odniesienia, to znaczy jak pola ze słownika ABAP.5. Wyjątki: system zgłasza błąd COMMUNICATION_FAILURE i SYSTEM_FAILURE wewnętrznie. Możesz zgłaszać wyjątki w funkcji zdalnej tak samo, jak w przypadku funkcji wywoływanej lokalnie.

Debugowanie zdalnych wywołań funkcji

  • Nie jest możliwe debugowanie zdalnego wywołania funkcji do innego systemu.
  • Jednak podczas testowania wywołań ABAP-to-ABAP RFC można użyć debugera ABAP do monitorowania wykonywania funkcji RFC w systemie zdalnym.
  • W przypadku połączeń zdalnych debugger ABAP (w tym interfejs debugowania) działa w systemie lokalnym. Wartości danych i inne informacje o uruchomieniu funkcji zdalnej są przekazywane z systemu zdalnego.