Транзакция sap ошибки полномочий

В системе действует принцип «что не разрешено, то запрещено». То есть изначально пользователю не разрешено ничего, кроме входа (логина) в систему.

Минимальный набор операций для того или иного бизнес-процесса выделяется в роль, которая имеет описание и меню, в котором могут быть транзакции, отчеты или внешние ссылки. Для каждой роли генерируется профиль полномочий, который содержит набор полномочий (или  разрешений) минимально достаточных для выполнения набора операций, для которого созадана роль (рис. 1). Про генерацию профиля я писал в этом посте.

Рис. 1. Роли и полномочия в SAP системе. 

Роли присваиваются пользователям, после чего пользователи получают, указанный в них, набор полномочий.

Присвоенный пользователю набор полномочий в SAP системе можно посмотреть в транзакции SU56 (рис. 2).

Рис. 2. Список присвоенных пользователю полномочий.

Проверка полномочий в SAP системе производится в 2 этапа:

  1. Проверка на запуск транзакции.
  2. Проверка на полномочия для тех или иных действий с объектом (просмотр, создание, удаление, изменение и т.п.) в транзакции.

Покажу на примере. 

Пользователь пытается запустить транзакцию SM04 и получает уведомление об отсутствии полномочий на запуск транзакции (рис. 3).

Рис. 3. Сообщение об отсутствии полномочий на запуск транзакции SM04.

Для анализа недостающих полномочий необходимо в поле запуска транзакции набрать транзакцию SU53 (рис. 4).

Рис. 4. Анализ недостастающих полномочий в транзакции SU53.

Как видно из снимка экрана, сообщение об ошибке это результат неудачной проверки первого типа — на запуск транзакции, в данном случае SM04. 

Стоит отметить, что все полномочия в SAP системе выделются через объекты полномочий, у которых есть поля и присвоенные им значения. Для удобства поиска и выбора все объекты полномочий объединены в классы. 

За полномочия на запуск транзакции (первый этап проверки) отвечает объект полномочий S_TCODE (рис. 4). Значениями поля TCD являются транзакции, которые пользователь может запускать. В данном случае система искала в этом объекте значение SM04, не нашла и выдала сообщение об ошибке.

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

Рис. 5. Сообщение об отсутствии полномочий на администрирование процессов/программ в SM04.

Анализ полномочий, транзакция SU53, показал отсутствие уже совсем другого объекта полномочий (рис. 6). Кстати, если проверять полномочия из запущенной транзакции, то стоит вбивать «/nSU53«. Об этом я писал тут.

Рис. 6. Анализ полномочий на работу в транзакции SM04.

Данный инструмент показывает только те полномочия, на проверке которых система «споткнулась». То есть только один, последний, шаг. 

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

Учтите, что если вы хотите анализировать у пользователей результаты последней проверки полномочий, то необходимо им добавить полномочия на запуск транзакции SU53 — объект S_TCODE. Либо можно использовать параметр auth/tcodes_not_checked (рис. 7). Можно ввести значения «SU53», «SU56» или сразу обе транзакции «SU53 SU56» и, тогда система не будет проводить первый тип проверки для этих транзакций.

Рис. 7. Параметр для отключения проверок для транзакций SU53, SU56.

Подробности о концепции ролей и полномочий можно найти в курсе «SAP ADM940 — ABAP AS Autorization Concept».


Security


14 июня, 201524 июня, 2015

1 Minute

Системы SAP имеют интересную реализацию предоставления полномочий. Подробнее о Концепции авторизации SAP (SAP Authorization concept) я напишу в следующих постах. Сегодня же я хочу поговорить о тех ошибках, которые иногда совершают консультанты при работе с ролями и полномочиями в SAP NW AS ABAP.

1. Полномочия на доступ к транзакции. Нам требуется найти роль в которой содержатся полномочий к определенной транзакции или транзакциям. Для поиска таких ролей чаще всего пользуются транзакцией SUIM.
suim В данном случае ошибка состоит в том, что консультанты чаще всего пользуются вполне логичным и напрашивающимся отчетом «Роли — по присвоению транзакции». Однако он не дает полной картины ролей с полномочиями на запуск определенной транзакции. В данном случае в списке отобразятся только те роли транзакции в которых были присвоены через вкладку «Меню». Проиллюстрирую на небольшом примере. Я создал роль Z_TEST_ROLE1 и добавил на вкладке «Меню» транзакцию MIGO — Движение материалов. pfcg1 При добавлении транзакции через «Меню» все необходимы для работы с ней объекты полномочий автоматически добавляются в роль. Затем я скопировал эту роль в новую Z_TEST_ROLE2 после чего в первую роль я добавил новую транзакцию SE16n через Меню, а во вторую вручную через добавление объекта полномочий «S_TCODE — Проверка на код транзакции при запуске» со значением поля TCD — SE16n. Вот так выглядят объекты полномочий в ролях после добавления транзакции SE16n

