实例:ABAP权限对象设计与权限检查的实现
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:? 權限對象不存在.?
總結
以上是生活随笔為你收集整理的实例:ABAP权限对象设计与权限检查的实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于SD单据的状态
- 下一篇: SAP 参照sto订单创建外向交货BAP