Что такое RFC?
RFC — это механизм, позволяющий бизнес-приложениям обмениваться информацией (в заранее определенных форматах) и обмениваться ею с другими системами. RFC расшифровывается как «Remote Function Call»
RFC состоит из двух интерфейсов:
- Интерфейс вызова для программ ABAP
- Интерфейс вызова для не-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 и внешней (не 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:
синхронный
Требуется, чтобы обе системы (клиент и сервер) были доступны во время связи или передачи данных. Это наиболее распространенный тип, который требуется, когда результат требуется сразу после выполнения sRFC.
sRFC — это средство связи между системами, где требуется подтверждение. Ресурсы исходной системы ожидают в целевой системе и обеспечивают доставку сообщения / данных с помощью ACKD. Данные являются последовательными и надежными для связи.
Проблема в том, что если целевая система недоступна, ресурсы исходной системы ждут, пока целевая система не станет доступной. Это может привести к тому, что процессы исходной системы перейдут в режим сна / RFC / CPIC в целевых системах и, следовательно, заблокируют эти ресурсы.
Используется для
- Для связи между системами
- Для связи между сервером веб-приложений SAP и SAP GUI
Асинхронный
Ресурс исходной системы не ожидает целевой системы, поскольку они доставляют сообщение / данные, не ожидая какого-либо подтверждения. Это ненадежно для связи, поскольку данные могут быть потеряны, если целевая система недоступна. Используется для —
- Для связи между системами
- Для параллельной обработки
транзакционный
Транзакционный RFC — это асинхронный метод связи, который выполняет вызываемый функциональный модуль на сервере RFC только один раз, даже если данные отправляются несколько раз из-за какой-либо проблемы в сети. Удаленная система не должна быть доступна в то время, когда клиентская программа RFC выполняет tRFC. Компонент tRFC сохраняет вызываемую функцию RFC вместе с соответствующими данными в базе данных SAP под уникальным идентификатором транзакции (TID). tRFC похож на aRFC, поскольку он не ожидает в целевой системе (аналогично зарегистрированному сообщению). Если система недоступна, она запишет данные в таблицы aRFC с идентификатором транзакции (SM58), который выбирается планировщиком RSARFCSE (который выполняется каждые 60 секунд). Используется для-
- Расширение асинхронного RFC
- Для безопасной связи между системами
Queued
Чтобы гарантировать, что несколько 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 , вы должны указать имя хоста и путь к программе, которая будет запущена.
Как кодировать RFC?
1. На вкладке атрибутов функционального модуля (код транзакции SE37) установите тип обработки как Удаленный модуль, чтобы создать удаленный функциональный модуль.
2. Напишите код для функционального модуля.
3. Определите назначение сервера RFC в клиентской системе RFC, которая вызывает удаленную функцию (через транзакцию SM59).
4. Декларирование параметров . Все поля параметров для удаленного функционального модуля должны быть определены как справочные поля, то есть как поля словаря ABAP.
5. Исключения: система вызывает COMMUNICATION_FAILURE и SYSTEM_FAILURE внутри. Вы можете вызывать исключения в удаленной функции так же, как в локально вызываемой функции.
Отладка удаленных вызовов функций
- Это не представляется возможным для отладки удаленного вызова функции к другой системе.
- Однако при тестировании вызовов RFC ABAP-to-ABAP вы можете использовать отладчик ABAP для мониторинга выполнения функции RFC в удаленной системе.
- При удаленных вызовах отладчик ABAP (включая интерфейс отладки) работает в локальной системе. Значения данных и другая информация о работе для удаленной функции передаются из удаленной системы.