Krótko na temat RFC w systemach SAP
Wiele programów pisanych w ABAP wykorzystuje wywołania funkcji w tym samym lub innym systemie. W systemach SAP wywołania takie to tzw. RFC call. RFC jest skrótem od angielskiej nazwy Remote Function Call.
Wiedza na temat, czym jest RFC przydaje się między innymi w analizie problemów z wydajnością (ang. performance), dlatego poruszam ten temat (dla programistów jest to wiedza podstawowa, więc podane tu informacje są dla nich oczywiste).
RFC bazuje na interfejsie CPI-C i może się komunikować z różnymi systemami.
Wywołanie funkcji może odbywać się na bardzo wiele sposobów. Sposób ten jest określany poprzez odpowiednią komendę ABAP. Wyróżnia się następujące typy:
Synchronous RFC – synchroniczne wywołanie funkcji, program wywołujący czeka na odpowiedź, co może być krytyczne dla działania systemu (blokowanie procesu WP).
Asynchronous RFC – asynchroniczne wywołanie funkcji nie powoduje, że program czeka na odpowiedź, podobnie jak w przypadku wywołania synchronicznego partner musi być dostępny.
Transactional RFC (tRFC) – w tym przypadku wszystkie wywołania są zbierane aż do momentu wystąpienia COMMIT WORK, partner nie musi być dostępny w momencie wywołania, a program wywołujący nie otrzymuje żadnej zwrotnej informacji. Wywołania trafiają na kolejkę widoczną w transakcji SM58. Kolejność procesowania nie jest tu w żaden sposób zapewniona.
Queued RFC (qRFC) – jest podobne do tRFC z tą różnicą, że zapewniona jest kolejność procesowania wywołań (dlatego są one umieszczane w kolejce).
Parallel RFC (pRFC) – równoległe RFC jest rozszerzeniem typu aRFC. W odróżnieniu od zwykłego wywołania RFC mamy tu możliwość wywołań do określonej grupy serwerów RFC, a nie tylko jednego odbiorcy (RFC destination).
Wykorzystywane komendy ABAP:
Synchronous RFC
CALL FUNCTION ‘Funkcja’ DESTINATION MiejscePrzeznaczenia
Asynchronious RFC (aRFC)
CALL FUNCTION funkcja … STARTING NEW TASK NazwaZadania
Transactional RFC (tRFC)
CALL FUNCTION funkcja IN BACKGROUND TASK
Queued RFC (qRFC)
CALL FUNCTION ‘ TRFC_SET_QUEUE_NAME ‘
EXPORTING
QNAME = Q_NAME.
CALL FUNCTION ‘RFC_FUNCTION_1′
IN BACKGROUND TASK
Parallel RFC (pRFC)
Zamiast komendy DESTINATION mamy tu DESTINATION ON GROUP
UŻYTECZNE TRANSAKCJE
W SM59 możemy zdefiniować połączenia RFC. Każde połączenie wykorzystywane w programie musi być zdefiniowane!
W transakcji SMGW (gateway monitor) mamy możliwość monitorowania gateway.
Definiowanie kolejek wychodzących możliwe jest w transakcji SMQS, kolejek przychodzących w SMQR. Monitorowanie kolejek możliwe jest odpowiednio w SQM1 i SMQ2.
Transakcja RZ12 umożliwia zarządzanie grupami serwerów RFC dla pRFC
WSKAZÓWKI
W SE37 możemy wywołać poprzez F8 (Single test) następujące moduły:
RFC_PING
RFC_SYSTEM_INFO
Parametr odpowiedzialny za autoryzację to auth/rfc_authority_check. Możemy znaleźć jego opis w transakcji RZ11
Jeżeli w przypadku tRFC wystąpi komenda ROLLBACK WORK zamiast COMMIT WORK, wówczas wewnętrzna kolejka oczekujących wywołań zostanie wyczyszczona.
Więcej informacji na temat RFC można znaleźć w różnych notach SAP. Oto niektóre z nich:
204039 - Authorization check in trusted system
756754 - External communication with RFC
568271 - Lifetime of an RFC connection
780817 - Analyzing the RFC user in SM04
663089 - RFC bit options in SM59
Tags: Porada techniczna (SAP), SAP

