Работая с каталогом курсов, и, в последующем, с регистрацией участий на типы курсов, вы сталкиваетесь с ошибкой You have no authorization to prebook the participant. Каким образом ее можно избежать?

Немного предыстории

Работая с функциональностью SAP LSO, вы, скорее всего, будете использовать структурные профили полномочий

См. Definition of Structural Authorizations

Например, для того, чтобы разграничить доступ к группам курсов для разных пользователей. Самый простой структурный профиль (без ограничений по группам курсов) может выглядеть следующим образом

Рисунок 1.

Ведение структурных профилей выполняется посредством транзакции OOSP

Присвоение структурных профилей пользователям выполняется посредством транзакции OOSB

"Прочитать" содержимое данного профиля можно следующим образом: вы предоставляете пользователям доступ на ведение объектов типа L - «Course Group», D - «Course Type», E - «Course» в рамках всего каталога курсов. Обратите внимание на наличие пути анализа L-D-E для объекта L - "Course Group". Пользователю будет доступна структура объектов каталога, согласно соединениям между объектами, присвоенных этому пути анализа.

Рисунок 2.

Также стоит отметить, что профиль, в котором отсутствует ограничение по корневому идентификатору объекта, может и не содержать путь анализа. Структура всего каталога будет по-прежнему доступна пользователю.

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

Рисунок 3.

Пробуете запустить транзакции LSO_PVCT, LSO_PSV1, LSO_PSV2. Реакция системы приведена на следующем видеофрагменте

Пользователь не видит ничего кроме корневого объекта, и то, только в транзакции LSO_PVCT. Вносим корректировки в структурный профиль, добавляя путь анализа L-D-E для корневого объекта

Рисунок 4.

Повторяем тест

[video width="960" height="634" mp4="/content/images/2017/06/str_auth_lso_6..mp4"][/video]

Продолжение истории. Работа с предварительной регистрацией

Плавно подходим к теме данной заметки. С видимостью объектов разобрались. Теперь нам необходимо сделать предварительную регистрацию на какой-нибудь тип курса с тем же профилем, что представлен на рисунке выше. Пробуем

Система формирует сообщение 

«Да у тебя в профиле отсутствует объект P - Person», - справедливо заметит опытный читатель, и будет совершенно прав. Стоит признаться, что, когда я столкнулся с такой же ситуацией, я рассуждал приблизительно в таком же ключе: отсутствует объект P - Person, значит его нужно добавить в профиль. Выполняю эту операцию

[Рисунок 5.

Повторяю тестирование

И получаю сообщение об ошибке You have no authorization to prebook the participant. Опять же, опытный читатель уже догадался в чем дело. К своему стыду, когда сам столкнулся с такой ошибкой, я начал выполнять трассировку пользовательских полномочий, и искать, что же не хватает в полномочиях, которые я определил в пользовательской роли

См. заметку Трассировка пользовательских полномочий

И, конечно же, дело было не в полномочиях, а в чек-боксе Maintain, который я не активировал для объекта P в структурном профиле

Рисунок 6.

Рассуждения мои, относительно совершенного проступка поступка были приблизительно такими: "ведь пользователю не нужно выполнять ведение объектов P, поэтому галку на ведение не нужно активировать". Оказалось, что я был не прав, и после активации этой опции, предварительная регистрация была успешно выполнена

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