В общем задача следующая, есть два варианта проверки полномочий, первый вариант запросить у пользователя данные, например завода и склада, прогнать их через AUTHORITY-CHECK OBJECT и на выходе сказать да или нет, или же как более красивый местами вариант проверить список объектов на которые есть полномочия и к примеру по вызову F4 (код поиска к полю), показать пользователю только те заводы и склады, на которые есть полномочия. Кстати, для озадаченных безопасностью на уровне паранойи это таки выход, типа переписать все коды поиска на свои и выдавать пользователю только те значения для ввода на которые у него есть полномочия, опять же например типа показывать только тех кредиторов, которых положено, а не всех что заведены в системе (однако иногда даже эта информация может быть ключевой для разных чужих редисок).
И так для этого можно использовать ФМ:
GET_AUTH_VALUESФормат вызова довольно простой и как по мне кажется даже не особо нуждается в комментариях, одновременно можно проверить 7 объектов полномочий и получить значения, которые есть в ролях пользователя. Пример вызова:
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, поэтому там "*", а так вообще-то там будут перечислены данные которые есть у пользователя в профиле.