pfcg2

Значения полномочий в роли Z_TEST_ROLE1
pfcg3
Значения полномочий в роли Z_TEST_ROLE2

Как мы можем убедимся в список отчета «Роли — по присвоению транзакции» при поиске ролей в которых есть транзакция MIGO попадут обе мои тестовые роли, а при поиске прав на SE16 только первая в которую мы добавили полномочия через меню. suim1 suim2

Правильно будет воспользоваться другим отчетом «Роли — по значения полномочий» с указанием искомых транзакций в качестве значений поля TCD объекта полномочий S_TCODE

suim3suim4

2. Генерация профилей. Допустим необходимо добавить сотруднику некоторые полномочия. Мы находим нужную роль и присваиваем ее соответствующему пользователю, но его полномочия в системе не изменяются. Ошибка, в данном случае в том, что мы, присвоив пользователю роль не проверили ее профиль полномочий. Это может выглядеть, например, вот так:

pfcg4

Профиль полномочий — это совокупность всех объектов полномочий чаще всего привязанная к роли. Он состоит из тех объектов полномочий и их значений которые мы добавили в роль. Первоначально в роли отсутствует профиль полномочий, его нужно генерировать. Это касается как новых Z* так и стандартных ролей SAP. Каждое изменение в значениях полномочий в роли требует перегенерации ее профиля.

Генерация профиля производится через транзакцию PFCG (Role Maintenance and the Profile Generator ) на вкладке «Полномочия»

pfcg5

После того как профиль сгенерирован можно присваивать роль пользователю.

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

Подробнее на тему профилей и полномочий в SAP можно почитать на help.sap.com либо в wiki на SDN, например, вот тут.

Опубликовано
14 июня, 201524 июня, 2015

В статье рассмотрены инструменты решения проблем, возникающих из-за неполноты прав пользователя при выполнении транзакции. В статье описано использование в качестве таких инструментов транзакция SU53 и процедура трассировки полномочий пользователя. С помощью трассировки полномочий удаётся определить недостающие права пользователя для выполнения транзакций и отследить, какие объекты полномочий проверяются при выполнении пользователем той или иной операции в системе.

В статье рассмотрены инструменты решения проблем, возникающих из-за неполноты прав пользователя при выполнении транзакции. В статье описано использование в качестве таких инструментов транзакция SU53 и процедура трассировки полномочий пользователя. С помощью трассировки полномочий удаётся определить недостающие права пользователя для выполнения транзакций и отследить, какие объекты полномочий проверяются при выполнении пользователем той или иной операции в системе.

Использование транзакции SU53

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

Для демонстрационных примеров я создам двух пользователей в системе:

  • SAP_ADMIN– спрофилемSAP_ALL;
  • SAP_USER –  с ролью ZZSAP_LO_EMPLOYEE, которая является копией стандартной роли SAP_LO_EMPLOYEEи дополнительно с правами на запуск транзакцийSU53 и ME2L.

В своих примерах я буду использовать функциональность GuiXT, где в файле rsession.txtсодержится скрипт, выводящий имя пользователя в заголовок окна SAP (Примечание. Вход в систему осуществляется на русском языке):

TitlePrefix»*** User: &V[_user]***»

Благодаря этому скрипту, несмотря на то, что будет запущено несколько окон SAPот имени разных пользователей, легко будет определить, окно какого пользователя активно в данный момент (без обращения к информационному табло системы в правом нижнем углу экрана). Более того, будет удобнее использовать сочетание клавиш Alt+Tab, так как в строке заголовка окна выводится имя пользователя – «владельца экрана», к окну которого планируется перейти (Рис.1).

Рис.1 Использование файла rsession.txt надстройки GuiXTдля обозначения пользователя – «владельца экрана»

Рассмотрим Пример 1.

В примере демонстрируется возможность определения объекта неполноты полномочий с помощью транзакции SU53 в случае, когда система при выполнении какой-либо транзакции сообщает об отсутствии или неполноте полномочий (без указания объектов неполноты).

