SAP 用户权限控制设置及开发(5页).doc
-SAP 用户权限控制设置及开发-第 5 页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-CHECK OBJECT '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-CHECK OBJECT 'ZS002' ID 'ZWERKS' FIELD s_werks-low. CONCATENATE 'Plant ' s_werks-low ' No Authorization' INTO errstr. MESSAGE errstr TYPE 'E'. EXIT. ENDIF. IF NOT s_werks IS INITIAL. AUTHORITY-CHECK OBJECT 'ZS002' ID 'ZWERKS' FIELD s_werks-high. CONCATENATE 'Plant ' s_werks-high ' No Authorization' INTO errstr. MESSAGE errstr TYPE 'E'. EXIT. ENDIF. ENDLOOP.可通过 Function GET_AUTH_VALUES 获取权限对象的权限值.用户权限缺失的检查.SU531).检查操作用户是否被授权能操作所执行的事务.2).检查操作用户被授权的权限角色里面是否包含程序所调用的权限对象.3).检查操作用户的权限检查字段输入值是否包含在权限字段.在用户执行某个程式权限检查失败后, 输入 SU53 就能看到权限评估检查报表.如下图所示:查找权限角色:如何知道某个 Tcode 分配给了哪些 Role?SUIM