Как скрыть неиспользуемые подтипы инфо-типа?

Как долго вы работаете с транзакциями PA20/PA30 в течение рабочего дня? А как долго вы работаете с подтипами инфо-типов в этих же транзакциях? Если предполагается честный ответ, и оказывается, что работаете часто, то вы, безусловно, матерый консультант (хотя какая связь?) И, скорее всего, имеете представление о том, как можно быстро выбирать подтипы инфо-типа, не тратя большого количества времени на это. Ну или того проще, вы помните номера нужных вам подтипов наизусть.

Адресуем этот же вопрос бизнес-пользователям. Ответы на него могут быть разными. Но скорее всего, какая-то группа пользователей будет явно недовольна этим огромным количеством записей в раскрывающемся списке, с которым, "ну совсем неудобно работать". Если такие рассуждения присутствуют у таргет груп, готовьтесь к тому, что вас скоро попросят сократить список подтипов для какого-нибудь инфо-типа, потому что «надоело выбирать нужный, а запомнить их не получается». Итак, как скрыть неиспользуемые подтипы инфо-типа?

Пример того, что может раздражать бизнес-пользователей

Откройте транзакцию PA20/PA30, и выберите, скажем, инфо-тип 0057 с последующим открытием его подтипов

Задача

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

Решаем задачу

Для начала определимся с группой пользователей. А точнее c тем, как их выделить. Сделать это можно, к примеру, используя SPA/GPA параметры.

См. заметку SPA/GPA параметры в ABAP

Для демонстрации в заметке я создам SPA параметр ZIT0057. Новый параметр необходимо создать в транзакции SE80

Рисунок 1.

Присвойте этот параметр пользователям в транзакции SU3

Рисунок 2.

Стоит отметить, что предложенный в заметке вариант выделения групп пользователей, скажем, не самый удачный. Более красивое и правильное решение для отображения нужного количества подтипов - это считывание информации по значениям полномочий в объектах P_ORGIN или P_ORGXX (если последний используется в ваших процессах)

Создайте внедрение для BAdI HR_F4_GET_SUBTYPE в транзакции SE18

Рисунок 3.

В качестве фильтра для нового внедрения следует указать инфо-тип, для которого выполняются все описанные здесь процедуры.

Рисунок 4.

N.B. Обратите внимание на то, что для BAdI HR_F4_GET_SUBTYPE может существовать только 1 внедрение для 1 инфо-типа. В случае возникновения каких-то проблем с активацией, проверьте, не существует ли уже внедрение для этого же инфо-типа.

Ну а дальше все просто. В моем простеньком примере допускаю наличие вот такого вот кода:

Пример кода можно посмотреть в уже реализованных стандартных реализациях этого BAdI.

Тестируем

Описание кейсов

  • Открытие подтипов инфо-типа 0057 под пользователем в основной записи которого присвоен параметр ZIT0057 со значением «;
  • Изменение значением параметра ZIT0057, и повторное открытие подтипов инфо-типа 0057 под этим же пользователем;
  • Полное удаление параметра ZIT0057 из основной записи пользователя, и открытие подтипов инфо-типа 0057;

Вот такие профитроли.