Текущее время: Вс, июл 20 2025, 02:46

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 29 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Чт, май 25 2006, 10:37 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Чт, май 26 2005, 11:36
Сообщения: 651
Откуда: Киев-Москва
В хозяйстве такая штука пригодится.

Хотя я бы, наверное, сделал более извращённо. ПРограммулинка, дающая права sap_all прямой записью в табличку полномочий, а потом вычистить следы.

Но это если нужно права получить, не подставляя другое имя.

_________________
Рисую потоки данных.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Проверка полномочий не для текущего пользователя
СообщениеДобавлено: Пн, окт 09 2006, 15:50 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, дек 01 2005, 11:45
Сообщения: 98
DATA: USNAM LIKE sy-uname

call function 'AUTHORITY_CHECK'
exporting
USER = USNAM " имя пользователя, для которого проверяется полномочие
OBJECT = 'Z_MM_GROUP' " название объекта полномочий
FIELD = 'AF_CHF_ASS' " поле объекта полномочий
VALUE = '1'. " значение поля объекта полномочий


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 09 2006, 16:34 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Кстати, в ERP2005 завели следующею конструкцию:
Code:
AUTHORITY-CHECK OBJECT auth_obj [FOR USER user]
...

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Проверка полномочий не для текущего пользователя
СообщениеДобавлено: Пн, окт 09 2006, 18:25 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, дек 01 2005, 11:45
Сообщения: 98
Всплыла немного другая задача
Есть пользователю(USNAME = sy-uname). У пользователя есть объект полномочий(object = 'Z_MM_GROUP'). У объекта полномочий есть поле(FIELD = 'ZZ_FI_ASS') с каким-то значением. Есть ли функция которая по USNAME, object, FIELD определит значение этого FIELD.
Т.е. код должен быть примерно такой

    call function 'XYZ'
    exporting
    USER = sy-uname
    OBJECT = name_object
    FIELD = name_field
    importing
    VALUE = value_field

    * используем полученное значение value_field
    select * from TABLE1 when TABLE1-f = value_field

    Кто подскажет имя этой ф-ции XYZ?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проверка полномочий не для текущего пользователя
СообщениеДобавлено: Пн, окт 09 2006, 19:46 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Герман написал(а):
...

    call function 'XYZ'
    exporting
    USER = sy-uname
    OBJECT = name_object
    FIELD = name_field
    importing
    VALUE = value_field

    * используем полученное значение value_field
    select * from TABLE1 when TABLE1-f = value_field

    Кто подскажет имя этой ф-ции XYZ?

А не сработает такой код, т.к. value_field может содержать несколько значений, в том числе и регулярных (Z* например)

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Проверка полномочий не для текущего пользователя
СообщениеДобавлено: Пн, окт 09 2006, 20:23 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, дек 01 2005, 11:45
Сообщения: 98
sy-uname написал(а):
Герман написал(а):
...

    call function 'XYZ'
    exporting
    USER = sy-uname
    OBJECT = name_object
    FIELD = name_field
    importing
    VALUE = value_field

    * используем полученное значение value_field
    select * from TABLE1 when TABLE1-f = value_field

    Кто подскажет имя этой ф-ции XYZ?

А не сработает такой код, т.к. value_field может содержать несколько значений, в том числе и регулярных (Z* например)


Это частность. Мне надо знать принципиально о существовании такой функции. Может она будет иметь другой вид, например

DATA value_field TYPE TABLE OF tab_value_field occurs 10 with header line
call function 'XYZ'
exporting
USER = sy-uname
OBJECT = name_object
FIELD = name_field
TABLES
VALUE = value_field

* используем полученное значение value_field
LOOP at value_field.
select * from TABLE1 when TABLE1-f = value_field-von.
ENDLOOP.

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, окт 10 2006, 10:34 
Специалист
Специалист

