Адаптер вызова внешней функции (Remote Function Adapter) – обеспечивает возможности связи с другими приложениями и системами. Его можно включать в вычисления и процессы.
Доступны следующие типы адаптеров вызова внешней функции:
- Кредиторская/Дебиторская задолженность. Проводка по Главной книге. Несколько позиций проводки GL . Комбинации функций GL и AP/AR. Функции PaPM используют возможности BAPI_ACC_DOCUMENT_POST.
- HANA R-скрипт и Хранимая процедура HANA.
- Вызов внешней функции.
- Репликация основных данных CO. Репликация основных данных Info-Object.
- SD-заказы (заказы, запросы, предложения). MM-заказы.
- Получение позиции финансовой отчетности (Баланс, ОПУ).
- Перенос затрат KB11N и перерасчет затрат KB15N (BAPI_ACC_PRIMARY_COSTS_POST, BAPI_ACC_MANUAL_ALLOC_POST).
Вкладка Ввод (Input)
Во-первых, все функции: обработки, записи, адаптера, запроса имеют входные данные. Вход соединяет функцию с предыдущей функцией. Можно настроить параметры для ограничения данных, передаваемых из функции ввода. Можно настроить мэппинг для адаптации данных к требуемой сигнатуре функции. Это также помогает, если правила функций основаны на шаблоне и разные данные с разными полями необходимо обрабатывать на основе общих правил.
Во-вторых, в отличие от данных из поиска, данные из функции ввода являются основой для управления бизнес-событиями и ошибками, включая возможности частичного перезапуска.
Например, создана функция модели таблицы в Среде моделирования PaPM, в которую введены тестовые данные:
Вкладка Правила (Rules)
Формат правила Табличная форма:
Компоненты определяются структурой используемого BAPI.
Столбцы:
Компонент – соответствующий составной элемент относящийся к конкретному Типу адаптера дистанционной функций.
Имя – описание компонента.
Тип декларации:
- Ввод: Введенное поле или значение, которое отправляется соответствующему компоненту в целевой системе. Целевая система определяется в RFC-адресе назначения. Если RFC-адрес назначения не определен, входные данные будут проведены или обновлены в исходной системе.
- Вывод: Указанное здесь поле получает соответствующее значение компонента от целевой системы и включается в результат выполнения. Целевая система определяется в RFC-адресе назначения.
Обязательное:
- Зеленый: обязательное поле, для этого компонента уже есть запись.
- Оранжевый: обязательное поле, запись для этого компонента не была сделана.
- Серый: необязательное поле, запись для этого компонента не требуется.
Поле – поля, которые можно использовать с этой функцией (основаны на функции ввода).
Описание – описание поля.
тр. /NXI/P1_MF позволяем проверить, какие поля были определены для каждого типа функции:
Выберите Типы правил -> конкретный тип правила, например, FI-GL -> Мэппинг адаптера удаленной функции. Можно просмотреть или изменить настройки для компонентов.
Формат правила Шаблон и Инструкция:
Доступно для следующих типов дистанционных функций: Хранимая процедура HANA и Внешняя функция:
Во-первых, Шаблон – используется в качестве руководящего шаблона для создания процедуры. Процедура вызывается в адаптере дистанционных функций типа Хранимая процедура HANA или Внешняя функция. То есть это основа для самостоятельного создания в HANA Studio хранимой процедуры.
Во-вторых, Инструкция – система отображает ожидаемый интерфейс при условии, что вы определили процедуру в заголовке функции. То есть отображается содержимое созданной вами хранимой процедуры, которая будет вызываться в PaPM.
Доступно для типа удаленной функции: HANA R-скрипт:
Во-первых, Шаблон – используется в качестве руководящего шаблона для создания сценариев. Сценарии выполняются адаптером дистанционных функций типа HANA R-скрипт.
Во-вторых, Инструкция – можно ввести сценарий непосредственно в пользовательском интерфейсе адаптера дистанционных функций.
Определение RFC-адреса назначения
ABAP-соединения:
RFC-адрес назначения может определятся как на уровне Среды, так и на уровне функции. Для функций типа FI-AP, FI-AR, FI-GL, FI-GLI существует два способа добавления RFC-адреса назначения. Тип ABAP-соединения, тр. SM59:
Во-первых, уровень Среды PaPM:
Во-вторых, функциональный уровень (поле CONTROL-RFCDEST на вкладке Правила):
RFC-адрес назначения на уровне функции имеет более высокий приоритет.
HTTP-соединения с ABAP-системой:
RFC-адрес назначения типа HTTP-соединения с ABAP-системой используется если необходимо вызвать службы SAP OData. Например, для адаптера удаленных функций типа Позиции финансовой отчетности.
Адаптер вызова внешней функции (Remote Function Adapter) – пример проводки в FI (тип Finance General Ledger)
Например, запустим функцию со следующими данными:
В результате получим следующую проводку в FI:
Адаптер вызова внешней функции (Remote Function Adapter) – пример функции типа HANA Stored Procedure
Например, при создании функции в PaPM, укажем функцию ввода на вкладке Ввод:
Соответственно, система сформирует шаблон хранимой процедуры, посмотреть на него можно на вкладке Правила в фрейме Шаблон:
После этого создадим хранимую процедуру в схеме БД:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
CREATE PROCEDURE "SAPHANADB"."ZPACK_NXI::Z_CHECK_POST_FI" ( IN it_al "SAPHANADB"."/NXI/TP1AL", IN it_input TABLE(USNAM NVARCHAR(12), RBUKRS NVARCHAR(4), BUDAT NVARCHAR(8), BLDAT NVARCHAR(8), RCNTR NVARCHAR(10), RACCT_S NVARCHAR(10), RACCT_H NVARCHAR(10), HSL_S DECIMAL, HSL_H DECIMAL, RHCUR NVARCHAR(5), BELNR NVARCHAR(10), GJAHR NVARCHAR(4) ) , OUT ot_result TABLE(USNAM NVARCHAR(12), RBUKRS NVARCHAR(4), BUDAT NVARCHAR(8), BLDAT NVARCHAR(8), RCNTR NVARCHAR(10), RACCT_S NVARCHAR(10), RACCT_H NVARCHAR(10), HSL_S DECIMAL, HSL_H DECIMAL, RHCUR NVARCHAR(5), BELNR NVARCHAR(10), GJAHR NVARCHAR(4), FS_PER_MSG_TEXT_ NVARCHAR(5000), FS_PER_FORMULA_ NVARCHAR(5000) ) , OUT ot_msg TABLE( MSGTY NVARCHAR(1), MSG_TEXT NVARCHAR(5000) ) ) LANGUAGE SQLSCRIPT SQL SECURITY DEFINER AS BEGIN ot_result = select a.USNAM AS USNAM, a.RBUKRS AS RBUKRS, a.BUDAT AS BUDAT, a.BLDAT AS BLDAT, a.RCNTR AS RCNTR, a.RACCT AS RACCT_S, '' AS RACCT_H, a.HSL AS HSL_S, 0.00 AS HSL_H, a.RHCUR AS RHCUR, a.BELNR AS BELNR, a.GJAHR AS GJAHR, '' AS FS_PER_MSG_TEXT_, '' AS FS_PER_FORMULA_ from acdoca as a RIGHT join :it_input as b on a.RBUKRS = b.RBUKRS and a.RCNTR = b.RCNTR and a.RACCT = b.RACCT_S and a.hsl = b.HSL_S; ot_msg = SELECT 'I' as MSGTY, 'Найден документ №' || map(belnr, null, '', belnr) as MSG_TEXT from :ot_result; END; |
После указания хранимой процедуры в функции PaPM в фрейме Инструкция отображается код хранимой процедуры.
В данном примере используются данные из входной таблицы. Эту таблицу мы использовали для проводок в FI в функции Finance General Ledger. По таблице ACDOCA ищутся записи с такими же параметрами. В результате, полученная таблица используется как выходная таблица и таблица с сообщениями.
Например, при запуске функции:
получаем следующий результат:
В результате есть входные данные, выходные данные и наши сообщения.