Как определить дополнительную логику для PA инфо-типа?
Как определить дополнительную логику для PA инфо-типа?
Пояснение к вопросу
Для нужд автоматизации какого-либо бизнес-процесса в системе вашего заказчика/клиента используется n-ое количество пользовательских инфо-типов. Напомню, что пользовательский инфо-тип — это инфо-тип, отсутствующий в стандартной системе SAP. Номер такого инфо-типа начинается с цифры «9». Неважно, говорим ли мы про инфо-типы кадрового администрирования, организационного менеджмента, или же подбора персонала.
См. заметку Создание PA инфо-типа
Довольно часто используется практика "навешивания" дополнительной логики на пользовательские инфо-типы. Для чего это может быть необходимо? К примеру, данные, которые хранятся в этих инфо-типах, могут использоваться для какой-либо отчетности, сдаваемой в государственные контролирующие органы. Чтобы минимизировать процент некорректно внесенных данных в эти инфо-типы, можно воспользоваться стандартными средствами системы, которые позволяют создавать дополнительные проверки.
Далее я рассмотрю пример определения дополнительной логики для пользовательского инфо-типа с номером 9500 - «Home work center», в котором содержится два поля
Решение вопроса
Для того, чтобы определить дополнительную логику для инфо-типа кадрового администрирования, необходимо воспользоваться BAdI HRPAD00INFTY
Все, что нам необходимо сделать, это:
- Выбрать соответствующий инфо-тип, для которого нужно определить дополнительную логику
- Придумать эту самую логику
- Создать внедрение для BAdI HRPAD00INFTY и написать соответствующий код
В рамках данной заметки я буду работать с инфо-типом 9500. Дополнительная логика будет заключаться в проверке, активирован ли чекбокс Full time
Если он не активирован пользователем, необходимо вывести сообщение об ошибке вида
Классы сообщений и включенные в них сообщения ведутся посредством транзции SE91
Создайте новое внедрение для BAdI, используя транзакцию SE18, выбрав в меню Enhancement Implementation -> Create
Введите наименование нового внедрения
Активируйте созданное внедрение
Затем выберите метод, в котором будут созданы ваши проверки. Более подробно прочитать про назначение каждого из методов BAdI можно непосредственно из транзакции SE18, нажав на кнопку
Я буду использовать метод AFTER_INPUT. Ниже приведен пример кода, с помощью которого выполянется провека, активировано ли поле инфо-типа, с последующим выводом сообщения об ошибке
method IF_EX_HRPAD00INFTY~AFTER_INPUT.
IF new_innnn-infty = '9500'.
if ( ipsyst-ioper+0(3) eq 'INS' ) or ( ipsyst-ioper+0(3) eq 'MOD' ) or ( ipsyst-ioper+0(3) eq 'COP' ).
if NEW_INNNN-DATA1 is initial.
MESSAGE E000(ZHR).
* Please select "Full time" check box
endif.
endif.
endif.
endmethod.
Активируйте измененный метод.
Для тестирования можно воспользоваться транзакцией PA30, создав запись инфо-типа 9500 и, не заполняя поле Full time, нажать на клавишу ENTER
Проверка сработала. Если же чекбокс активировать, запись в инфо-типе будет успешно сохранена.