Удаленный вызов функции (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) — это протокол для передачи данных между системами. SAPRFC — это специфичный интерфейс связи, построенный на основе 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). Ресурсы исходной системы ожидают подтверждения от целевой системы и обеспечивают доставку сообщения с подтверждением (ACK). Обмениваемые данные являются согласованными и надежными.
Недостаток заключается в том, что если целевая система недоступна, ресурсы исходной системы ожидают ее восстановления, что может перевести процессы исходной системы в режим сна/RFC/CPIC на целевой системе и заблокировать ресурсы.
Эксплуатация:
- Обмен данными между системами в режиме реального времени.
- Связь между SAP Сервер веб-приложений и SAP GUI.
2. Асинхронный RFC (aRFC)
Асинхронный RFC — это обмен данными между системами, при котором подтверждение не требуется — аналогично сбросу соединения.ping открытка по почте. Обе системы не обязательно должны быть доступны во время выполнения, и результат не возвращается вызывающей системе немедленно.
Ресурс исходной системы не ждет целевую систему; он предоставляет данные и переходит к следующему этапу. Это делает RFC быстрым, но не надежным сам по себе — данные могут быть потеряны, если целевая система недоступна.
Эксплуатация:
- Обмен данными между системами по принципу «запустил и забыл».
- Параллельная обработка данных в разных системах.
3. Транзакционный RFC (tRFC)
Транзакционный RFC — это особая форма асинхронного RFC. Он обеспечивает обработку этапов, которые в противном случае выполнялись бы автономно, подобно транзакционной обработке.
Компонент tRFC выполняет вызываемый функциональный модуль на RFC-сервере ровно один раз, даже если данные передаются несколько раз из-за проблем с сетью. Удалённая система не обязательно должна быть доступна в момент выполнения вызова RFC-клиентом. Компонент tRFC сохраняет вызываемую функцию и её данные в памяти. SAP база данных в рамках уникальной Идентификатор транзакции (TID)Если целевая система недоступна, данные записываются в таблицы RFC (видимые в транзакции). SM58) и впоследствии подхвачено отчетом планировщика РСАРФСЕкоторый запускается каждые 60 секунд.
Эксплуатация:
- Расширение асинхронного RFC с доставкой не более одного раза.
- Надежная связь между системами, где важна точность выполнения до одного раза.
4. RFC с очередью (qRFC)
Queued RFC расширяет возможности tRFC, гарантируя обработку отдельных шагов в последовательности, указанной вызывающим приложением. Для обеспечения обработки нескольких логических единиц работы (LUW/транзакций) в заданном порядке, tRFC может быть сериализован с использованием входящих и исходящих очередей — отсюда и название «queued RFC».
Эксплуатация:
- Расширение транзакционного RFC со строгим порядком выполнения.
- Сценарии, в которых обязательна определенная последовательность обработки.
- Случаи, когда необходимо обработать несколько транзакций в заранее определенном порядке.
Сравнение типов RFC
| Тип | Ожидание ответа от абонента? | Надежная? | Упорядоченный? | лучший для |
|---|---|---|---|---|
| sRFC | Да | Да | Не применимо (один звонок) | Поиск в реальном времени |
| aRFC | Нет | Нет | Нет | Запустил и забыл, параллельная работа |
| tRFC | Нет | Да (ровно один раз) | Нет | Надежные асинхронные обновления |
| qRFC | Нет | Да (ровно один раз) | Да | Обновления строго упорядочены. |
Типы RFC-соединений
SM59 поддерживает несколько типов подключения. Три наиболее часто встречающихся типа описаны ниже.
Тип 3 — ABAP-to-ABAP
Записи типа 3 указывают на связь между ABAP-системыИмя хоста или IP-адрес являются обязательными; информация для входа в систему может быть предоставлена по желанию. Тип 3 применим как для RFC-сообщений между системами ABAP, так и для внешних вызовов к системам ABAP.
Тип I — Одноранговый узел в той же базе данных
Записи типа I указывают на системы ABAP, которые используют ту же базу данных, что и текущая система. Эти записи предопределены и не могут быть изменены. Типичное имя записи выглядит следующим образом: ws0015_K18_24:
- ws0015 — имя хоста
- K18 — имя системы (базы данных)
- 24 — Имя службы TCP
Тип Т — Внешняя программа
Назначения типа T подключаются к внешним программам, которые используют API RFC для приема RFC-запросов. Тип активации может быть любым из следующих: Начать or РегистрацияЕсли выбран параметр «Запуск», необходимо указать имя хоста и путь к запускаемой программе.
КАК 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 | Function Builder — создание или редактирование функциональных модулей с возможностью удалённого доступа. |
| SM58 | Отслеживайте неудачные транзакционные RFC-запросы и обрабатывайте их повторно. |
| SMQ1 / SMQ2 | Отслеживайте исходящие (SMQ1) и входящие (SMQ2) очереди qRFC. |
| ДОВЕРИЕ | Поддерживайте в актуальном состоянии SSL-сертификаты, используемые защищенными протоколом HTTPS RFC. |
| ST22 | Проверьте дампы памяти, образовавшиеся в результате неудачных удаленных вызовов. |
Передовые методы для SAP RFC
Хорошо спроектированный RFC-слой обеспечивает быструю, отслеживаемую и удобную для развития интеграцию. Следующие привычки стоит внедрить в каждый проект.
- Выберите подходящий вариант для конференции.tract. Используйте sRFC для синхронного поиска, tRFC для асинхронных обновлений (не более одного раза) и qRFC, когда важен порядок.
- Для каждой целевой системы используется один и тот же пункт назначения. Вместо того чтобы распределять имена хостов по множеству мест назначения, это упрощает ротацию учетных данных. tracтаблице.
- Никогда не прописывайте учетные данные вручную. В ABAP используйте доверенные системные соединения или защищенные билеты входа в систему, где это возможно.
- Регулярно контролируйте уровни SM58 и SMQ2. Зависшие записи tRFC незаметно задерживают бизнес-процессы до тех пор, пока они не будут обработаны повторно.
- Передавайте только параметры ссылочного типа. Значения параметров приводят к сбоям в работе функциональных модулей с удаленным доступом.
- Используйте STRUST для управления TLS-сертификатами. Для HTTPS-адресов — просроченные сертификаты являются одной из главных причин загадочных ошибок COMMUNICATION_FAILURE.







