SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

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



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> Security and Monitoring
View previous topic :: View next topic  
Author Message
admin
Администратор
Администратор



Joined: 01 Sep 2007
Posts: 1639

PostPosted: Thu Jan 17, 2008 11:19 pm    Post subject: Проверка полномочий в ABAP программах Reply with quote

Проверка полномочий в 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 (его значение определяется в роли, например интервалом или значением ‘*’).
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> Security and Monitoring All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG.
SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG.
Every effort is made to ensure content integrity. Use information on this site at your own risk.