sy-uname написал(а):
Герман написал(а):
Я не чего не хочу вести. Я хочу получить значение поля объекта полномочия нужного мне пользователя. Сравнить это значение с определенным числом, чтобы проверить выводить для этого пользователя информацию на экран или не выводить.
authority check для того и существует. Зачем это делать наизнанку?
Объясняю. Если сделать такой вызов
T = '1'.
call function 'AUTHORITY_CHECK'
exporting
USER = USNAM " имя пользователя, для которого проверяется полномочие
OBJECT = 'Z_MM_GROUP' " название объекта полномочий
FIELD = 'AF_CHF_ASS' " поле объекта полномочий
VALUE = T. " значение поля объекта полномочий
IF SY-SUBRC<>0 THEN.
........
ENDIF
То, суть кода будет в том, что он проверяет равно или не равно значение поле переменной Т='1'. Но он никогда не покажет чему же равняется значение. А мне надо знать ответ на вопрос "Чему равняется значение?", а не ответ на вопрос "Равно или не равно определенному значению".
А для ответа на нужный вопрос с помощью ф-ции AUTHORITY_CHECK придется писать код следующего типа, где в цикле переменной Т присваиваютсят все возможные значения аргумента VALUE. Понятно, что это невозможно и такой код сплошное делитанство
LOOP ...
T = #Возможно значение#.
call function 'AUTHORITY_CHECK'
exporting
USER = USNAM " имя пользователя, для которого проверяется полномочие
OBJECT = 'Z_MM_GROUP' " название объекта полномочий
FIELD = 'AF_CHF_ASS' " поле объекта полномочий
VALUE = T. " значение поля объекта полномочий
IF SY-SUBRC<>0 THEN.
........
ENDIF
ANDLOOP.
sy-uname написал(а):
Герман написал(а):
Мне нужен четкий ответ. Как получить это значение? Если такая функция есть, то имя этой функции. Если функции нет, то получить ответ "Нет"
Потратить пять минут на поиск было очень сложно?
GET_AUTH_VALUES
Потратить было не сложно и нашел я эту ф-цию. Ее использует в вызове ф-ция SWFMOD_GET_AUTHORITY_OBJECT. Но дело в том что при вызове этой ф-ции в формате
CALL FUNCTION 'GET_AUTH_VALUES'
EXPORTING
OBJECT1 = CON_AUTH_COMPONENT
OBJECT2 = CON_AUTH_TEMPLATE
OBJECT3 = CON_AUTH_MOD_OBJECT
OBJECT4 = CON_AUTH_USER_WKFL
USER = IV_USER
TABLES
VALUES = ET_VALUES
EXCEPTIONS
USER_DOESNT_EXIST = 1
OTHERS = 2
nаблица ET_VALUES заполняется если IV_USER = sy-uname или IV_USER = #пользователь, у которого все права#
Для обыкновенного пользователя ET_VALUES не заполняется
Возможно я с ней не доразбирался. Но документации по ней нет, а гадать каие значения ей передавать у меня нет опыта.