Исходное состояние полномочий пользователя SAP_USER приведено в Таблице 1.

Таблица 1. Исходное Состояние полномочий пользователя SAP_USER

   

Имеющиеся полномочия

1)      Объекты полномочий стандартной роли SAP_LO_EMPLOYEE

2)      запуск транзакции SU53
 

3)      запуск транзакции ME2L

Неполнота полномочий

Нет полномочий на просмотр всех видов заказов на поставку по всем закупочным организациям и группам закупок;
нет полномочий на GUI-операции (нет прав на объект S_GUI).

Запустим транзакцию ME2от имени пользователя SAP_USER (Рис.2) (как указано выше, у пользователя есть права только на запуск этой транзакции)

Рис.2 Запуск транзакции ME2Lот имени пользователя SAP_USER

Система выдаст следующее сообщение «У вас нет полномочий на транзакцию ME2L» (Рис.3).

Рис.3 Сообщение об отсутствующих полномочиях на транзакцию ME2L

В подобных случаях следует использовать транзакцию SU53, которая показывает, для какого именно объекта у пользователя отсутствуют полномочия. Для запуска используем команду /nSU53 (Рис.4), тем самым мы закрываем текущее окно и переходим к просмотру данных полномочий пользователя.

Рис.4 Запуск /nSU53 для получения анализа последней проверки полномочий системой

Мы увидим, что ошибка вызвана отсутствием полномочий на объект M_BEST_EKO (закупочная организация в заказе на поставку), а если быть точнее, то отсутствуют права на операцию 03 (просмотр) для объекта полномочий M_BEST_EKO (Рис.5).

Рис.5 Отсутствуют права на объект полномочий M_BEST_EKO

Для обеспечения пользователя необходимым объёмом полномочий можно или отредактировать имеющуюся у пользователя роль, или добавить пользователю дополнительную роль, обладающую соответствующим объёмом  прав. Решение принимает по ситуации консультант направления совместно с консультантом по базису. Технология добавления и исправления полномочий и ролей – отдельная тема.

Добавим пользователю SAP_USER недостающие права для работы с объектом M_BEST_EKO: укажем в его роли объект полномочий M_BEST_EKOна операцию 03 (просмотр)со значением 1000. Таким образом, после выполненного редактирования роли пользователь сможет просматривать заказы на поставку с закупочной организацией 1000, но не сможет просматривать заказы на поставку с любыми другими закупочными организациями.

Рассмотрим Пример 2.

 Покажем, что добавление отсутствующих полномочий согласно информации транзакции SU53 (см. Пример 1) не гарантирует пользователю возможность успешного выполнения  транзакции (в данном примере –  ME2L) после добавления полномочий.

Текущее состояние полномочий пользователя SAP_USER приведено в Таблице 2.

Таблица 2. Текущее состояние полномочий пользователя SAP_USER.

     

Имеющиеся полномочия

1)      Объекты полномочий стандартной роли SAP_LO_EMPLOYEE
 

2)      запуск транзакции SU53
 

3)      запуск транзакции ME2L.

4)      Имеются полномочия на просмотр заказов на поставку по закупочной организации с кодом 1000.

Неполнота полномочий

Нет полномочий на просмотр всех видов документа заказа на поставку по всем закупочным организациям, отличным от 1000, и всем группам закупок;
нет полномочий на GUI-операции (нет прав на объект S_GUI).

Ещё раз запустим транзакцию ME2L, указав в качестве параметра запуска отчета закупочную организацию 1000.. Транзакция отобразит селекционный экран отчёта ME2L. Однако при попытке запуска отчёта система снова выдаст неинформативное сообщение «Из-за отсутствия полномочий список неполный» (Рис.6).

Рис.6 Попытка запуска выполнения отчета ME2L

Запустим транзакцию /nSU53.  Получим информацию об отсутствии прав на операцию 08 (Просмотр документов изменений) для  объекта M_BEST_BSA (Вид документа в заказе на поставка).

Рис.7 Отсутствие полномочия на объект M_BEST_BSA (Вид документа в заказе на поставку)

Добавим пользователю SAP_USER отсутствующие полномочия на работу с объектом M_BEST_BSA Вид документа в заказе на поставку) (для упрощения примера, я добавил пользователю права на все виды заказов на закупку и все операции с ними; на практике, полномочия назначаются, исходя из бизнес — сценария).

Рассмотрим Пример 3.

Покажем, что  отслеживания недостающих полномочий с помощью транзакции SU53 – трудоёмкий процесс.

