本文只针对在程序中进行权限检查。
首先确定用户在程序中的检查项,例如我只针对下图中的工厂进行检查。
打开T-CODE:SU21 对象类别清单
点击新建
出现下图对话框
对象类别处输入你要建立的权限对象类名称,这里做一下说明。对象类是由多个对象组成的类包。然后输入文本说明文字。保存
完成以后可以在对象列表中查看。
双击COTS进入,然后点新建
出现下图显示。
在对象处输入你要建立的对象名称、文本。
在授权字段处输入要在程序中检查的权限项,本文用的是工厂所以输入WERKS。
如图
完成后点击保存。到此权限的对象设置完毕。
下面是在角色中添加刚刚设置的权限对象。
打开T-CODE: PFCG
ROLE处输入角色名称此处我输入的是ZTEST_AUTHORITY-CHECK。
点击 进入角色创建界面。
输入描述文本。点击权限选项卡会出现保存提示。确定以后,点现在的
在出现的界面中选择人工的。如下图:
在授权对象处输入或者选择刚刚新建立的Z_WERKS_TS对象
确定后会出现下图显示
点击 修改权限设置。此处输入能够访问的工厂。
完成后点击 生成角色。
提示参数文件名称点击 完成角色设置。
最后在用户主数据中加入刚刚建立的角色。T-CODE:SU01
输入用户名后点击修改,进入角色选项卡。
输入建立的角色
保存完成。
最后在程序中加入权限检查代码。
因为程序中用的是 SELECT-OPTIONS: s_werks FOR it_zco002-werks.
所以工厂很有可能 是多个集合在此要循环这个集合。
代码如下:
在AT SELECTION-SCREEN.后面加入下列代码
**************************************************加入代码开始
AT SELECTION-SCREEN ON s_werks.
SELECT werks FROM t001w INTO TABLE l_xu_t001w WHERE werks IN s_werks.
LOOP AT l_xu_t001w.
AUTHORITY-CHECK OBJECT 'Z_WERKS_TS'
ID 'WERKS' FIELD l_xu_t001w-werks .
IF sy-subrc NE 0.
MESSAGE e398(00) WITH '你在' l_xu_t001w-werks '工厂中没有权限执行成本还原!'.
EXIT.
ENDIF.
ENDLOOP.
**************************************************加入代码结束
说明:
AUTHORITY-CHECK OBJECT 'Z_WERKS_TS' “Z_WERKS_TS 就是前面建立的权限对象
ID 'WERKS' FIELD l_xu_t001w-werks .” WERKS是对象对面包含的字段
下载地址:http://files.cnblogs.com/krikxu/AUTHORITY-CHECK.rar
转载于:https://www.cnblogs.com/krikxu/archive/2008/10/14/1310909.html