您的位置:首页 > 其它

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

2017-06-22 10:40 495 查看
Ps:发觉现在的CSDN越来越烂了,编辑超级不人性化,一按退格就退出编辑,而且敏感词直接封号,吐槽一下,开始正文。

在测试机里面创建一张新表ZEMP_DEP,并插入一点记录。



插入几条记录:



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

1. SU20:创建权限字段







2. SU21:创建权限对象

首先创建对象类,输入对象类名称(ZEM1)、文本(员工部门),点击“保存”





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





这里的权限字段就是上面我们SU20刚刚创建的,下面的actvt我们稍后统一讲解。



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






对象输入:ZEMP_DEP

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

这里的对象就是上面SU21新建的授权对象。



双击‘ZDEPT’,输入权限的描述,进入如下界面。



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





激活!

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

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

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

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

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



然后指定权限的值



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

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





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

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

REPORT  ZHAIM_TEST01 NO STANDARD PAGE HEADING.

TABLES ZEMP_DEP.

DATA: IT_ZEMP TYPE STANDARD TABLE OF ZEMP_DEP,

      IW_ZEMP TYPE ZEMP_DEP.

PARAMETERS P_DEPT TYPE ZEMP_DEP-DEPID.

START-OF-SELECTION.

  AUTHORITY-CHECK OBJECT 'ZEMP_DEP'

          ID 'ZDEPT' FIELD P_DEPT

          ID 'ACTVT'  FIELD '03'.

  IF SY-SUBRC <> 0.

    MESSAGE S001(00) WITH '您没有权限查看此数据' DISPLAY LIKE 'E'.

  ELSE.

    SELECT *

      FROM ZEMP_DEP

      INTO TABLE IT_ZEMP

     WHERE DEPID = P_DEPT.

    LOOP AT IT_ZEMP INTO IW_ZEMP.

      WRITE / IW_ZEMP.

    ENDLOOP.

  ENDIF.

输入20



执行结果:



输入10



执行正确结果。

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

actvt的所有值储存在表TACT中。

----------------------------------------

|  ACTVT|LTEXT                            |

----------------------------------------

|  01   |创建或生成                         |

|  02   |更改                                  |

|  03   |显示                                  |

|  04   |打印、编辑消息                    |

|  05   |锁定                                  |

|  06   |删除                                  |

|  07   |激活,生成                          |

|  08   |Display change documents  |

|  09   |显示价格                             |

|  10   |过帐                                   |

|  11   |修改数值范围状态                  |

|  12   |维护并生成修改文档               |

|  13   |初始化数量级别                     |

|  14   |字段选择: 生成屏幕                |

|  15   |字段选择: 赋值表                   |

|  16   |执行                                    |

|  17   |维护编号范围对象                   |

|  18   |从 coll. 程序交货                    |

|  19   |coll. proc 的发票                   |

|  20   |无翻译传输                           |

|  21   |传输                                    |

|  22   |输入,包括, 分配                     |

|  23   |维护                                   |

|  24   |归档                                   |

|  25   |Reload                               |

|  26   |修改客户帐号组                       |

|  27   |Display totals records        |

|  28   |显示行项目                         |

|  29   |显示存储数据                        |

|  30   |决定                            |

|  31   |确认                            |

|  32   |保存                            |

|  33   |读                             |

|  34   |写                             |

|  35   |输出                            |

|  36   |扩展维护                          |

|  37   |接受                            |

|  38   |完成                            |

|  39   |检查                            |

|  40   |在 DB 中创建                      |

|  41   |在 DB 中删除                      |

|  42   |转换到 DB                        |

|  43   |释放                            |

|  44   |标记                            |

|  45   |允许                            |

|  46   |Merge                         |

|  47   |借位                            |

|  48   |模拟                            |

|  49   |请求                            |

|  50   |移动                            |

|  51   |Initialize                    |

|  52   |修改应用程序开始                      |

|  53   |显示应用开始                        |

|  54   |显示应用档案                        |

|  55   |修改应用程序归档                      |

|  56   |显示档案                          |

|  57   |保存档案                          |

|  58   |显示接管                          |

|  59   |分配                            |

|  60   |输入                            |

|  61   |输出                            |

|  62   |创建自动分帐目                       |

|  63   |激活                            |

|  64   |生成                            |

|  65   |重新组织                          |

|  66   |刷新                            |

|  67   |翻译                            |

