常规权限检查
PARAMETERS carr TYPE spfli-carrid.
AT SELECTION-SCREEN.
AUTHORITY-CHECK OBJECT 'S_CARRID'
ID 'CARRID' FIELD carr
ID 'ACTVT' FIELD '03'.
IF sy-subrc <> 0.
MESSAGE 'No authorization' TYPE 'E'.
ENDIF.
|----------|--------------------------------------------------------------------------|
| sy-subrc | Meaning |
| 0 | 授权成功或未进行检查。在用户主数据记录中找到了该授权对象的授权。其值集包含指定的值。 |
| 4 | 授权检查未成功。在用户主数据记录中找到了该授权对象的一个或多个授权,且这些授权包含值集,但未包含指定的值,或者指定了不正确的授权字段或字段过多。 |
| 12 | 在用户主数据记录中未找到该授权对象的授权。 |
| 24 | 此返回码已不再使用。 |
| 40 | 在用户中指定了无效的用户 ID。 |

FOR USER user
AUTHORITY-CHECK OBJECT 'S_CARRID' FOR USER SY-UNAME
ID 'CARRID' FIELD '__________'
ID 'ACTVT' FIELD '__________'.
IF sy-subrc <> 0.
* Implement a suitable exception handling here
ENDIF.
指定的授权对象列出至少一个且最多 10 个不同的授权字段
如果用户主数据记录中为该授权对象创建了一个或多个授权,并且对于其中至少一个授权,其使用 ID 指定的授权字段所定义的每个值集都包含待检查的值 val1 ... val10,则授权检查成功。未包含在语句中或其值被指定为 DUMMY 的授权字段将不进行检查。如果检查成功,sy-subrc 将被设置为 0。否则,它将被设置为一个不等于 0 的值
AUTHORITY-CHECK OBJECT 'S_CARRID'
ID 'CARRID' FIELD '__________'
ID 'ACTVT' DUMMY.
IF sy-subrc <> 0.
* Implement a suitable exception handling here
ENDIF.
相关后台表
|-----------|-------------------|
| 表 | 表描述 |
| USER_ADDR | 依据地址数据的用户 |
| TOBJ | 权限对象表 |
| TACT | 可保护的活动(活动字段ACTVT) |
| TACTT | TACT的文本表 |
| TACTZ | 每个授权对象的有效作业 |
| AGR_1251 | 活动组的权限数据 |
| AGR_USERS | 分配角色到用户 |
| AGR_TEXTS | 用于层次菜单的文件结构-客户 |
相关事务码
|----------------|-----------------------------|
| 事务码 | 描述 |
| S_BCE_68001432 | 比较权限(可以比较用户,角色,参数文件,权限对象) |
| STAUTHTRACE | 权限跟踪(跟踪时间段、指定的用户) |
| SU02 | 维护权限参数文件(可以传输) |
| SU20 | 维护权限字段 |
| SU20_BTCH | 维护权限字段 |
| SU21 | 维护权限对象 |
| SU22/SU24 | 维护权限缺省值(非代码方式给函数,事务码关联权限对象) |
| SU22_OLD | 事务中权限对象的用法 |
| SU53 | 评估权限检查(可以捕获缺失的权限) |
| PFCG | 角色维护 |