Удаленный вызов функции (RFC) в SAP Обучение
Что такое РЧЦ?
RFC — это механизм, который позволяет бизнес-приложениям взаимодействовать и обмениваться информацией (в заранее определенных форматах) с другими системами. RFC означает «Удаленный вызов функции»
RFC состоит из двух интерфейсов:
- Вызовной интерфейс для программ ABAP
- Вызовной интерфейс для не-SAP программ.
Любые ABAP-программа может вызвать удаленную функцию, используя ВЫЗОВ ФУНКЦИИ… НАЗНАЧЕНИЕ утверждение. В МЕСТО НАЗНАЧЕНИЯ параметр сообщает SAP Система, в которой вызываемая функция выполняется в системе, отличной от вызывающей.
Синтаксис-
CALL FUNCTION 'remotefunction' DESTINATION dest EXPORTING f1 = IMPORTING f2 = TABLES t1 = EXCEPTIONS
Логические пункты назначения определяются посредством транзакции. SM59 и хранится в таблице RFCDES
Функции интерфейса RFC
- Преобразование всех данных параметров в представление, необходимое в удаленной системе.
- Вызов процедур связи, необходимых для общения с удаленной системой.
- Обработка ошибок связи и при необходимости уведомление вызывающего абонента (с использованием параметра EXCEPTIONS функции CALL FUNCTION).
RFC – это SAP протокол для управления связью между системами для упрощения соответствующего программирования. Это процесс вызова функционального модуля, который находится на другом компьютере, чем вызывающая программа. RFC также можно использовать для вызова другой программы на одной и той же машине, но обычно он используется, когда «вызывающие» и «вызываемые» функциональные модули/программы выполняются на разных машинах.
In SAP, Система интерфейса RFC используется для настройки RFC-соединений между различными SAP системы, а также между SAP и внешний (неSAP).
Необходимо знать подробности о RFC
- SAP Использует протокол CPIC (общий программный интерфейс для связи) для передачи данных между системами. Это SAP Конкретный протокол. Удаленный вызов функций (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 (Комплект разработки программного обеспечения), который использует обширные библиотеки C, позволяющие подключать внешние программы к системе R/3.
- Единственная разница между удаленным вызовом функционального модуля на другой сервер и локальным вызовом заключается в специальном параметре (назначении), указывающем целевой сервер, на котором должна выполняться программа.
Преимущества RFC
RFC помогает сократить усилия программистов, позволяя им избежать повторной разработки модулей и методов в удаленных системах. Он способен:
- Преобразуйте данные в формат, понятный удаленной (целевой) системе.
- Преобразуйте данные в формат, понятный удаленной (целевой) системе.
- Вызовите определенные процедуры, необходимые для начала связи с удаленной системой.
- Обрабатывать ошибки, которые могут возникнуть в процессе общения.
Типы RFC
Synchronous
Требуется, чтобы обе системы (клиент и сервер) были доступны во время связи или передачи данных. Это наиболее распространенный тип, который требуется, когда результат требуется сразу после выполнения 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-сервиса
Тип Т – пункты назначения — это подключения к внешним программам, которые используют RFC API для получения RFC. Тип активации может быть Старт или Регистрация. Если это «Пуск», вы должны указать имя хоста и путь к программе, которую нужно запустить.
Как закодировать RFC?
1) На вкладке атрибутов функционального модуля (код транзакции SE37) установите тип обработки как Модуль с удаленной поддержкой, чтобы создать удаленный функциональный модуль.
2) Напишите код функционального модуля.
3) Определите назначение сервера RFC в клиентской системе RFC, который вызывает удаленную функцию (через транзакцию SM59).
4) Объявление параметров: Все поля параметров для удаленного функционального модуля должны быть определены как ссылочные поля, то есть как поля словаря ABAP.
5) Исключения: Система выдает внутренние сообщения COMMUNICATION_FAILURE и SYSTEM_FAILURE. Вы можете вызывать исключения в удаленной функции так же, как и в локально вызываемой функции.
Отладка удаленных вызовов функций
- Это невозможно отладить удаленный вызов функции в другой системе.
- Однако при тестировании вызовов RFC ABAP-ABAP вы можете использовать отладчик ABAP для мониторинга выполнения функции RFC в удаленной системе.
- При удаленных вызовах отладчик ABAP (включая интерфейс отладки) запускается в локальной системе. Значения данных и другая информация о запуске удаленной функции передаются из удаленной системы.