Удаленный вызов функции (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 and Visual Basic (on 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 обеспечивает транзакционную обработку этапов обработки, которые изначально были автономными.

Transactional RFC is an asynchronous communication method that executes the called function module in the RFC server only once, even if the data is sent multiple times due to some network issue. The remote system need not be available at the time when the RFC client program is executing a tRFC. The tRFC component stores the called RFC function, together with the corresponding data, in the SAP database under a unique transaction ID (TID). tRFC is similar to aRFC as it does not wait at the target system (Similar to a registered post). If the system is not available, it will write the Data into aRFC Tables with a transaction ID (SM58) which is picked by the scheduler RSARFCSE (which runs for every 60 seconds). Используется для-

  • Extension of Asynchronous 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 (включая интерфейс отладки) запускается в локальной системе. Значения данных и другая информация о запуске удаленной функции передаются из удаленной системы.