Текущее состояние полномочий пользователя SAP_USER приведено в Таблице 3.

Таблица 3. Текущее состояние полномочий пользователя SAP_USER

     

Имеющиеся полномочия

1)      Объекты полномочий стандартной роли SAP_LO_EMPLOYEE
 

2)      запуск транзакции SU53
 

3)      запуск транзакции ME2L.
 

4)      Имеются полномочия на просмотр всех видов документа заказа на поставку.

5)      Имеются полномочия на просмотр заказов на поставку по закупочной организации с кодом 1000.

Неполнота полномочий

Нет полномочий на просмотр заказов на поставку по всем закупочным организациям, отличным от 1000, и всем группам закупок;
нет полномочий на GUI-операции (нет прав на объект S_GUI).

Выполним транзакцию ME2ещё раз. Мы получим такое же сообщение об отсутствующих полномочий как в примере 2 (Рис.6), и снова запустим транзакцию /nSU53 . Теперь мы получим информацию о неполноте полномочий, но уже для другого объекта (Рис.8): M_BEST_EKG(группа закупок в заказе на поставку).

Рис.8 Отсутствуют права на объект полномочий M_BEST_EKG

Добавим пользователю SAP_USER соответствующие полномочия на объект M_BEST_EKG и попробуем выполнить отчёт ME2L ещё раз.

Итерацию запуска транзакции SU53 и коррекцию прав  приходится повторять до тех пор, пока транзакция выполнится без сообщения об ошибке (отчёт выполнится без ошибок).Как видно, это – может быть весьма трудоёмким процессом.

Рассмотрим Пример 4.

Покажем, что при отсутствии полномочий на несколько объектов полномочий (а именно: отсутствие авторизации на просмотр заказов на закупку по закупочным организациям, отличным от 1000; отсутствие полномочий на GUI-операции) в транзакции SU53 будут показываться различные результаты в зависимости от формата вывода отчета.

Текущее состояние полномочий пользователя SAP_USER приведено в Таблице 4.

Таблица 4. Текущее состояние полномочий пользователя SAP_USER

     

Имеющиеся полномочия

1)      Объекты полномочий стандартной роли SAP_LO_EMPLOYEE
 

2)      запуск транзакции SU53
 

3)      запуск транзакции ME2L.
 

4)      Имеются полномочия на просмотр всех видов заказа на поставку.

5)      Имеются полномочии на просмотр заказов на поставку со всем группами закупок.

6)       Имеются полномочия на просмотр заказов на поставку по закупочной организации с кодом 1000.

Неполнота полномочия

Нет полномочий на просмотр заказов на поставку по всем закупочным организациям, отличным от 1000;

нет

Если хотите прочитать статью полностью и оставить свои комментарии присоединяйтесь к sapland

Зарегистрироваться

У вас уже есть учетная запись?

Войти

В ракурсе ведения объектов организационное менеджмента (в виде иерархии, транзакции типа рроме, ррома и т.д.) выводится странная ошибка:

Область действия не перекрывает ни один период полномочий для объекта Z* (далее имя пользовательского объекта и ID, которого физически нет в системе. )

Необходимые роли присвоены, структурные тоже. Полномочия на типы Z* объектов есть.

Откуда вообще берутся ид, которых нет в системе??

Что это за глюк?


_________________
If you want to be rich you’ve got to be a b…. !

Принять этот ответ

Проверка полномочий в ABAP программах.

Система разделения полномочий в системе R/3 основана на использовании объектов полномочий, которые представляют собой определение структуры, состоящей из простых полей. На основе объектов полномочий для пользователей создаются собственно полномочия, которые представляют собой наборы конкретных значений для полей объектов полномочий.

Пример. Объект полномочий F_KNA1_GRP «Дебитор – полномочия на группы счетов» состоит из двух полей:

— KTOKD — Группа счетов

— ACTVT — Операция

Для этого объекта полномочий могут быть созданы полномочия

{ Группа счетов = 0004 (филиалы); Операция = * (все операции) }

И это полномочие присваиваются пользователю.

В ABAP программах проверка полномочий производится с помощью оператора

authority-check object <имя_объекта>

id <имя_поля1> { field <значение1> | dummy }

id <имя_поля2> { field <значение2> | dummy }

… .

В операторе перечисляются все поля объекта полномочий и приводятся значения для проверки, либо употребляется ключевое слово dummy если значение конкретного поля нас в данный момент не интересует.