|  68   |模块                            |

|  69   |放弃                            |

|  70   |管理员                           |

|  71   |分析                            |

|  72   |计划                            |

|  73   |Execute Digital Signature     |

|  74   |撤回批准                          |

|  75   |移去                            |

|  76   |输入                            |

|  77   |预输入                           |

|  78   |分配                            |

|  79   |Assign Role to Composite Role |

|  80   |Print                         |

|  81   |调度                            |

|  82   |补充                            |

|  83   |对方确认                          |

|  84   |结算                            |

|  85   |转换                            |

|  86   |Rebook                        |

|  87   |返回                            |

|  88   |完成                            |

|  89   |Subscribe                     |

|  90   |复制                            |

|  91   |重新激活                          |

|  92   |Create from Template          |

|  93   |计算                            |

|  94   |Override                      |

|  95   |解锁                            |

|  96   |Reject                        |

|  97   |设置                            |

|  98   |下达标记                          |

|  99   |生成发票清单                        |

|  A1   |Accrue                        |

|  A2   |工资                            |

|  A3   |修改状态                          |

|  A4   |重新提交                          |

|  A5   |显示报表                          |

|  A6   |用筛选器读取                        |

|  A7   |用筛选器写入                        |

|  A8   |处理大量数据                        |

|  A9   |发送                            |

|  AA   |Print Again                   |

|  AB   |结算                            |

|  B1   |显示许可值                         |

|  B2   |技术性完成                         |

|  B3   |导出                            |

|  B8   |再次执行                          |

|  B9   |Post Parked Document          |

|  BD   |维护对象在非属主系统                    |

|  BE   |IMG 项目                        |

|  C1   |支付卡维护                         |

|  C2   |支付卡显示                         |

|  C3   |手工权限维护                        |

|  C4   |Develope Payment Card         |

|  C5   |Reopen                        |

|  C8   |确认更改                          |

|  D1   |复制                            |

|  DL   |下载                            |

|  DP   |删除计划                          |

|  E0   |保存摘录                          |

|  E6   |删除自有摘录                        |

|  E7   |删除文本摘录                        |

|  EP   |Prioritise extract            |

|  FP   |修改客户自动选项                      |

|  G1   |Maintain Budget               |

|  G2   |Billing                       |

|  G3   |Maintain Overhead Costs       |

|  G4   |Maintain Reevaluation         |

|  G5   |Park                          |

|  G6   |Transfer Budget               |

|  G7   |Reverse                       |

|  GL   |一般总览                          |

|  H1   |Deactivate                    |

|  H2   |Activate Logging              |

|  H3   |Deactivate Logging            |

|  KA   |激活布告                          |

|  KI   |Knock In                      |

|  KO   |Knock Out                     |

|  KS   |冲销布告                          |

|  KU   |Give notice                   |

|  L0   |All functions                 |

|  L1   |函数范围级 1                       |

|  L2   |函数范围级 2                       |

|  LM   |Change LDAP Mapping           |

|  LS   |Change LDAP Sync. Switch      |

|  MA   |Deactivate mod.assistant      |

|  P0   |Accept CCMS CSM data          |

|  P1   |Edit CCMS CSM data            |

|  P2   |Maintain CCMS CSM methods     |

|  P3   |Register CCMS CSM remote systm|

|  PA   |Open period                   |

|  PB   |Close period                  |

|  PC   |Open Consolid. Grp Processing |

|  PD   |Close Consolid. Unit Processng|

|  PP   |Set as productive             |

|  PU   |Publish                       |

|  RS   |Send to New Recipient         |

|  S1   |编辑模板                          |

|  S2   |Edit specification            |

|  SO   |Edit in Sourcing              |

|  SZ   |Assign Switch Framework Switch|

|  U2   |比较业务量                         |

|  U3   |更改业务量比较                       |

|  U4   |添加业务量数据                       |

|  UL   |上载                            |

|  V1   |Create version                |

|  V2   |Change Version                |

|  V3   |Display Version               |

|  V4   |Delete Version                |

|  V5   |Transport Version             |

|  V6   |Delete Version Header         |

|  VE   |Create an Enhancement ID      |

|  VF   |Expired                       |

----------------------------------------

sy-subrc 一些重要返回值如下:

  0:  用户权限检查通过.
  4:  用户权限不足.
  8:  参数的数量不正确.
  12:  权限对象不存在. 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: