实例:ABAP权限对象设计与权限检查的实现(详细)

来源:互联网 发布:淘宝上怎么设置折扣 编辑:程序博客网 时间:2024/06/05 09:57


创建权限对象,使分配这个权限的用户只能操作部门编号(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的方式,以下。

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

4.创建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(00WITH '您没有权限查看此数据' 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中。

----------------------------------------
 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                       |
----------------------------------------

PS:    AUTHORITY-CHECK OBJECT 'ZEMPOBJ00'
              ID 'ZEMPDEPTFIELD P_DEPT
              ID 'ACTVT FIELD '03'.

sy-subrc 一些重要返回值如下:
  0:  用户权限检查通过.
  4:  用户权限不足.
  8:  参数的数量不正确.
  12:  权限对象不存在.

创建权限对象,使分配这个权限的用户只能操作部门编号(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的方式,以下。

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

4.创建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(00WITH '您没有权限查看此数据' 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中。

----------------------------------------
 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                       |
----------------------------------------

PS:    AUTHORITY-CHECK OBJECT 'ZEMPOBJ00'
              ID 'ZEMPDEPTFIELD P_DEPT
              ID 'ACTVT FIELD '03'.

sy-subrc 一些重要返回值如下:
  0:  用户权限检查通过.
  4:  用户权限不足.
  8:  参数的数量不正确.
  12:  权限对象不存在.

0 0
原创粉丝点击