二维码

[权限] su20 su21建立授权对象,并在程序中使用授权对象

Twilight发表于 2014-01-22 20:32低纬度行人 最后回复于 2017-07-13 13:37 [复制链接] 7950 1

个人理解的权限控制是这样实现的,首先想想为什么不同的用户可以有不同的权限了?因为有角色的概念,不同的用户分配了不同的的权限,所以有不同的权限。而角色由参数文件(profile )组成,参数文件里添加了授权对象(authority object),授权对象又由授权字段(authorization field)构成。这就从上到下的组成了权限控制的全部。如图:
authority check.jpg DEDINE ANTHORITY.jpg
授权对象层次关系:授权对象分类->授权对象->授权对象字段

一、建立授权对象
1、T-code SU20 建立授权对象字段(单击白板 新增按钮)
SU20.jpg

字段名和数据元素为必输,名字随便可以输入,数据元素可以自建,也可以参照创建。table name字段就是创建完成之后的check table,我们在创建权限对象添加字段的时候,如果这个权限字段有check table那么就会有一些值可供选,此处不填,保存。

2、T-code SU21 建立授权对象
SU21.jpg

SU21进入权限对象的界面,可以先建立一个object class,它相当于一个目录包含了若干个权限对象,这样方便维护。我们创建好权限对象之后便可以添加刚才自己创建的字段了,或者系统标准的权限字段。然后选择这个权限对象有哪些值可以使用。
对象类是多个权限对象的集合, 而一个权限对象下又可分配多个权限字段, 新增的用户自定义权限对象, 需要单击工具栏中的"Regenerate SAP_ALL" 按钮才会把新增的权限对象赋值给SAP_ALL这个权限参数文件。

二、建立应用程序与使用授权对象

PATTERN ANTHORITY.jpg

程序执行效果图:
SE38_ANTHORITY.jpg

主程序:
  1. REPORT  ZDEMON_012.
  2. *输入参数
  3. PARAMETERS D1(20) TYPE C.

  4. AT SELECTION-SCREEN.
  5. *检查授权对象zpower1的字段zpowerfld1
  6. *也就是检查D1的值是否在授权字段的设置中  
  7.   AUTHORITY-CHECK OBJECT 'ZPOWER1'
  8.            ID 'ZPOWFLD1' FIELD 'D1'.
  9. *检查是否有权限,如果无权限,提示 无权限  
  10.   IF SY-SUBRC <> 0.
  11.       MESSAGE E208(00) WITH '无权限!'.
  12.   ENDIF.
  13. *权限通过后的输出
  14.   START-OF-SELECTION.
  15.   WRITE '权限正常!'.
复制代码


注:SU22查看事务码的权限对象的,YES表示这个事务码拥有这个权限对象,NO表示没有这个权限对象,没有权限的自然处理不了相应的业务,如FB01会计凭证记账,就没有A_A_VIEW资产视图的权限对象,表示在FB01中不能显示资产主数据。如果需要某个标示为“NO”的权限对象时,可以将这个权限对象及所需要的字段提供给BASIS帮你更改,如果你有事务码PFCG的权限,则可以自己处理了,先看看需要权限的事务码在哪个角色,再用PFCG在更改状态一,选择“权限”视图点击“更改授权数据”,然后找到对应的权限对象,并修改相关字段,如确实找不到又需要这个权限对象的话,可以用人工添加的方式,点击“人工的”,输入要你的权限对象,再修改相关的字段。
回复

使用道具 举报

低纬度行人
谢谢,这个步骤总结的很清晰
回复 支持 反对

使用道具 举报

快速回帖

本版积分规则
您需要登录后才可以回帖 登录 | 注册有礼

快速回复 返回顶部 返回列表