http://blog.sina.com.cn/s/blog_a87b19300102whnz.html
http://www.cnblogs.com/mingdashu/p/authority-check.html
學習總結,分享給大家,,,(有圖有真像)
我在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的方式,以下。
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: 權限對象不存在.