SAP 用户权限控制设置及开发
(2012-09-03 16:03:31)
转载▼
标签:
分类: ABAP
权限
用户的权限菜单是通过分配具体角色来实现的.
1.创建角色
PFCG
输入角色名并点击 Single Role
为角色分配权限菜单 .
为角色配置权限数据
维护完菜单后 ,仅实现在用户菜单中能看到相关的事务,要具有此事务权限还待设置具体的权限数据.
SAP程式在执行中会通过读取该参数文件的数据来进行用户权限的检查及管控.
在SAP实际应用中 , 用户所直接操作的是屏幕及屏幕所对应的字段 , 而这些具体的字段都是由权限对象进行控制 , 包括该字段所允许的操作及允许的值 .
*表示为该字段分配完全权限 .
通过状态灯图标来表示各权限对象的维护状态 , 绿灯代表激活 , 黄色代表未激活 , 红色代表未给权限字段分配值 , 单击权限字段前的铅笔图标可以定义该字段的授权值 .
一些常用的权限字段 :
ACTVT: 该字段存放的就是允许操作的代码,例如01代表创建,02代表修改,03代表显示等;
TCD:存放该权限角色所包含的事务代码;
该图说明允许该角色的用户能查看和更改物料的Status.
权限对象维护完成后 , 点 Generate 将该权限数据激活 .
将角色分配给用户 :
进行用户比较 ,只有单击"完成比较"按钮,该用户所对应的权限角色才将正式生效.
自定义权限对象 :
1.权限字段的维护:
SU20
创建权限字段 .
2.对象类及权限对象的维护
SU21
对象类是多个权限对象的集合 , 而一个权限对象下又可分配多个权限字段 , 新增的用户自定义权限对象 , 需要单击工具栏中的 "Regenerate SAP_ALL" 按钮才会把新增的权限对象赋值给 SAP_ALL这个权限参数文件 .
3.权限对象的分配 .
SU22
把权限对象 (Authorization Object)分配给事务代码.
有个奇怪的问题是 :我用SU22给自己的事务码分配了自定义的Authorization Object后,为什么在用PFCG增加权限的时候这个Authorization Object不能自动带过来,而系统自身的Tcode却能带过已经分配给它的Authorization Object.有知道的同学们请告知一声.可加QQ群:262131634 或 QQ: 115023071
权限对象在 ABAP 程序中的调用 .
For Example 1.
对Parameters 输入的检查 :
-------------------------------------------------------
REPORT z_af_034.
TABLES: marc.
PARAMETERS:s_werks LIKE marc-werks DEFAULT '1000'.
AT SELECTION-SCREEN.
AUTHORITY-CHECKOBJECT 'ZS002'
ID 'ZWERKS' FIELD s_werks.
IF sy-subrc<>0.
MESSAGE' 权限检查失败 ' TYPE 'E'.
ENDIF.
START-OF-SELECTION.
--------------------------------------------------------
For Example 2.
对select-options数据的权限检查:
--------------------------------------------------------
REPORT z_af_034.
TABLES: marc.
DATA: errstr TYPE string.
SELECT-OPTIONS: s_werks FOR marc-werks.
START-OF-SELECTION.
LOOP AT s_werks.
IF NOT s_werks IS INITIAL.
AUTHORITY-CHECKOBJECT 'ZS002'
ID 'ZWERKS' FIELD s_werks-low.
CONCATENATE'Plant' s_werks-low ' No Authorization'INTO errstr.
MESSAGEerrstr TYPE 'E'.
EXIT.
ENDIF.
IF NOT s_werks IS INITIAL.
AUTHORITY-CHECKOBJECT 'ZS002'
ID 'ZWERKS' FIELD s_werks-high.
CONCATENATE'Plant' s_werks-high' No Authorization'INTO errstr.
MESSAGEerrstr TYPE 'E'.
EXIT.
ENDIF.
ENDLOOP.
--------------------------------------------------------------
可通过 Function GET_AUTH_VALUES获取权限对象的权限值 .
用户权限缺失的检查 .
SU53
1). 检查操作用户是否被授权能操作所执行的事务.
2). 检查操作用户被授权的权限角色里面是否包含程序所调用的权限对象.
3). 检查操作用户的权限检查字段输入值是否包含在权限字段.
在用户执行某个程式权限检查失败后,输入SU53就能看到权限评估检查报表. 如下图所示 :
查找权限角色 :
如何知道某个 Tcode 分配给了哪些 Role?
SUIM