Как скрыть неиспользуемые подтипы инфо-типа?
Как долго вы работаете с транзакциями PA20/PA30 в течение рабочего дня? А как долго вы работаете с подтипами инфо-типов в этих же транзакциях? Если предполагается честный ответ, и оказывается, что работаете часто, то вы, безусловно, матерый консультант (хотя какая связь?) И, скорее всего, имеете представление о том, как можно быстро выбирать подтипы инфо-типа, не тратя большого количества времени на это. Ну или того проще, вы помните номера нужных вам подтипов наизусть.
Адресуем этот же вопрос бизнес-пользователям. Ответы на него могут быть разными. Но скорее всего, какая-то группа пользователей будет явно недовольна этим огромным количеством записей в раскрывающемся списке, с которым, "ну совсем неудобно работать". Если такие рассуждения присутствуют у таргет груп, готовьтесь к тому, что вас скоро попросят сократить список подтипов для какого-нибудь инфо-типа, потому что «надоело выбирать нужный, а запомнить их не получается». Итак, как скрыть неиспользуемые подтипы инфо-типа?
Пример того, что может раздражать бизнес-пользователей
Откройте транзакцию PA20/PA30, и выберите, скажем, инфо-тип 0057 с последующим открытием его подтипов
Задача
Допускаем, что есть группа пользователей, которой очень не хочется видеть все подтипы этого инфо-типа, и самый инициативный пользователь настаивает на том, чтобы вы исправили эту ситуацию, оставив в качестве доступных для выбора только три подтипа. Остальных пользователей количество подтипов не смущает.
Решаем задачу
Для начала определимся с группой пользователей. А точнее c тем, как их выделить. Сделать это можно, к примеру, используя SPA/GPA параметры.
См. заметку SPA/GPA параметры в ABAP
Для демонстрации в заметке я создам SPA параметр ZIT0057. Новый параметр необходимо создать в транзакции SE80
Присвойте этот параметр пользователям в транзакции SU3
Стоит отметить, что предложенный в заметке вариант выделения групп пользователей, скажем, не самый удачный. Более красивое и правильное решение для отображения нужного количества подтипов - это считывание информации по значениям полномочий в объектах P_ORGIN или P_ORGXX (если последний используется в ваших процессах)
Создайте внедрение для BAdI HR_F4_GET_SUBTYPE в транзакции SE18
В качестве фильтра для нового внедрения следует указать инфо-тип, для которого выполняются все описанные здесь процедуры.
N.B. Обратите внимание на то, что для BAdI HR_F4_GET_SUBTYPE может существовать только 1 внедрение для 1 инфо-типа. В случае возникновения каких-то проблем с активацией, проверьте, не существует ли уже внедрение для этого же инфо-типа.
Ну а дальше все просто. В моем простеньком примере допускаю наличие вот такого вот кода:
Пример кода можно посмотреть в уже реализованных стандартных реализациях этого BAdI.
Тестируем
Описание кейсов
- Открытие подтипов инфо-типа 0057 под пользователем в основной записи которого присвоен параметр ZIT0057 со значением «X»;
- Изменение значением параметра ZIT0057, и повторное открытие подтипов инфо-типа 0057 под этим же пользователем;
- Полное удаление параметра ZIT0057 из основной записи пользователя, и открытие подтипов инфо-типа 0057;
Вот такие профитроли.