Що таке RFC?
RFC - це механізм, який дозволяє бізнес-додаткам обмінюватися інформацією (у заздалегідь визначених форматах) та обмінюватися з іншими системами. RFC розшифровується як "Виклик віддаленої функції"
RFC складається з двох інтерфейсів:
- Інтерфейс виклику для програм ABAP
- Інтерфейс виклику для програм, що не належать до SAP.
Будь-яка програма ABAP може викликати віддалену функцію за допомогою оператора CALL FUNCTION… DESTINATION . Параметр DESTINATION повідомляє системі SAP, що викликана функція працює в іншій системі, ніж викликаючі.Синтаксис -
ФУНКЦІЯ ЗВ'ЯЗКУ 'дистанційна функція'ПРИЗНАЧЕННЯ destЕКСПОРТ f1 =ІМПОРТ f2 =ТАБЛИЦІ t1 =ВИНЯТКИ
Логічні призначення визначаються за допомогою транзакції SM59 і зберігаються в таблиці RFCDES
Функції інтерфейсу RFC
- Перетворення всіх даних параметрів у подання, необхідне у віддаленій системі
- Виклик комунікаційних процедур, необхідних для розмови з віддаленою системою.
- Обробка помилок зв'язку та, за бажанням, сповіщення абонента (за допомогою параметра EXCEPTIONS функції FALL FALL)
RFC - це протокол SAP для обробки зв'язку між системами для спрощення відповідного програмування. Це процес виклику функціонального модуля, який знаходиться на іншій машині, ніж програма, що викликає. RFC також можна використовувати для виклику іншої програми на тій самій машині, але зазвичай він використовується, коли функціональні модулі / програми, що викликають та викликаються, працюють на окремих машинах.
У SAP система інтерфейсу RFC використовується для встановлення RFC-з'єднань між різними системами SAP, а також між SAP та зовнішньою (не SAP) системою.
Потрібно знати подробиці про RFC
- SAP використовує протокол CPIC (загальний інтерфейс програмування для зв'язку) для передачі даних між системами. Це специфічний протокол SAP. Remote Function Call (RFC) - це комунікаційний інтерфейс, заснований на CPI-C, але з більшою кількістю функцій і простішим для програмістів у використанні
- Функції бібліотеки RFC підтримують мову програмування C та Visual Basic (на платформах Windows)
- RFC-з'єднання завжди можна використовувати у всій системі. Це означає, що RFC-з'єднання, яке ви визначили в клієнті 000, також може використовуватися з клієнта 100 (без різниці).
- RFC - це протокол виклику спеціальних підпрограм (функціональних модулів) через мережу. Функціональні модулі можна порівняти з функціями C або процедурами PASCAL. Вони мають визначений інтерфейс, за допомогою якого можна обмінюватися даними, таблицями та кодами повернення. Функціональними модулями керує система R / 3 у власній бібліотеці функцій, яка називається "Конструктор функцій".
- Конструктор функцій (транзакція SE37) надає програмістам програми корисне середовище для програмування, документування та тестування функціональних модулів, які можна викликати як локально, так і віддалено. Система R / 3 автоматично генерує додатковий код (заглушку RFC), необхідний для віддалених дзвінків.
- Ви підтримуєте параметри RFC-з'єднань за допомогою транзакції SM59. Система R / 3 також постачається з RFC-SDK (Kit для розробки програмного забезпечення), який використовує великі бібліотеки C, що дозволяють підключати зовнішні програми до системи R / 3.
- Єдина різниця між віддаленим викликом функціонального модуля на інший сервер та локальним викликом - це спеціальний параметр (адресат), який визначає цільовий сервер, на якому має виконуватися програма.
Переваги RFC:
RFC допомагає зменшити зусилля програмістів, дозволяючи їм уникати повторної розробки модулів та методів у віддалених системах. Він достатньо здатний:
- Перетворіть дані у формат, зрозумілий віддаленій (цільовій) системі.
- Перетворіть дані у формат, зрозумілий віддаленій (цільовій) системі.
- Викличте певні процедури, які необхідні для початку зв'язку з віддаленою системою.
- Обробляйте помилки, які можуть виникнути в процесі спілкування.
Типи RFC:
Синхронний
Потрібно, щоб обидві системи (клієнт і сервер) були доступні під час спілкування або передачі даних. Це найпоширеніший тип і необхідний, коли результат потрібен одразу після виконання sRFC.
sRFC - це засіб зв'язку між системами, де потрібні підтвердження. Ресурси вихідної системи очікують на цільовій системі та гарантують, що вони доставлять повідомлення / дані за допомогою ACKD. Дані є послідовними та надійними для спілкування.
Проблема полягає в тому, що цільова система недоступна, вихідні системні ресурси чекають, поки цільова система стане доступною. Це може призвести до того, що процеси вихідної системи переходять у режим сну / RFC / CPIC у цільових системах і, отже, блокують ці ресурси.
Використовуваний для
- Для зв'язку між системами
- Для зв'язку між сервером веб-додатків SAP та графічним інтерфейсом користувача SAP
Асинхронний
Це зв’язок між системами, де підтвердження не потрібні (це схоже на доставку листівки). Не вимагає, щоб обидві системи були доступними під час виконання, а результат не потрібно негайно відправляти назад у викличну систему .Ресурс вихідної системи не чекає цільової системи, оскільки вони доставляють повідомлення / дані, не чекаючи підтвердження. Це не є надійним для зв'язку, оскільки дані можуть бути втрачені, якщо цільова система недоступна. Використовуваний для -
- Для зв'язку між системами
- Для паралельної обробки
Транзакційна
Це особлива форма aRFC. Транзакційний RFC забезпечує транзакційну обробку етапів обробки, які спочатку були автономними.Транзакційний RFC - це асинхронний метод зв'язку, який виконує викликаний функціональний модуль на сервері RFC лише один раз, навіть якщо дані надсилаються кілька разів через якусь проблему мережі. Віддалена система не повинна бути доступною в той час, коли клієнтська програма RFC виконує tRFC. Компонент tRFC зберігає викликану функцію RFC разом із відповідними даними у базі даних SAP під унікальним ідентифікатором транзакції (TID). tRFC схожий на aRFC, оскільки він не чекає на цільовій системі (подібно до зареєстрованого повідомлення). Якщо система недоступна, вона запише дані в таблиці aRFC з ідентифікатором транзакції (SM58), який вибирає планувальник RSARFCSE (який працює кожні 60 секунд). Використовуваний для-
- Розширення асинхронного RFC
- Для безпечного зв'язку між системами
У черзі
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 Dictionary.5. Винятки: система піднімає COMMUNICATION_FAILURE та SYSTEM_FAILURE внутрішньо. Ви можете створювати винятки у віддаленій функції так само, як і в локально викликаній функції.
Налагодження викликів віддалених функцій
- Це НЕ представляється можливим для налагодження віддаленого виклику функції до іншої системи.
- Однак, під час тестування викликів з ABAP на ABAP RFC, ви можете використовувати налагоджувач ABAP для моніторингу виконання функції RFC у віддаленій системі.
- При віддалених викликах налагоджувач ABAP (включаючи інтерфейс налагодження) працює в локальній системі. Значення даних та інша інформація про запуск для віддаленої функції передаються із віддаленої системи.