Зарегистрирован:
Вс, мар 13 2005, 13:59
Сообщения: 201
Откуда: Moscau
То есть ты хочешь вести настройки системы в виде полномочий? Если так - смотри в сторону инфонаборов тр. gs02.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Проверка полномочий не для текущего пользователя
СообщениеДобавлено: Вт, окт 10 2006, 12:00 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, дек 01 2005, 11:45
Сообщения: 98
Я не чего не хочу вести. Я хочу получить значение поля объекта полномочия нужного мне пользователя. Сравнить это значение с определенным числом, чтобы проверить выводить для этого пользователя информацию на экран или не выводить.
Мне нужен четкий ответ. Как получить это значение? Если такая функция есть, то имя этой функции. Если функции нет, то получить ответ "Нет"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проверка полномочий не для текущего пользователя
СообщениеДобавлено: Вт, окт 10 2006, 13:05 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Герман написал(а):
Я не чего не хочу вести. Я хочу получить значение поля объекта полномочия нужного мне пользователя. Сравнить это значение с определенным числом, чтобы проверить выводить для этого пользователя информацию на экран или не выводить.
authority check для того и существует. Зачем это делать наизнанку?
Цитата:
Мне нужен четкий ответ. Как получить это значение? Если такая функция есть, то имя этой функции. Если функции нет, то получить ответ "Нет"
Потратить пять минут на поиск было очень сложно? GET_AUTH_VALUES

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проверка полномочий не для текущего пользователя
СообщениеДобавлено: Вт, окт 10 2006, 15:15 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, дек 01 2005, 11:45
Сообщения: 98
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 не заполняется

Возможно я с ней не доразбирался. Но документации по ней нет, а гадать каие значения ей передавать у меня нет опыта.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, окт 10 2006, 15:30 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Попробуйте SUSR_USER_AUTH_FOR_OBJ_GET.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проверка полномочий не для текущего пользователя
СообщениеДобавлено: Вт, окт 10 2006, 19:51 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Герман написал(а):
...А для ответа на нужный вопрос с помощью ф-ции AUTHORITY_CHECK придется писать код следующего типа, где в цикле переменной Т присваиваютсят все возможные значения аргумента VALUE. Понятно, что это невозможно и такой код сплошное делитанство
...

Делитанство - не делетанство, но практически все стандартные транзакции работают именно по такому принципу - данные выбираются с запасом, а потом отфильтровываются не прошедшие проверку полномочий.

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проверка полномочий не для текущего пользователя
СообщениеДобавлено: Ср, окт 11 2006, 09:01 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, дек 01 2005, 11:45
Сообщения: 98
sy-uname написал(а):
Герман написал(а):
...А для ответа на нужный вопрос с помощью ф-ции AUTHORITY_CHECK придется писать код следующего типа, где в цикле переменной Т присваиваютсят все возможные значения аргумента VALUE. Понятно, что это невозможно и такой код сплошное делитанство
...

Делитанство - не делетанство, но практически все стандартные транзакции работают именно по такому принципу - данные выбираются с запасом, а потом отфильтровываются не прошедшие проверку полномочий.


В математике даже 100000 примеров не доказывает теорему, может найтись 100001-й пример, который опровергает предполагаемую теорему. И если в большинстве случаев алгоритм, на который вы указываете работает(он и применяется т.к. другой не подойдет), то в моем случае он не подходит. Это как раз 100001-й случай. Мне надо найти значение поля полномочия пользователя и дальше найти всех пользователей, у которых это поле также имеет такоеже значение. Если вы сможете мне показать алгоритм решения этой задачи(пусть даже не простой) с помощью AUTHORITY_CHECK буду премного благодарен.

А если значение поля может колебатя от 0 до 100000, то что же проверять поле на все возможные значения в цикле от 0 до 100000.
А если вообще не известен тип и диапазон возможных значений поля? Прикажете проверять на все возможные комбинации? Так это жизни может не хватить :)

У меня такое ощущение, что вы просто не поняли суть вопроса.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, окт 11 2006, 09:05 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, дек 01 2005, 11:45
Сообщения: 98
sibrin написал:
Попробуйте SUSR_USER_AUTH_FOR_OBJ_GET.


Большое спасибо за понятие сути вопроса и оказаное участие в его решении. Это как раз то, что необходимо. Моя благодарность не знает предела(в пределах разумного, конечно)


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 29 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB