HR_MAINTAIN_MASTERDATA не сохраняет отдельные записи ИТ при проведении мероприятий

Была поставлена задача – проводить мероприятия в системе при помощи HR_MAINTAIN_MASTERDATA. Мероприятия работали корректно. После проведения все инфо-типы записывались. Однако, при проведении увольнения инфо-типы 0000 и 0001 не сохранялись. Ошибки при этом никакой не возникало, на первый взгляд все отрабатывало штатно. Пробовал менять параметр LUW_MODE, сбрасывал буфер перед вызовом ИТ, запускал в отдельном потоке и прочее. Результата это никакого не дало.
Нашел два выхода из этой проблемы:

1.) По какой-то причине внутри ФМ HR_MAINTAIN_MASTERDATA в обязательном порядке устанавливается параметр PSPAR-PBPFL = ‘X’. Он то и влияет на сохранение этих ИТ. Если его выставить в FALSE, все отработает корректно. Но я решил не трогать его т.к. возможно, он влияет на какую-либо другую логику при сохранении ФМ.  Похожая проблема на sap.com

2). Второй способ мне понравился больше. При проведении мероприятия в BADI HRPAD00INFTY, получаю значения экрана (Исходные не годятся т.к. пользователь мог что-то поменять в диалоговом режиме). И после успешной отработки ФМ HR_MAINTAIN_MASTERDATA , вызываю ФМ HR_INFOTYPE_OPERATION для 0000 и 0001 ИТ-ов.

Пример вызова ФМ HR_MAINTAIN_MASTERDATA. Для тех, кто его не использовал

В таблицу proposed_values можно передавать значения для полей инфо-типов.

UPD.
При проведении мероприятий HR_MAINTAIN_MASTERDATA игнорирует операцию LIS9. Например, при увольнении лимиты 2006 не ограничиваются. За это отвечает флаг ASKEY. Если его почистить, то ФМ будет работать как в pa40.

HR_MAINTAIN_MASTERDATA не сохраняет отдельные записи ИТ при проведении мероприятий: 3 комментария

  1. А 1 пункт предполагается реализовывать через enhancement? Внутри этого фма нашёл всего 3 точки, 2 в начале и 1 в самом конце. Получается, скопировать весь код и вставить в начало, зачистить поле pspar и выход через exit? И ещё заметил проблему, при проведении мероприятий через этот фм при сохранении инфотипов в badi in_update структура pspar приходит с пустыми полями кроме поля  tclas = A…

    1. Да, энхансментом оборачивал, очень некрасиво получалось, но как один из вариантов работало.

  2. Спасибо за статью! Тоже сделал через enhancement и очистил эти 2 поля в структуре pspar. Мероприятие увольнения работает аналогично pa40. До этого пробовал сделать через batch input, но для batch input не работает динамика из t588z. Еще пытался через вызов формы rp_infotype, мероприятие проводилось, но нет возможности заполнять экраны инфотипов нужными значениями, пришлось бы тогда в badi before_output для каждого инфотипа прописывать заполнение полей, это плохой вариант, если много инфотипов в инфонаборе. Получается, доработка данного фма оптимальный вариант, ну или делать модификацию и отключать проверку на динамические мероприятия для пакетного ввода

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *