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

Содержание:

Anonim

Что такое RFC?

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

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

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

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

ФУНКЦИЯ ВЫЗОВА 'удаленная функция'DESTINATION destЭКСПОРТ f1 =ИМПОРТ f2 =ТАБЛИЦЫ t1 =ИСКЛЮЧЕНИЯ

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

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


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


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

Должен знать подробности о RFC

  • SAP использует протокол CPIC (общий программный интерфейс для связи) для передачи данных между системами. Это протокол 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:


Синхронный

Требует, чтобы обе системы (клиентская и серверная) были доступны во время связи или передачи данных. Это наиболее распространенный тип и требуется, когда результат требуется сразу после выполнения 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-службы

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

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

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


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


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


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

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

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