Sapforum.Biz

Инструменты => ABAP - Инструментальные средства => SE37 - Построитель функций => Тема начата: Uukrul от Январь 28, 2009, 12:58:33 am

Название: GET_AUTH_VALUES - Проверка полномочий на объекты системы для пользователя
Отправлено: Uukrul от Январь 28, 2009, 12:58:33 am
В общем задача следующая, есть два варианта проверки полномочий, первый вариант запросить у пользователя данные, например завода и склада, прогнать их через AUTHORITY-CHECK OBJECT и на выходе сказать да или нет, или же как более красивый местами вариант проверить список объектов на которые есть полномочия и к примеру по вызову F4 (код поиска к полю), показать пользователю только те заводы и склады, на которые есть полномочия. Кстати, для озадаченных безопасностью на уровне паранойи это таки выход, типа переписать все коды поиска на свои и выдавать пользователю только те значения для ввода на которые у него есть полномочия, опять же например типа показывать только тех кредиторов, которых положено, а не всех что заведены в системе (однако иногда даже эта информация может быть ключевой для разных чужих редисок).

И так для этого можно использовать ФМ: GET_AUTH_VALUES
Формат вызова довольно простой и как по мне кажется даже не особо нуждается в комментариях, одновременно можно проверить 7 объектов полномочий и получить значения, которые есть в ролях пользователя. Пример вызова:
Код: You are not allowed to view links. Register or Login
DATA: lt_us335 LIKE us335.

CLEAR: lt_us335[].
CALL FUNCTION 'GET_AUTH_VALUES'
  EXPORTING
    object1                 = 'B_USERSTAT'
*   OBJECT2                 = ' '
*   OBJECT3                 = ' '
*   OBJECT4                 = ' '
*   OBJECT5                 = ' '
*   OBJECT6                 = ' '
*   OBJECT7                 = ' '
    user                    = 'SIDOROV'
    tcode                   = 'IW31'
  TABLES
    values                  = lt_us335
 EXCEPTIONS
   user_doesnt_exist       = 1
   OTHERS                  = 2.
В таблице lt_us335, получим что-то типа как на рисунке GET_AUTH_VALUES.png т.е. в данном случае видно, что есть все полномочия  ;), ну у меня по крайней мере, просто SAP_ALL, поэтому там "*", а так вообще-то там будут перечислены данные которые есть у пользователя в профиле.