Как определить дополнительную логику для OM инфо-типа?
Пояснение к вопросу
В одной из заметок я рассмотрел вопрос определения дополнительной логики для PA инфо-типа
См. заметку Как определить дополнительную логику для PA инфо-типа?
В этой же заметке я хочу рассмотреть возможность определения дополниельной логики для инфо-типов организационного менеджемента. Это может быть полезным, как и в случае с PA инфо-типами, например, для сокращения процента пользовательских ошибок при ведении мастер данных.
В качестве примера я предлагаю реализовать проверку на заполненность поля Object name инфо-типа 1000 - "Object" для объекта 91.

Решение вопроса
На этот этот раз на помощь приходит BAdI HRBAS00INFTY, доступ к которому можно получить, запустив транзакцию SE18

Создайте новое внедрение для этого BAdI, выбрав в меню Enhancement Implementation -> Create

Введите техническое наименование нового внедрения

Затем присвойте ему текстовое наименование

Для реализации проверки, про которую я написал выше, мне необходимо воспользоваться методом AFTER_INPUT. ABAP код может, приблизительно, следующим
METHOD if_ex_hrbas00infty~after_input.
DATA: lt_1000 TYPE STANDARD TABLE OF p1000.
FIELD-SYMBOLS: <fs_1000> LIKE LINE OF lt_1000 .
IF new_innnn-infty = '1000' AND new_innnn-otype = '91'.
ASSIGN ('(MP100000)P1000') TO <fs_1000>.
IF <fs_1000>-stext IS INITIAL.
MESSAGE e003(zhr). "Please fill in "Object name" field!
ENDIF.
ENDIF.
ENDMETHOD.
Активируйте метод и само внедрение. Для тестирования выполненных изменений можно воспользоваться транзакцией PP01
Если стандартный вид сообщения об ошибке не устраивает, можно воспользоваться немного другой конструкцией. Точнее - всплывающим окном с такой же ошибкой. Для этого придется немного изменить код вывода сообщения об ошибке
METHOD if_ex_hrbas00infty~after_input.
DATA: lt_1000 TYPE STANDARD TABLE OF p1000.
FIELD-SYMBOLS: <fs_1000> LIKE LINE OF lt_1000 .
IF new_innnn-infty = '1000' AND new_innnn-otype = '91'.
ASSIGN ('(MP100000)P1000') TO <fs_1000>.
IF <fs_1000>-stext IS INITIAL.
MESSAGE 'Please fill in "Object name" field!' TYPE 'A'. "Please fill in "Object name" field!
ENDIF.
ENDIF.
ENDMETHOD.
Проверяем