Всем привет!
Некоторое время назад мы уже говорили об Инфо-типе 0006 Адреса и дополнительных полях из ИТ 3433 Дополнительные адресные данные (RU).
Сегодня я хочу рассказать вам как программно добавить запись в ИТ 3433.
На написание этого поста меня подтолкнул коллега @Denis Startsev. Денис, если ты это читаешь — привет!
Итак, в чем же особенность записи данных в ИТ 3433 и почему на этом стоит заострять внимание?
Abap-разработчикам, которые пишут программы для модуля HCM должно быть известно, что при выполнении операций CRUD с Инфо-типами принято использовать ФМ-ы. Работа с таблицами инфотипов через Open SQL считается моветоном. Во многом это обусловлено тем, что в ФМ-ах реализованы всевозможные проверки (консистентность, полномочия).
Для добавления записей в Инфо-типы часто используется ФМ ‘HR_INFOTYPE_OPERATION’.
Здесь мы подходим к нашему первоначальному вопросу. Рассмотрим пример.
Допусти нам необходимо добавить адрес постоянного места жительства сотрудника. В адресе есть поле Номер строения. Мы с вами выяснили, что это поле на самом деле хранится в ИТ 3433 Дополнительные адресные данные (RU). Называется оно P3433-STRUCNUM.

Если используя ФМ ‘HR_INFOTYPE_OPERATION’ попытаться добавить запись в ИТ 3433 как на примере ниже, то ничего не выйдет. Если вы не один из двенадцати моих подписчиков, подозреваю, что именно поэтому вы и читаете этот пост :^)
Для того, чтобы добавить запись правильно, необходимо использовать входные параметры VIEW_IDENTIFIER и SECONDARY_RECORD. Меньше слов, больше дела.
Доработаем наш пример.

Обратите внимание!
Если запись в ИТ 0006 уже существует, а в ИТ 3433 после выполнения этого кода не добавляется, попробуйте сначала запустить отчет RPUPAV00. Для каждой существующей записи ИТ 0006 он добавит пустую запись ИТ 3433. После этого достаточно будет ее изменить.