Это моя первая попытка создать объект полномочий и поэтому прошу помощи и понимания. Задачка простая - в VA01 поле VBKD-ZTERM закрыть для ввода, если у пользователя нет таких полномочий. 1. Создала объект полномочий ZAUTHFLD c полями AUTH_FIELD и ACTVT. Включила в роль с ACTVT = 02 (Change), AUTH_FIELD = VBKD_ZTERM. 2. В custom-exite EXIT_SAPMV45A_004 написала код
* Check if user is authorized to change SO data authority-check object 'ZAUTHFLD' id 'AUTH_FIELD' field I_SCREEN_NAME id 'ACTVT' field '02'.
check SY-SUBRC ne 0. C_SCREEN_INPUT = 0. modify screen.
Работает так: если полномочия на изменение есть, то VBKD-ZTERM можно менять, если ACTVT в роли 03 (Display), то поле серое. Так и надо. Проблема в том, что теперь все остальные поля на экране тоже серые, а на них проверка не должна влиять. Пришлось вернуться к hardcoding. Все правильно работает если жестко прописать в user-exite поля:
check I_SCREEN_NAME = 'VBKD-ZTERM'. C_SCREEN_INPUT = 0. modify screen.
Как сделать так, чтобы имя поля задавать не в программе, а в роли? Тогда не придется переписывать программу, если надо будет еще какое-то поле закрыть.
|
|