Пример. В транзакции просмотра дебитора мы производим сначала проверку:

authority-check object ‘F_KNA1_GRP’

id ‘KTOKD’ field ‘0004’

id ‘ACTVT’ dummy.

Затем, когда пользователь захочет перейти в режим изменения, выполняем более детальную проверку:

authority-check object ‘F_KNA1_GRP’

id ‘KTOKD’ field ‘0004’

id ‘ACTVT’ field ‘02’.

Все объекты полномочий разделены по классам, отражающим их функциональное предназначение. Просмотр объектов полномочий и их структуры – транзакция SU21.

Когда нужно использовать в своих программах проверку полномочий, лучше всего пользоваться готовыми объектами полномочий, однако готовые объекты не всегда имеются в наличии и их приходится создавать.

Для примера попытаемся создать объект полномочий, который будет проверять полномочия пользователя на операции с конкретным кредитором (такого в системе нет).

Сначала необходимо определить поля, из которых будет состоять объект. Для этого используем транзакцию SU20. Наш объект полномочий будет состоять из двух полей – код кредитора и операция.

Начальный экран транзакции SU20:

Для создания своего объекта используем кнопку «Создать».

Все создаваемые объекты называем на Z. Для создаваемого поля вводим элемент данных (чаще всего уже существующий и определяющий сущность поля, в нашем случае – Кредитор), а также таблицу для проверки значений (в нашем случае LFA1)

Сохраняем поле.

Второе поле – «Операция» — используем готовое, оно уже есть в системе:

Переходим к созданию объекта полномочий. Транзакция SU21.

«Проваливаемся» в класс объектов, соответствующий функциональному области, соответствующей создаваемому объекту полномочий. В нашем случае это FI.

Создаем новый объект с помощью кнопки «Создать». Вводим имя объекта и первое поле.

После того как введем второе поле – ACTVT – на экране появится новая кнопка – «Допустимые операции». Поле полномочий ACTVT имеет специальное значение в системе, и после его добавления в объект надо будет ввести допустимые операции для этого объекта.

По кнопке «Допустимые операции» переходим к ведению значений для поля ACTVT. Предварительно система попросит сохранить объект.

Для нашего случая пометим «Изменить» и «Просмотреть», и сохраним список значений.

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

Особенность данной транзакции – мы сразу не увидим созданного нами объекта в общем списке. Нужно завершить транзакцию, затем вновь ее запустить – созданный объект появится и его можно просмотреть и при необходимости изменить.

Следует также ввести документацию к объекту полномочий.

Для того чтобы у суперпользователей, имеющих полномочия «SAP_ALL» появились также и все полномочия на ваш объект, нужно перегенерировать этот профиль полномочий (кнопка на панели инструментов).

После всего этого в программе уже можно вести проверку полномочий по созданному объекту:

Для того, чтобы создаваемую вами программу в дальнейшем можно было включить в пользовательскую роль и подтянуть полномочия, необходимо следующее:

— Создать на базе вашей программы транзакцию, если ее еще нет (тр. SE93)

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

Запустить транзакцию SU24 (выполняется в настроечном манданте!). Ввести код вашей транзакции:

Следующий экран:

Нужно выделить нужный код транзакции и нажать кнопку «Изменить ИД проверки»

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

Добавляем свой объект (кнопкой Вставить). ИД проверки (зеленая галка) устанавливаем в колонку ПП, как на рисунке:

Сохраняем данные. Теперь для объекта полномочий нужно ввести значения проверяемых полей (если это имеет смысл). В нашем случае это будет иметь смысл если мы разрабатываем транзакцию изменения кредитора и поэтому для поля ACTVT в этой транзакции в любом случае будет требоваться значение ‘02’.

Нужно стать на введенный объект полномочий и нажать кнопку «Изменить значения полей».

Значения изменяем нажимая на иконку «Карандаш».

Значения полей, которые заранее не известны, например ZLIFNR, оставляем пустыми.

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

После этого, при включении транзакции ZTEST01 в пользовательскую роль, в соответствующий ей профиль полномочий будет добавлено полномочие с ACTVT = ‘02’ и неопределенным значением поля ZLIFNR (его значение определяется в роли, например интервалом или значением ‘*’).

Понравилась статья? Поделить с друзьями:
  • Транз неверна 12 ошибка
  • Трамвай не прощает ошибок барнаул
  • Трамвай какая ошибка
  • Трагическая ошибка фильм 1997
  • Трагическая ошибка героя