Удаленный вызов функции (RFC) в учебнике SAP

Что такое РЧЦ?

RFC — это механизм, который позволяет бизнес-приложениям взаимодействовать и обмениваться информацией (в заранее определенных форматах) с другими системами. RFC означает «Удаленный вызов функции»

RFC состоит из двух интерфейсов:

  1. Вызовной интерфейс для программ ABAP
  2. Интерфейс вызова для программ, отличных от SAP.

Любые ABAP-программа может вызвать удаленную функцию, используя ВЫЗОВ ФУНКЦИИ… НАЗНАЧЕНИЕ утверждение. В МЕСТО НАЗНАЧЕНИЯ Параметр сообщает системе SAP, что вызываемая функция выполняется в системе, отличной от вызывающей стороны.

Синтаксис-

CALL FUNCTION 'remotefunction'

DESTINATION dest

EXPORTING f1 =

IMPORTING f2 =

TABLES t1 =

EXCEPTIONS

Логические пункты назначения определяются посредством транзакции. SM59 и хранится в таблице RFCDES

Функции интерфейса RFC

  • Преобразование всех данных параметров в представление, необходимое в удаленной системе.
  • Вызов процедур связи, необходимых для общения с удаленной системой.
  • Обработка ошибок связи и при необходимости уведомление вызывающего абонента (с использованием параметра EXCEPTIONS функции CALL FUNCTION).

Функции интерфейса RFC

RFC — это протокол SAP, обеспечивающий связь между системами и упрощающий соответствующее программирование. Это процесс вызова функционального модуля, который находится на другом компьютере, чем вызывающая программа. RFC также можно использовать для вызова другой программы на одной и той же машине, но обычно он используется, когда «вызывающие» и «вызываемые» функциональные модули/программы выполняются на разных машинах.

Функции интерфейса RFC

In SAP, Система интерфейса RFC используется для настройки RFC-соединений между различными SAP-системы, а также между SAP и внешней (не SAP) системой.

Должен знать Деtails О РФЦ

  • SAP использует протокол CPIC (общий программный интерфейс для связи) для передачи данных между системами. Это специальный протокол SAP. Удаленный вызов функций (RFC) — это интерфейс связи, основанный на CPI-C, но обладающий большим количеством функций и более простой в использовании прикладными программистами.
  • Функции библиотеки RFC поддерживают C programming language и 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

Типы RFC

Synchronous

Требуется, чтобы обе системы (клиент и сервер) были доступны во время связи или передачи данных. Это наиболее распространенный тип, который требуется, когда результат требуется сразу после выполнения sRFC.

sRFC — это средство связи между системами, где требуются подтверждения. Ресурсы исходной системы ожидают целевой системы и гарантируют доставку сообщения/данных с помощью ACKD. Данные являются последовательными и надежными для связи.

Проблема в том, что если целевая система недоступна, ресурсы исходной системы ждут, пока целевая система не станет доступной. Это может привести к тому, что процессы исходной системы перейдут в режим сна/RFC/CPIC в целевых системах и, следовательно, заблокируют эти ресурсы.

Используется для

  • Для связи между системами
  • Для связи между сервером веб-приложений SAP и графическим интерфейсом SAP.

Asynchronous

Это связь между системами, при которой подтверждения не требуются (аналогично доставке открытки). Он не требует, чтобы обе системы были доступны во время выполнения, и не требуется немедленной отправки результата обратно в вызывающую систему. .

Ресурс исходной системы не ждет целевой системы, поскольку она доставляет сообщение/данные, не дожидаясь какого-либо подтверждения. Это ненадежно для связи, поскольку данные могут быть потеряны, если целевая система недоступна. Используется для -

  • Для связи между системами
  • Для параллельной обработки

Транзакционные

Это особая форма aRFC. Транзакционный RFC обеспечивает транзакционную обработку этапов обработки, которые изначально были автономными.

Транзакционный RFC — этоsyncметод хронической связи, который выполняет вызываемый функциональный модуль на RFC-сервере только один раз, даже если данные отправляются несколько раз из-за какой-либо сетевой проблемы. Удаленная система не обязательно должна быть доступна в то время, когда клиентская программа RFC выполняет tRFC. Компонент tRFC сохраняет вызванную функцию RFC вместе с соответствующими данными в базе данных SAP под уникальным идентификатором транзакции (TID). tRFC похож на aRFC, поскольку он не ожидает в целевой системе (аналогично зарегистрированному сообщению). Если система недоступна, она запишет данные в таблицы aRFC с идентификатором транзакции (SM58), который выбирается планировщиком RSARFCSE (который выполняется каждые 60 секунд). Используется для-

  • Расширение Аsyncхронный RFC
  • Для безопасной связи между системами

В очереди

RFC в очереди — это расширение tRFC. Это также гарантирует, что отдельные шаги обрабатываются последовательно. Чтобы гарантировать, что несколько LUW (логических единиц работы/транзакций) обрабатываются в порядке, указанном приложением. tRFC можно сериализовать с помощью очередей (входящих и исходящих очередей). Отсюда и название RFC в очереди (qRFC). Используется для-

  • Расширение транзакционного RFC
  • Для определенной последовательности обработки
  • Внедрение qRFC рекомендуется, если вы хотите гарантировать обработку нескольких транзакций в заранее определенном порядке.

Типы RFC-соединений

Типы RFC-соединений

Введите 3 – записи определяют связь между ABAP-системы. Здесь мы должны указать имя хоста/IP-адрес. Однако при желании вы можете указать данные для входа. Это применимо для обоих типов RFC: между системами ABAP и внешними вызовами к системам ABAP.

Тип I – записи указывают системы ABAP, подключенные к той же базе данных, что и текущая система. Эти записи предопределены и не могут быть изменены. Пример имени записи: ws0015_K18_24.

  • ws0015=имя хоста
  • K18=имя системы (имя базы данных)
  • 24=имя TCP-сервиса

Тип Т – пункты назначения — это подключения к внешним программам, которые используют RFC API для получения RFC. Тип активации может быть Старт или Регистрация. Если это «Пуск», вы должны указать имя хоста и путь к программе, которую нужно запустить.

Как закодировать RFC?

1) На вкладке атрибутов функционального модуля (код транзакции SE37) установите тип обработки как Модуль с удаленной поддержкой, чтобы создать удаленный функциональный модуль.

Как написать RFC

2) Напишите код функционального модуля.

Как написать RFC

3) Определите назначение сервера RFC в клиентской системе RFC, который вызывает удаленную функцию (через транзакцию SM59).

Как написать RFC

4) Объявление параметров: Все поля параметров для удаленного функционального модуля должны быть определены как ссылочные поля, то есть как поля словаря ABAP.

5) Исключения: Система выдает внутренние сообщения COMMUNICATION_FAILURE и SYSTEM_FAILURE. Вы можете вызывать исключения в удаленной функции так же, как и в локально вызываемой функции.

Отладка удаленных вызовов функций

  • Это невозможно отладить удаленный вызов функции в другой системе.
  • Однако при тестировании вызовов RFC ABAP-ABAP вы можете использовать отладчик ABAP для мониторинга выполнения функции RFC в удаленной системе.
  • При удаленных вызовах отладчик ABAP (включая интерфейс отладки) запускается в локальной системе. Значения данных и другая информация о запуске удаленной функции передаются из удаленной системы.