實例:ABAP權限對象設計與權限檢查的實現(詳細)

創建權限對象,使分配這個權限的用戶只能操作部門編號(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(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中。

----------------------------------------
|  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 'ZEMPDEPT' FIELD P_DEPT
              ID 'ACTVT'  FIELD '03'.

sy-subrc 一些重要返回值如下:
  0:  用戶權限檢查通過.
  4:  用戶權限不足.
  8:  參數的數量不正確.
  12:  權限對象不存在.

762827-20151202162817299-589829445.pnguploading.4e448015.gif轉存失敗重新上傳取消

創建權限對象,使分配這個權限的用戶只能操作部門編號(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(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中。

----------------------------------------
|  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 'ZEMPDEPT' FIELD P_DEPT
              ID 'ACTVT'  FIELD '03'.

sy-subrc 一些重要返回值如下:
  0:  用戶權限檢查通過.
  4:  用戶權限不足.
  8:  參數的數量不正確.
  12:  權限對象不存在.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章