Учебники

23) Введение в RFC

Что такое RFC?

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

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

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

Любая ABAP-программа может вызывать удаленную функцию с помощью оператора CALL FUNCTION … DESTINATION . Параметр DESTINATION сообщает системе SAP, что вызываемая функция выполняется в системе, отличной от вызывающих.
Синтаксис-

CALL FUNCTION 'remotefunction'

DESTINATION dest

EXPORTING f1 =

IMPORTING f2 =

TABLES t1 =

EXCEPTIONS

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

интерфейса RFC.

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

 

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

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

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

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

Должны знать детали о RFC

  • SAP использует протокол CPIC (Common Programming Interface for Communication) для передачи данных между системами. Это специальный протокол SAP. Remote Function Call (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 (Software Development Kit), который использует обширные библиотеки C, чтобы позволить внешним программам подключаться к системе R / 3.
  • Единственная разница между удаленным вызовом функционального модуля на другом сервере и локальным вызовом заключается в специальном параметре (назначение), который указывает целевой сервер, на котором должна выполняться программа.

Преимущества RFC:

RFC помогает сократить усилия программистов, позволяя им избежать повторной разработки модулей и методов в удаленных системах. Он достаточно способен:

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

Типы RFC:

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

синхронный

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

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

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

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

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

Асинхронный

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

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

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

транзакционный

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

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

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

Queued

 
Поставленный в очередь RFC является расширением tRFC. Это также гарантирует, что отдельные шаги обрабатываются последовательно.

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

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

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

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

Тип 3 — записи указывают соединение между системами ABAP. Здесь мы должны указать имя хоста / IP-адрес. Однако, при желании, вы можете указать информацию для входа. Это применимо для обоих типов RFC, между системами ABAP и внешними вызовами к системам ABAP.
Тип I — записи указывают системы ABAP, подключенные к той же базе данных, что и текущая система. Эти записи предварительно определены и не могут быть изменены. Пример имени записи: ws0015_K18_24

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

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

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

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

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

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

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

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

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

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

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

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