Remote Function Call (RFC) в SAP Підручник ABAP
⚡ Розумний підсумок
Виклик віддалених функцій (RFC) – це SAP механізм зв'язку, який дозволяє програмі ABAP викликати функціональний модуль, що працює на іншій SAP або зовнішня система. Це абсtracперевіряє мережеву каналізацію, конвертує формати даних та чітко повідомляє про збої абоненту.
Що таке RFC SAP?
RFC стенди для Виклик віддаленої функціїЦе механізм, який дозволяє бізнес-додаткам взаємодіяти та обмінюватися інформацією — у заздалегідь визначених форматах — з іншими системами. RFC — найпоширеніший спосіб. SAP система спілкується з іншою, і це також міст, який з'єднує SAP систем до не-SAP додатків.
RFC пропонує два інтерфейси:
- Інтерфейс виклику для Програми ABAP.
- Інтерфейс виклику для не-SAP програм.
Будь-яка ABAP-програма може викликати віддалену функцію за допомогою ФУНКЦІЯ ВИКЛИКУ…ПРИЗНАЧЕННЯ заяву. DESTINATION параметр повідомляє SAP система, на якій викликана функція виконується на іншій системі, ніж та, що викликає.
синтаксис
CALL FUNCTION 'remotefunction'
DESTINATION dest
EXPORTING f1 = ...
IMPORTING f2 = ...
TABLES t1 = ...
EXCEPTIONS ...
Логічні пункти призначення визначаються через транзакцію SM59 і зберігається в таблиці RFCDES.
Функції інтерфейсу RFC
Середовище виконання RFC відповідає за три речі під час кожного виклику:
- Перетворення всіх даних параметрів у представлення, очікуване віддаленою системою.
- Виклик процедур зв'язку, необхідних для спілкування з віддаленою системою.
- Обробка помилок комунікації та їх виявлення перед абонентом через
EXCEPTIONSпараметрCALL FUNCTION.
RFC – це SAP протокол, який обробляє зв'язок між системами та спрощує пов'язане з цим програмування. Це процес виклику функціонального модуля, який знаходиться на іншій машині, ніж програма, що викликає. RFC технічно можна використовувати для виклику функціонального модуля на то ж машині, але найчастіше вони використовуються, коли викликаюча та викликана програми працюють на окремих машинах. Система інтерфейсів RFC використовується для встановлення RFC-з'єднань між різними SAP системи, а також між SAP та зовнішні (не-SAP) системи.
Необхідні деталі про RFC
- SAP використовує CPIC протокол (Common Programming Interface for Communication) для передачі даних між системами. CPIC – це SAP-специфічний. RFC — це комунікаційний інтерфейс, побудований на основі CPI-C, але з більшою кількістю функцій та зручнішим інтерфейсом для програмістів додатків.
- Функції бібліотеки RFC підтримують Мова програмування C та Visual Basic на Windows платформи.
- RFC-з'єднання працюють по всій системі. RFC-з'єднання, визначене в клієнті 000, також може використовуватися з клієнта 100 без жодної різниці.
- RFC – це протокол для виклику спеціалізованих підпрограм (функціональних модулів) через мережу. Функціональні модулі можна порівняти з функціями C або процедурами Pascal: вони надають визначений інтерфейс, через який обмінюються даними, таблицями та кодами повернення. Функціональні модулі керуються всередині... SAP система у спеціалізованій бібліотеці, Конструктор функцій.
- Конструктор функцій (транзакція SE37) надає програмістам додатків середовище для написання, документування та Тестування функціональні модулі, які можна викликати як локально, так і віддалено. Система автоматично генерує додатковий код ( Заготовка RFC) необхідний для віддалених дзвінків.
- RFC-з'єднання підтримуються за допомогою транзакцій SM59. SAP також постачає RFC-SDK (Комплект розробки програмного забезпечення), який використовує розширені бібліотеки C, щоб зовнішні програми могли підключатися до SAP системи.
- Єдина різниця між віддаленим викликом на інший сервер та локальним викликом полягає в
DESTINATIONпараметр, який вказує цільовий сервер, на якому має виконуватися програма.
Переваги RFC
RFC зменшує зусилля програмування, усуваючи необхідність повторної реалізації модулів та методів на віддаленому кінці. Рівень RFC піклується про:
- Перетворення даних у формат, зрозумілий для віддаленої (цільової) системи.
- Виклик підпрограм, необхідних для встановлення зв'язку з віддаленою системою.
- Обробка помилок, що виникають під час спілкування.
- Забезпечення надійної транзакційної семантики при використанні транзакційних або чергових варіантів.
Типи RFC
SAP підтримує чотири варіанти RFC. Кожен з них пропонує різний компроміс між затримкою, надійністю та гарантіями впорядкування.
1. Syncхронічний RFC (sRFC)
SyncХронічний RFC вимагає, щоб і клієнт, і сервер були доступні під час виклику. Це найпоширеніший тип, який використовується щоразу, коли викликаючій особі потрібен результат одразу після виконання.
sRFC – це засіб зв'язку між системами, де очікуються підтвердження. Ресурси вихідної системи очікують на цільову систему та забезпечують надходження повідомлення з підтвердженням (ACK). Обмін даними є узгодженими та надійними.
Недоліком є те, що якщо цільова система недоступна, ресурси вихідної системи чекають, поки вона повернеться, що може перевести процеси вихідної системи в режим сну/RFC/CPIC на цільовій системі та заблокувати ресурси.
Використовуваний для:
- Зв'язок між системами в режимі реального часу.
- Спілкування між SAP Сервер веб-застосунків та SAP Графічний інтерфейс.
2. Асинхронний RFC (aRFC)
Асинхронний RFC — це зв'язок між системами, де не потрібне підтвердження — аналогічно скиданню.ping листівка поштою. Обидві системи не обов'язково повинні бути доступні на момент виконання, і результат не повертається негайно до системи, що викликала.
Ресурс вихідної системи не чекає на цільову систему; він доставляє дані та рухається далі. Це робить aRFC швидким, але ненадійним сам по собі — дані можуть бути втрачені, якщо цільова система недоступна.
Використовуваний для:
- Зв'язок між системами за принципом «вимкнув і забув».
- Паралельна обробка в різних системах.
3. Транзакційний RFC (tRFC)
Транзакційний RFC – це особлива форма асинхронного RFC. Він забезпечує транзакційну обробку етапів обробки, які в іншому випадку були б автономними.
tRFC виконує викликаний функціональний модуль на RFC-сервері рівно один раз, навіть якщо дані надсилаються кілька разів через проблеми з мережею. Віддалена система не обов'язково має бути доступною в момент виконання виклику RFC-клієнтом. Компонент tRFC зберігає викликану функцію та її дані в SAP база даних під унікальною Ідентифікатор транзакції (TID)Якщо цільова система недоступна, дані записуються в RFC-таблиці (видимі в транзакції SM58) а пізніше підхоплено звітом планувальника RSARFCSE, який виконується кожні 60 секунд.
Використовуваний для:
- Розширення асинхронного RFC з доставкою максимум за один раз.
- Надійний зв'язок між системами, де важливе одноразове виконання.
4. RFC у черзі (qRFC)
RFC у черзі розширює tRFC, гарантуючи обробку окремих кроків у послідовності, визначеній викликаючою програмою. Щоб забезпечити обробку кількох LUW (логічних одиниць роботи / транзакцій) у запланованому порядку, tRFC можна серіалізувати за допомогою вхідних та вихідних черг — звідси й походить назва «RFC у черзі».
Використовуваний для:
- Розширення транзакційного RFC із суворим упорядкуванням.
- Сценарії, де обов'язкова визначена послідовність обробки.
- Випадки, коли кілька транзакцій необхідно обробити у заздалегідь визначеному порядку.
Порівняння типів RFC
| тип | Абонент чекає? | Надійний? | Замовили? | Best For |
|---|---|---|---|---|
| sRFC | Так | Так | Н/Д (один дзвінок) | Пошук у режимі реального часу |
| aRFC | Немає | Немає | Немає | Паралельна робота за принципом «випустив і забув» |
| tRFC | Немає | Так (рівно один раз) | Немає | Надійні асинхронні оновлення |
| qRFC | Немає | Так (рівно один раз) | Так | Оновлення в строгому порядку |
Типи з'єднань RFC
SM59 підтримує кілька типів підключення. Три з яких ви зустрінете найчастіше, наведено нижче.
Тип 3 — ABAP-ABAP
Записи типу 3 визначають зв'язок між ABAP системиІм'я хоста або IP-адреса є обов'язковими; інформацію для входу можна надати за бажанням. Тип 3 застосовується як для RFC між системами ABAP, так і для зовнішніх викликів до систем ABAP.
Тип I — вузол тієї ж бази даних
Записи типу I вказують на системи ABAP, які використовують ту саму базу даних, що й поточна система. Ці записи попередньо визначені та не можуть бути змінені. Типова назва запису виглядає так: ws0015_K18_24:
- ws0015 — ім'я хоста
- K18 — назва системи (бази даних)
- 24 — Назва служби TCP
Тип T — Зовнішня програма
Пункти призначення типу T підключаються до зовнішніх програм, які використовують RFC API для отримання RFC. Тип активації може бути одним із Старт or РеєстраціяЯкщо це Start (Запуск), необхідно вказати ім'я хоста та шлях до програми, яку потрібно запустити.
Як записатися Code Запит на консультацію (RFC)
Комплексне складання RFC складається з п'яти кроків. Перші три — це механічні клацання в SE37 та SM59; останні два стосуються отримання коду.tracправильно.
Крок 1: На вкладці атрибутів функціонального модуля транзакції SE37, встановіть тип обробки на Модуль з дистанційним керуванням щоб позначити функціональний модуль як RFC-сумісний.
Крок 2: Напишіть код для функціонального модуля в редакторі вихідного коду.
Крок 3: Визначити місце призначення RFC-сервера в клієнтській системі RFC, яка викликає віддалену функцію — це робиться в транзакції SM59.
Крок 4 — Оголошення параметрів: Усі поля параметрів для модуля віддаленої функції мають бути визначені як поля посилання, тобто введені відповідно до полів словника ABAP. Параметри значення не дозволені для модулів функцій з підтримкою віддаленої функції.
Крок 5 — Винятки: Система підвищує Збій_зв'язку та СИСТЕМНИЙ_ЗБІЙ внутрішньо на помилках транспортного рівня. Винятки рівня програми можуть бути викликані всередині віддаленої функції точно так само, як і в локальній.
Налагодження віддалених викликів функцій
- Це неможливо налагодити віддалений виклик функції в систему, що не є ABAP, класичним способом — зовнішнє середовище виконання є непрозорим.
- Однак, для викликів RFC між ABAP, налагоджувач ABAP може бути використаний для моніторингу виконання функції RFC у віддаленій системі.
- Під час віддалених викликів налагоджувач ABAP (включно з його інтерфейсом користувача) працює на локальній системі. Значення даних та інша інформація про виконання для віддаленої функції передаються потоком з віддаленої системи.
ключ SAP Транзакції RFC
Щоденний набір інструментів RFC зводиться до кількох T-кодів, які кожен розробник ABAP та адміністратор Basis повинен знати без зайвих слів.
| Т-код | Мета |
|---|---|
| SM59 | Зберігайте RFC-адреси призначення — хост, вхід, тип, безпеку. |
| SE37 | Конструктор функцій — створюйте або редагуйте функціональні модулі з віддаленою підтримкою. |
| SM58 | Моніторинг невдалих транзакційних RFC та їх повторна обробка. |
| SMQ1 / SMQ2 | Моніторинг вихідних (SMQ1) та вхідних (SMQ2) черг qRFC. |
| ДОВІРА | Зберігати SSL-сертифікати, що використовуються RFC-пристроями, захищеними HTTPS. |
| ST22 | Перевірте короткі дампи, спричинені невдалими віддаленими викликами. |
Найкращі практики для SAP RFC
Добре розроблений рівень RFC забезпечує швидку, видиму та легку для розвитку інтеграцію. Варто впроваджувати наступні звички в кожен проект.
- Оберіть правильний варіант для мошенництваtract. Використовуйте sRFC для синхронних пошуків, tRFC для асинхронних оновлень, що виконуються максимум раз, та qRFC для впорядкування питань.
- Повторно використовуйте одне місце призначення для кожної цільової системи замість розподілу імен хостів по багатьох місцях призначення — це призводить до ротації облікових даних tracтаблиці.
- Ніколи не записуйте облікові дані жорстко в код в ABAP. Використовуйте надійні системні з’єднання або безпечні квитки входу, де це можливо.
- Регулярно контролюйте SM58 та SMQ2. Застряглі записи tRFC непомітно затримують бізнес-процеси, доки їх не буде повторно оброблено.
- Передавати лише параметри посилального типу. Параметри значень порушують роботу модулів функцій з дистанційною підтримкою.
- Використання STRUST для керування сертифікатами TLS для HTTPS-напрямків — прострочені сертифікати є основною причиною загадкових дампів COMMUNICATION_FAILURE.








