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

⚡ Умное резюме

Удаленный вызов функции (RFC) — это SAP Механизм связи, позволяющий программе ABAP вызывать функциональный модуль, работающий в другой программе. SAP или внешней системы. Это абсолютноtracЭто сетевая инфраструктура, она преобразует форматы данных и корректно сообщает о сбоях вызывающей стороне.

  • 📡 Основной механизм: Команда CALL FUNCTION…DESTINATION вызывает функциональный модуль для логического назначения, определенного в SM59.
  • 🔁 Четыре варианта: SyncАсинхронные, транзакционные и очередные RFC-функции гарантируют разные условия доставки.tract.
  • 🌐 Типы подключения: SM59 поддерживает типы 3 (ABAP-to-ABAP), I (одноранговые соединения в рамках одной базы данных) и T (внешние программы).
  • 🇧🇷 Путь сборки: В транзакции SE37 установите для функционального модуля режим удаленного доступа, напишите код и укажите место назначения в транзакции SM59 для вызывающей стороны.
  • 🤖 Под углом к ​​искусственному интеллекту: Искусственный интеллект-ассистенты генерируют заглушки RFC ABAP на основе спецификаций, написанных на естественном языке, и преобразуют ошибки SM58 в практические решения.

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

Что такое RFC в SAP?

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

RFC предлагает два интерфейса:

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

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

Синтаксис

CALL FUNCTION 'remotefunction'
  DESTINATION dest
  EXPORTING  f1 = ...
  IMPORTING  f2 = ...
  TABLES     t1 = ...
  EXCEPTIONS ...

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

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

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

В каждом вызове среды выполнения RFC выполняются три действия:

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

RFC-связь между SAP системы

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

Важнейшая информация о RFC

  • SAP использует КПИК CPIC (Common Programming Interface for Communication) — это протокол для передачи данных между системами. SAPRFC — это специфичный интерфейс связи, построенный на основе CPI-C, но с большим количеством функций и более удобным интерфейсом для разработчиков приложений.
  • Функции библиотеки RFC поддерживают Язык программирования C и Visual Basic на Windows платформ.
  • RFC-соединения работают по всей системе. RFC-соединение, определенное в клиенте 000, также может использоваться из клиента 100 без каких-либо изменений.
  • RFC — это протокол для вызова специализированных подпрограмм (функциональных модулей) по сети. Функциональные модули сравнимы с функциями C или процедурами Pascal: они предоставляют определенный интерфейс, через который происходит обмен данными, таблицами и кодами возврата. Управление функциональными модулями осуществляется внутри системы. SAP система в специализированной библиотеке, Построитель функций.
  • Конструктор функций (транзакция) SE37) предоставляет программистам приложений среду для написания, документирования и тестов Функциональные модули, которые можно вызывать как локально, так и удалённо. Система автоматически генерирует дополнительный код ( Заглушка RFC) необходимы для удаленных звонков.
  • RFC-соединения поддерживаются с помощью транзакций. SM59. SAP также отправляет RFC-SDK (Комплект для разработки программного обеспечения), использующий обширные библиотеки языка C, позволяющий внешним программам подключаться к нему. SAP системы.
  • Единственное различие между удалённым вызовом к другому серверу и локальным вызовом заключается в следующем: DESTINATION Параметр, указывающий целевой сервер, на котором должна выполняться программа.

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

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

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

Типы RFC

Типы RFC

SAP Поддерживаются четыре варианта RFC. Каждый из них предлагает разный компромисс между задержкой, надежностью и гарантиями порядка выполнения.

1. Syncхронный RFC (sRFC)

SyncДля корректного выполнения RFC требуется, чтобы и клиент, и сервер были доступны в момент вызова. Это наиболее распространенный тип, используемый всякий раз, когда вызывающей стороне необходим результат сразу после выполнения.

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

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

Эксплуатация:

  • Обмен данными между системами в режиме реального времени.
  • Связь между SAP Сервер веб-приложений и SAP GUI.

