Проверка полномочий вещь нужная, но очень часто в своих программах забиваемая
, а все почему? Да потому как рука бойца писать устанет, пока проверишь все, что нужно и можно проверить, чтобы и свои объекты работали и стандарт не обидеть, а особенно если это какой-то большой объект... ну вот ту случайно наткнулся когда-то на ФМ, который проверяет на все что нужно такой объект как единица оборудования/серийный номер.
DATA: f_tcode LIKE sy-tcode, "Код транзакции
ls_equi TYPE equi, "Основные данные единицы оборудования
ls_equz TYPE equz, "Сегмент времени единицы оборудования
ls_iloa TYPE iloa. "Место расположения и контировка объекта ТОРО
f_tcode = 'IQ03'.
CALL FUNCTION 'AUTHORITY_CHECK_EQUI'
EXPORTING
w_equi = ls_equi
tcode = f_tcode
i_tcode_check = 'X'
w_equz = ls_equz
w_iloa = ls_iloa
i_call_badi = 'X'
EXCEPTIONS
no_authority_tcode = 1
no_authority_begrp = 2
no_authority_iwerk = 3
no_authority_ingrp = 4
no_authority_swerk = 5
no_authority_kostl = 6
no_profile_in_user_master_data = 7
error_in_user_master_data = 8
no_authority_badi = 9
OTHERS = 10.
В общем из примера вызова думаю и так все ясно. Грузим селектом записи из таблиц EQUI, EQUIZ и ILOA и спрашиваем у ФМ-ки а можно ли эти данные просмотреть в заданной транзакции пользователю, выполняющему программу. Опять же что полезно, проверку на код транзакции и на то как идет вызов в диалоге или из BADI, тоже можно ключить\отключить.