Authority-check基础知识

1、检查用户是否具有某个TCODE的权限

AUTHORITY-CHECK OBJECT 'S_CODE' ID 'TCD' FIELD .

IF SY-SUBRC <> 0.

MESSAGE '没有使用权限' .

LEAVE TO SCREEN 0 .

ENDIF .


2、Authority-CHECK基本介绍

AUTHORITY-CHECK的调用语法:

AUTHORITY-CHECK OBJECT object

ID  name1 FIELD f1 .

ID name2 FIELD f2 .

...

ID name10 FIELD f10 .


(1)对于权限对象object下面的不同的ID(我们一般称为authority fields)进行不同的权限(这里的权限就是通过f1所指定的,如这里可以为01,02,03等等)检查.

其中,01代表create,02代表change,03代表display 。


(2)在ABAP中,如果这个object包含多个ID,需要在这里全部指定出来。这里,如果不想进行某一个ID的检查,那么可以使用field DUMMY进行ommit掉。


(3)authority-check后的SY-SUBRC返回值的不同也代表着不同的意思:


                 0                  权限check成功
4 用户无这样的权限
8 在写ABAP authority-check时,指定太多的ID(最多只能有10个)
12 用户信息中不存在这样的authority object
16 用户信息中不存在这样的profile
24 指定的fild名字与authority-object中ID需要的field不匹配
28 用户信息不正确
32 用户信息不正确
36 用户信息不正确

例如:在系统中,目前该用户具有以下的authority(已经通过profile以及role)

AUTHORITY OBJECT: M_EINF_WRK_BERECH1

Authority ID: ACTVT

Fields: 01-03

Authority ID: WERKS

Fields:0001-0003 .

那么该用户通过以下的ABAP可以通过权限检查:

AUTHORITY-CHECK OBJECT 'M_EINF_WRK'

ID 'WERKS' FIELD '0002'

ID 'ACTVT' FIELD '02'.

AUTHORITY-CHECK OBJECT ‘M_EINF_WRK’

ID ‘WERKS’ DUMMY

ID ‘ACTVT’ FIELD '01' .


而下面的ABAP check则不能通过:


AUTHORITY-CHECK OBJECT ‘M_EINF_WRK’

ID 'WERKS' FIELD '0005'

ID 'ACTVT' FIELD '04'.





















你可能感兴趣的:(ABAP开发)