Как создать вариант для транзакции с помощью SHD0?

Пояснение к вопросу

В одной из своих заметок я описал последовательность действий, которую необходимо выполнить, чтобы скрыть поле в транзакции. Механизм, посредством которого можно выполнить данную операцию, хорошо знаком многим консультантам. Напоминаю, что наименование этого механизма - транзакция SHD0.

См. заметку SHD0 в помощь, или как быстро скрыть поле в транзакции

В этой заметке я хочу рассмотреть последовательность действий, которую необходимо выполнить для реализации требования:

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

Из исходных данных: транзакция, с которой работают пользователи - PA30. Инфо-тип в данном случае не имеет значения. Конкретно в своем примере, я буду использовать инфо-тип кадрового администрирования.

В качестве примера хорошо подойдет инфо-тип 0002 - "Personal Data"

Рисунок 1.

Задачу по так называемому разграничению полномочий сформулируем следующим образом:

  • Поле Mar.Status инфо-типа 0002 "Personal Data" необходимо сделать недоступным для редактирования (то есть только на чтение);
  • Поле Valid From Date of Current Marital Status инфо-типа 0002 "Personal Data" необходимо скрыть.

Рисунок 2.

Решение вопроса

Для решения поставленной выше задачи необходимо выполнить несколько последовательных действий, речь о которых пойдет ниже. Вкратце:

  1. Создать отдельную транзакцию для группы пользователей, которым необходимо изменить уровень доступа к полям инфо-типа;
  2. Создать вариант экрана, в котором выполнить настройку видимости полей, с последующим присвоением варианта экрана созданному варианту транзакции (получилось слишком кучеряво, но по факту ничего сложного).
  3. Создать вариант для этой транзакции, присвоив ему вариант экрана, в котором настроена соответствующая видимость полей;
  4. Создать пользовательскую роль, в которую включить транзакцию, и присвоить ее пользователям;
  5. Выполнить тестирование.

1. Создание новой транзакции

Так как в качестве основной транзакции выступает PA30, возьмем ее за основу, скопировав в новую. Выполнить это можно через транзакцию SE93

В таблице T588A скопируем существующую запись с кодом транзакции PA30 для новой, и попробуем запустить новую транзакцию еще раз

Транзакция успешно запускается. Переходим к следующему пункту.

2. Создание варианта для новой транзакции

Создаем вариант для новой транзакции, в котором определяем уровень доступа к полям инфо-типа. Напомню, мне необходимо изменить уровень доступа полей "Mar.Status" и "Valid From Date of Current Marital Status». Выполнять эти действия необходимо в транзакции SHD0.

В поле Transaction Code укажите наименование новой транзакции (см. пункт #1. Создание новой транзакции)

Рисунок 3.

2.1 Создание варианта для экрана

На закладке "Screen Variants" необходимо создать вариант экрана, используемый для инфо-типа 0002. В этом варианте следует применить нужные правила отображения для полей. Все что нужно знать - это соответствующий пул модулей и номер экрана (для этого, на экране редактирования инфо-типа выберите в меню System -> Status)

Рисунок 4.

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

Вариант экрана создан. Никаких изменений пока не наблюдается.

2.2 Присвоение варианта экрана варианту транзакции

Выполните присвоение созданного варианта экрана варианту транзакции, после чего выполните активацию созданного варианта транзакции

2.3 Тестирование

Сценарий тестирования очень прост:

  • Запустите транзакцию PA30, выберите табельный номер, откройте на редактирование инфо-тип 0002 и проверьте, что вышеуказанные поля отображаются без изменений

  • Запустите транзакцию ZPA30, и выполните точно такую же последовательность действий

Разница очевидна, а значит и поставленная задача успешно выполнена.