2. Асинхронный RFC (aRFC)

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

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

Эксплуатация:

  • Обмен данными между системами по принципу «запустил и забыл».
  • Параллельная обработка данных в разных системах.

3. Транзакционный RFC (tRFC)

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

Компонент tRFC выполняет вызываемый функциональный модуль на RFC-сервере ровно один раз, даже если данные передаются несколько раз из-за проблем с сетью. Удалённая система не обязательно должна быть доступна в момент выполнения вызова RFC-клиентом. Компонент tRFC сохраняет вызываемую функцию и её данные в памяти. SAP база данных в рамках уникальной Идентификатор транзакции (TID)Если целевая система недоступна, данные записываются в таблицы RFC (видимые в транзакции). SM58) и впоследствии подхвачено отчетом планировщика РСАРФСЕкоторый запускается каждые 60 секунд.

Эксплуатация:

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

4. RFC с очередью (qRFC)

Queued RFC расширяет возможности tRFC, гарантируя обработку отдельных шагов в последовательности, указанной вызывающим приложением. Для обеспечения обработки нескольких логических единиц работы (LUW/транзакций) в заданном порядке, tRFC может быть сериализован с использованием входящих и исходящих очередей — отсюда и название «queued RFC».

Эксплуатация:

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

Сравнение типов RFC

Тип Ожидание ответа от абонента? Надежная? Упорядоченный? лучший для
sRFC Да Да Не применимо (один звонок) Поиск в реальном времени
aRFC Нет Нет Нет Запустил и забыл, параллельная работа
tRFC Нет Да (ровно один раз) Нет Надежные асинхронные обновления
qRFC Нет Да (ровно один раз) Да Обновления строго упорядочены.

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

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

SM59 поддерживает несколько типов подключения. Три наиболее часто встречающихся типа описаны ниже.

Тип 3 — ABAP-to-ABAP

Записи типа 3 указывают на связь между ABAP-системыИмя хоста или IP-адрес являются обязательными; информация для входа в систему может быть предоставлена ​​по желанию. Тип 3 применим как для RFC-сообщений между системами ABAP, так и для внешних вызовов к системам ABAP.

Тип I — Одноранговый узел в той же базе данных

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

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

Тип Т — Внешняя программа

Назначения типа T подключаются к внешним программам, которые используют API RFC для приема RFC-запросов. Тип активации может быть любым из следующих: Начать or РегистрацияЕсли выбран параметр «Запуск», необходимо указать имя хоста и путь к запускаемой программе.

КАК Code RFC

Создание RFC-сообщения от начала до конца состоит из пяти этапов. Первые три — это механические щелчки в SE37 и SM59; последние два — это получение соединения.tracт справа.

Шаг 1: На вкладке «Атрибуты функционального модуля» транзакции. SE37установите тип обработки на Модуль с возможностью удаленного управления пометить функциональный модуль как совместимый с RFC.

Модуль дистанционного управления SE37

Шаг 2: Напишите код для функционального модуля в редакторе исходного кода.

Исходный код функционального модуля

Шаг 3: В системе RFC-клиента, вызывающей удаленную функцию, необходимо определить адрес назначения RFC-сервера — это делается в рамках транзакции. SM59.

Настройка назначения SM59

Шаг 4 — Объявление параметров: Все поля параметров для удаленного функционального модуля должны быть определены как поля-ссылки, то есть, типизированы относительно полей словаря ABAP. Параметры значений для удаленно поддерживаемых функциональных модулей не допускаются.

Шаг 5 — Исключения: Система повышает СБОЙ СВЯЗИ и СИСТЕМНЫЙ СБОЙ Внутри системы возникают ошибки транспортного уровня. Исключения на уровне приложения могут возникать внутри удаленной функции точно так же, как и в локальной.

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

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

Основные SAP Транзакции RFC

В повседневной работе с RFC-кодами используется всего несколько T-кодов, которые каждый ABAP-разработчик и администратор Basis должны знать наизусть.

