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

    xiaoxiao2025-10-15  4

    创建权限对象,使分配这个权限的用户只能操作部门编号(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:  权限对象不存在.

    转载请注明原文地址: https://ju.6miu.com/read-1303165.html
    最新回复(0)