Remote Function Call (RFC) в SAP Підручник
Що таке RFC?
RFC — це механізм, який дозволяє бізнес-додаткам спілкуватися та обмінюватися інформацією (у попередньо визначених форматах) з іншими системами. RFC означає «Віддалений виклик функції»
RFC складається з двох інтерфейсів:
- Інтерфейс виклику для програм ABAP
- Інтерфейс виклику для не-SAP програм.
будь-який Програма ABAP можна викликати віддалену функцію за допомогою ФУНКЦІЯ ВИКЛИКУ…ПРИЗНАЧЕННЯ заяву. ПРИЗНАЧЕННЯ параметр повідомляє SAP Система, у якій викликана функція виконується в системі, відмінній від тих, що викликають.
Синтаксис-
CALL FUNCTION 'remotefunction' DESTINATION dest EXPORTING f1 = IMPORTING f2 = TABLES t1 = EXCEPTIONS
Логічні призначення визначаються через транзакцію SM59 і зберігаються в табл RFCDES
Функції інтерфейсу RFC
- Перетворення всіх параметричних даних у представлення, необхідне у віддаленій системі
- Виклик процедур зв'язку, необхідних для спілкування з віддаленою системою.
- Обробка помилок зв’язку та сповіщення абонента, якщо потрібно (за допомогою параметра EXCEPTIONS функції CALL).
RFC - це a SAP протокол для обробки зв'язку між системами для спрощення відповідного програмування. Це процес виклику функціонального модуля, який знаходиться на машині, відмінній від програми виклику. RFC також можна використовувати для виклику іншої програми на одній машині, але зазвичай вони використовуються, коли «виклик» і «викликані» функціональні модулі/програми працюють на різних машинах.
In SAP, Система інтерфейсу RFC використовується для встановлення з’єднань RFC між різними SAP системи, а також між a SAP і зовнішній (неSAP).
Потрібно знати подробиці про RFC
- SAP Використовує протокол CPIC (Common Programming Interface for Communication) для передачі даних між системами. Це так SAP Конкретний протокол. Remote Function Call (RFC) — це комунікаційний інтерфейс, заснований на CPI-C, але з більшою кількістю функцій і простішим у використанні для прикладних програмістів
- Функції бібліотеки RFC підтримують Мова програмування C і Visual Basic (на Windows платформи)
- З’єднання RFC завжди можна використовувати в усій системі. Це означає, що з’єднання RFC, яке ви визначили в клієнті 000, також можна використовувати з клієнта 100 (без будь-якої різниці).
- RFC — це протокол для виклику спеціальних підпрограм (функціональних модулів) через мережу. Функціональні модулі можна порівняти з функціями C або процедурами PASCAL. Вони мають визначений інтерфейс, через який можна обмінюватися даними, таблицями та кодами повернення. Керування функціональними модулями в системі R/3 здійснюється у власній бібліотеці функцій, яка називається конструктором функцій.
- Function Builder (транзакція SE37) надає прикладним програмістам корисне середовище для програмування, документування та Тестування функціональні модулі, які можна викликати як локально, так і віддалено. Система R/3 автоматично генерує додатковий код (заглушку RFC), необхідний для віддалених викликів.
- Ви підтримуєте параметри для підключень RFC за допомогою транзакції SM59. Система R/3 також постачається з RFC-SDK (набір для розробки програмного забезпечення), який використовує великі бібліотеки C для підключення зовнішніх програм до системи R/3.
- Єдина відмінність між віддаленим викликом функціонального модуля на інший сервер і локальним викликом полягає в спеціальному параметрі (адреса), який визначає цільовий сервер, на якому програма має виконуватися.
Переваги RFC
RFC допомагає зменшити зусилля програмістів, дозволяючи їм уникнути повторної розробки модулів і методів у віддалених системах. Він достатньо здатний:
- Перетворення даних у формат, зрозумілий віддаленій (цільовій) системі.
- Перетворення даних у формат, зрозумілий віддаленій (цільовій) системі.
- Викликати певні підпрограми, необхідні для початку зв’язку з віддаленою системою.
- Обробляйте помилки, які можуть виникнути в процесі спілкування.
Типи RFC
Syncхронічний
Вимагає, щоб обидві системи (клієнт і сервер) були доступні під час зв’язку або передачі даних. Це найпоширеніший тип і потрібен, коли результат потрібен відразу після виконання sRFC.
sRFC — це засіб зв’язку між системами, де потрібні підтвердження. Ресурси вихідної системи чекають цільової системи та забезпечують доставку повідомлення/даних за допомогою ACKD. Дані послідовні та надійні для зв’язку.
Проблема полягає в тому, що якщо цільова система недоступна, ресурси вихідної системи чекають, поки цільова система стане доступною. Це може призвести до переходу процесів вихідної системи в режим сну/RFC/CPIC на цільових системах і, отже, до блокування цих ресурсів.
Використовуваний для
- Для зв'язку між системами
- Для спілкування між SAP Сервер веб-додатків до SAP графічний інтерфейс користувача
Асинхронний
Це зв’язок між системами, де підтвердження не потрібні (це схоже на доставку листівки). Не вимагається, щоб обидві системи були доступні під час виконання, і результат не потрібно негайно надсилати назад системі, що викликає. .
Ресурс вихідної системи не чекає на цільову систему, оскільки вона доставляє повідомлення/дані, не чекаючи жодного підтвердження. Це ненадійний зв’язок, оскільки дані можуть бути втрачені, якщо цільова система недоступна. Використовуваний для -
- Для зв'язку між системами
- Для паралельної обробки
Трансакційні
Це особлива форма aRFC. Транзакційний RFC забезпечує подібну до транзакції обробку етапів обробки, які спочатку були автономними.
Транзакційний RFC — це асинхронний метод зв’язку, який виконує викликаний функціональний модуль на сервері RFC лише один раз, навіть якщо дані надсилаються кілька разів через проблеми з мережею. Віддалена система не повинна бути доступною в той час, коли клієнтська програма RFC виконує tRFC. Компонент tRFC зберігає викликану функцію RFC разом із відповідними даними в SAP бази даних під унікальним ідентифікатором транзакції (TID). tRFC схожий на aRFC, оскільки він не чекає в цільовій системі (подібно до зареєстрованого повідомлення). Якщо система недоступна, вона записуватиме дані в таблиці aRFC з ідентифікатором транзакції (SM58), який вибирає планувальник RSARFCSE (який запускається кожні 60 секунд). Використовуваний для-
- Розширення асинхронного RFC
- Для безпечного зв'язку між системами
У черзі
Queued RFC є розширенням tRFC. Це також забезпечує послідовність обробки окремих кроків. Щоб гарантувати, що кілька LUW (логічна одиниця роботи/транзакція) обробляються в порядку, визначеному програмою. tRFC можна серіалізувати за допомогою черг (вхідних і вихідних). Звідси назва RFC у черзі (qRFC). Використовуваний для-
- Розширення транзакційного RFC
- Для визначеної послідовності обробки
- Реалізація qRFC рекомендована, якщо ви хочете гарантувати, що декілька транзакцій оброблятимуться у попередньо визначеному порядку.
Типи з'єднань RFC
Введіть 3 – записи визначають зв’язок між ABAP системи. Тут ми повинні вказати ім'я хоста / IP-адресу. Однак за бажанням ви можете вказати інформацію для входу. Це стосується обох типів RFC, між системами ABAP і зовнішніми викликами до систем ABAP
Тип I – записи визначають системи ABAP, підключені до тієї самої бази даних, що й поточна система. Ці записи є попередньо визначеними та не можуть бути змінені. Приклад імені запису: ws0015_K18_24
- ws0015=ім'я хоста
- K18=ім'я системи (ім'я бази даних)
- 24=Назва TCP-сервісу
Тип T – призначення – це підключення до зовнішніх програм, які використовують RFC API для отримання RFC. Тип активації може бути Пуск або Реєстрація. Якщо це «Пуск», ви повинні вказати ім’я хоста та шлях до програми, яку потрібно запустити.
Як закодувати RFC?
1) На вкладці атрибутів функціонального модуля (код транзакції SE37) встановіть тип обробки як «Дистанційний модуль», щоб створити віддалений функціональний модуль.
2) Напишіть код функціонального модуля.
3) Визначте призначення сервера RFC у клієнтській системі RFC, яка викликає віддалену функцію (через транзакцію SM59).
4) Оголошення параметрів: усі поля параметрів для віддаленого функціонального модуля мають бути визначені як довідкові поля, тобто як поля словника ABAP.
5) Винятки: Система всередині викликає COMMUNICATION_FAILURE та SYSTEM_FAILURE. Ви можете викликати винятки у віддаленій функції так само, як і у локально викликаній функції.
Налагодження віддалених викликів функцій
- Це неможливо налагодити віддалений виклик функції до іншої системи.
- Проте під час тестування RFC-викликів ABAP-ABAP ви можете використовувати налагоджувач ABAP для моніторингу виконання функції RFC у віддаленій системі.
- При віддалених викликах налагоджувач ABAP (включно з інтерфейсом налагодження) працює в локальній системі. Значення даних та інша інформація про виконання для віддаленої функції передається з віддаленої системи.