Т-код Цель
SM59 Поддерживайте актуальность RFC-адресов — хост, вход в систему, тип, безопасность.
SE37 Function Builder — создание или редактирование функциональных модулей с возможностью удалённого доступа.
SM58 Отслеживайте неудачные транзакционные RFC-запросы и обрабатывайте их повторно.
SMQ1 / SMQ2 Отслеживайте исходящие (SMQ1) и входящие (SMQ2) очереди qRFC.
ДОВЕРИЕ Поддерживайте в актуальном состоянии SSL-сертификаты, используемые защищенными протоколом HTTPS RFC.
ST22 Проверьте дампы памяти, образовавшиеся в результате неудачных удаленных вызовов.

Передовые методы для SAP RFC

Хорошо спроектированный RFC-слой обеспечивает быструю, отслеживаемую и удобную для развития интеграцию. Следующие привычки стоит внедрить в каждый проект.

  • Выберите подходящий вариант для конференции.tract. Используйте sRFC для синхронного поиска, tRFC для асинхронных обновлений (не более одного раза) и qRFC, когда важен порядок.
  • Для каждой целевой системы используется один и тот же пункт назначения. Вместо того чтобы распределять имена хостов по множеству мест назначения, это упрощает ротацию учетных данных. tracтаблице.
  • Никогда не прописывайте учетные данные вручную. В ABAP используйте доверенные системные соединения или защищенные билеты входа в систему, где это возможно.
  • Регулярно контролируйте уровни SM58 и SMQ2. Зависшие записи tRFC незаметно задерживают бизнес-процессы до тех пор, пока они не будут обработаны повторно.
  • Передавайте только параметры ссылочного типа. Значения параметров приводят к сбоям в работе функциональных модулей с удаленным доступом.
  • Используйте STRUST для управления TLS-сертификатами. Для HTTPS-адресов — просроченные сертификаты являются одной из главных причин загадочных ошибок COMMUNICATION_FAILURE.

Часто задаваемые вопросы (FAQ)

RFC — это низкоуровневый протокол, позволяющий вызывать любые функциональные модули с возможностью удалённого доступа. BAPI — это специфический... SAP— Сертифицированный функциональный модуль, предоставляющий стабильный метод бизнес-объекта — каждая BAPI доступна через RFC, но не каждый вызов RFC обращается к BAPI.

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

В транзакции SM58 отображаются неудачные или ожидающие обработки транзакционные RFC-записи. Каждая строка содержит идентификатор транзакции, вызываемый функциональный модуль, целевое назначение, текст ошибки и время последней попытки повторной обработки.

Нет. По умолчанию трафик RFC не зашифрован. Для шифрования трафика необходимо настроить SNC (Secure Network Communications) или TLS/HTTPS. SNC — это стандартный механизм для производственных сред.

tRFC гарантирует, что вызов будет выполнен ровно один раз, но не сохраняет порядок между вызовами. qRFC основан на tRFC и дополнительно сериализует вызовы через входящие или исходящие очереди, поэтому вызовы выполняются в точно той последовательности, которая определена приложением.

Да. Внешние программы могут регистрироваться в системе. SAP шлюз с использованием RFC SDK (JCo для Java(например, NCo для .NET или C SDK). SAP затем вызывает их через целевой объект типа T, как и любой функциональный модуль ABAP.

Искусственный интеллект-ассистенты генерируют заглушки RFC для ABAP на основе спецификаций, написанных на естественном языке, предлагают подходящий тип назначения для конкретного сценария и переводят текст ошибки SM58 в конкретный список исправлений, ускоряя повседневную работу по интеграции для команд Basis и ABAP.

Да. Если передать ИИ-помощнику дамп ST22 или ошибку SM58, он сопоставит шаблоны COMMUNICATION_FAILURE / SYSTEM_FAILURE с наиболее вероятными первопричинами — просроченный сертификат, неработающий шлюз, отсутствие авторизации — и предложит соответствующий код транзакции для проверки.

Подведем итог этой публикации следующим образом: