实例:ABAP权限对象设计与权限检查的实现

时间:2015-12-03 11:29:04   收藏:0   阅读:625

本人自学总结,分享给大家,大神请无视,,,

我在ECC里创建了一张表,随意插入了5条数据

技术分享

技术分享

创建权限对象,使用户只能操作部门编号(edept)为 ‘10’ 的数据。

1. SU20,创建权限字段

  技术分享

2. SU21,创建权限对象

   1.首先创建对象类,输入对象类名称(ZEM1)、文本(FOR TEST),点击保存

       2.找到之前创建的对象类,可以鼠标右键创建权限对象

        技术分享

        技术分享

3. SU02,创建参数文件,输入相关信息 激活

对象输入:ZEMPOBJ00

权限输入:ZDEPT,并双击它新建一个权限

  技术分享

  具体的权限值(点击“维护值”)

  技术分享

激活!

  该授权对象 包含两个字 段。可以在 第一个字段 EMPDEPT 中输入一 般值 ‘10’,在第二个字段 ACTVT 中,在创建(01)、更改(02)和显示(03)之间进行选择,也就是说,分配这个参数文件的用户,只能对 ‘10’ 部门的数据进行01、02、03操作。

       也可以设置为“*”这样任何操作都可以通过。

       到此,su01,进入‘参数文件’选项卡,添加参数文件:ZEMPRF00,保存后权限即可生效,对用户分配权限还可以通过创建role的方式,以下。

4.创建role将权限分配给用户

 PS:有两种方式,创建role分配给用户,或者直接将参数文件分配给用户,role是从业务层面的维度来管理权限,但实质上的功能还是由profile 来完成的。 原来sap的权限是没有role这个概念的。全部是由profile/object 的方式来实现的,但这样的方式要求对权限底层的具体细节非常了解才行,严重影响的工作效率,而且不利于只懂业务的人进行权限管理和设计。 所以sap后来引入了role这样一个概念,试图通过自顶向下的方式让用户来管理权限。通过tcode pfcg 可以维护role。

  1.PFCG 创建角色:ZEMPR00,输入描述文本,“权限”选项卡,参数文件名称:点击(系统建议的),点‘更改授权数据’->‘手动,

     输入授权对象:ZEMPOBJ00,回车,保存;

     指定权限的值

  技术分享
  2.进入‘用户’选项卡,输入用户名为自己的用户名;记得‘用户比较‘(用户比较,完成权限修改后与用户的权限保持一致)

到此为止,权限的设计全部完成,下面我们通过ABAP来验证权限的有效性。

  技术分享

权限列表中有两个权限,一个是系统通过创建role生成的,一个是我们手动创建的。

5. 创建ABAP程序,来验证权限对象的有效性

 1 REPORT  ZHAIM_TEST01 NO STANDARD PAGE HEADING.
 2 
 3 TABLES ZEMP_TEST.
 4 
 5 DATA: IT_ZEMP TYPE STANDARD TABLE OF ZEMP_TEST,
 6           IW_ZEMP TYPE ZEMP_TEST.
 7 
 8 PARAMETERS P_DEPT TYPE ZEMP_TEST-EDEPT.
 9 

10 START-OF-SELECTION.
11 
12 AUTHORITY-CHECK OBJECT ZEMPOBJ00
13         ID ZEMPDEPT FIELD P_DEPT
14         ID ACTVT  FIELD 03.
15 "用户使用程序,想要查询部门的员工信息,
16 "通过authority-check object 来进行权限检查,ID是字段名,field是要检查的
17 "‘actvt‘: 01 创建,02更改,03查询,06删除
18 IF SY-SUBRC <> 0.
19   MESSAGE S001(00) WITH 您没有权限查看此数据 DISPLAY LIKE E.
20 ELSE.
21 
22   SELECT *
23     FROM ZEMP_TEST
24     INTO TABLE IT_ZEMP
25    WHERE EDEPT = P_DEPT.
26 
27 
28   LOOP AT IT_ZEMP INTO IW_ZEMP.
29 
30     WRITE / IW_ZEMP.
31 
32   ENDLOOP.
33 
34 ENDIF.

输入20

  技术分享

执行结果:

  技术分享

输入10

  技术分享

执行结果

  技术分享

如果存在删除操作,在删除前,检查用户的权限,可以将actvt的值改为06进行测试。actvt的所有值储存在表TACT中。

(自学中总结,如有不足,见谅!如果前辈有SAP ABAP 或者 模块 相关珍贵自学资料发给我一些,本人虚心求取,邮箱:ming_zhai@126.com)

 

 

 

 

 

原文:http://www.cnblogs.com/mingdashu/p/authority-check.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!