Как определить дополнительную логику для PA инфо-типа?

Как определить дополнительную логику для PA инфо-типа?

Пояснение к вопросу

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

См. заметку Создание PA инфо-типа

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

Далее я рассмотрю пример определения дополнительной логики для пользовательского инфо-типа с номером 9500 - «Home work center», в котором содержится два поля

Решение вопроса

Для того, чтобы определить дополнительную логику для инфо-типа кадрового администрирования, необходимо воспользоваться BAdI HRPAD00INFTY

Все, что нам необходимо сделать, это:

  1. Выбрать соответствующий инфо-тип, для которого нужно определить дополнительную логику
  2. Придумать эту самую логику
  3. Создать внедрение для 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

Проверка сработала. Если же чекбокс активировать, запись в инфо-типе будет успешно сохранена.