SAP权限对象文集
SAP權(quán)限對象文集
SAP的權(quán)限是通過授權(quán)對象來控制的,所有的事務碼、角色等最終反映在系統(tǒng)中都是授權(quán)對象。在SAP中運行事務碼時,系統(tǒng)首先會檢查S_TCODE這個授權(quán)事務中是否有指定的事務碼,如果有,你才能使用這個TCODE。但這里通過后,并不代表你可以將所要操作的業(yè)務進行完畢,在不同的地方,系統(tǒng)還會檢查其他的授權(quán)對象,比如在操作到與會計憑證的公司代碼相關(guān)的事務時,系統(tǒng)會檢查f_bkpf_buk 這個授權(quán)對象,只有這個檢查通過后,才能繼續(xù)往下走。
系統(tǒng)檢查授權(quán)對象的代碼一般為:
AUTHORITY-CHECK OBJECT f_bkpf_buk for user zhangsan01
ID 'ACTVT' FIELD act_hinz
ID 'BUKRS' FIELD bkpf-bukrs.
IF sy-subrc NE 0.
MESSAGE e083 WITH bkpf-bukrs.
ENDIF.
這個語句檢查的是張三(zhangsan01)是否有f_bkpf_buk這個授權(quán)對象的權(quán)限,如果不要for user zhangsan01,則表示檢查當前用戶的權(quán)限。
注意這里只檢查授權(quán)對象,沒有單一角色和復合角色,也就是說雖然我們給用戶分配了很多角色,但系統(tǒng)最終檢查的是這些角色的授權(quán)對象,而且是不分角色的授權(quán)對象。這樣就會造成權(quán)限重疊的情況。
比如張三有A公司憑證查看的權(quán)限,又有B公司憑證過帳的權(quán)限,如果他同時還有S_TCODE:FB01的授權(quán)對象,這時候他就是有A、B兩家公司的過帳和查看權(quán)限。所以,分配權(quán)限的時候得注意了。
使用事務碼SE93查看權(quán)限對象;
添加完事務碼后沒有帶出授權(quán)對象,就是因為這個事務碼下沒有包含權(quán)限對象
用SU01新建一個ID時,默認的權(quán)限是空白,即這個新建的ID不能做任何事情,不能使用任何事務代碼。這樣只需要為相應的ID賦上相應的TCODE,即可實現(xiàn)“某人能干某事”了,其補集,則是“某人不能干的某些事”。
但是我們不能直接在SU01里面給某個ID賦上TCODE,要通過ROLE中轉(zhuǎn)一下。即:一堆TCODE組成了一個ROLE,然后把這個ROLE分給某個ID,然后這個ID就得到一堆TCODE了。
上面這些,僅僅是SAP權(quán)限控制的初級概念,要理解SAP權(quán)限控制的全部,必須還要明白下面的概念。
1、角色(ROLE)、復合角色
上面講了,角色,即ROLE,是一堆TCODE的集合,當然還包含有TCODE必備的“權(quán)限對象”、“權(quán)限字段”、“允許的操作”及“允許的值”等。我們使用PFCG來維護角色。
一個復合角色可以包含多個單個的角色。
具體請看下面的概念。
2、權(quán)限對象(Authorization Object)、權(quán)限字段(Authorization Field)、允許的操作(Activity)、允許的值(Field Value)
上文粗略說了構(gòu)成ROLE的是若干TCODE。其實,在ROLE和TCODE之間,還有一個中間概念“權(quán)限對象”:
角色包含了若干權(quán)限對象,在透明表AGR_1250中有存儲二者之間的關(guān)系;
權(quán)限對象包含了若干權(quán)限字段、允許的操作和允許的值,在透明表AGR_1251中體現(xiàn)了ROLE/Object/Field/Value之間的關(guān)系;
有一個特殊的權(quán)限對象用來包含了若干事務碼。這個權(quán)限對象叫“S_TCODE”,該權(quán)限對象的權(quán)限字段叫“TCD”,該字段允許的值(Field Value)存放的就是事務代碼;
有一種特殊的權(quán)限字段用來表示可以針對該權(quán)限對象做哪些操作,是允許創(chuàng)建、修改、顯示、刪除或者其他呢。該權(quán)限字段叫“ACTVT”,該字段允許的值(Field Value)存放的就是允許操作的代碼,01代表創(chuàng)建、02代表修改、03代表顯示等;
SAP的權(quán)限控制是控制到字段級的,換句話說,其權(quán)限控制機制可以檢查你是否有權(quán)限維護某張透明表的某一個字段。
SAP系統(tǒng)自帶了若干權(quán)限對象、默認控制了若干權(quán)限字段(對應到透明表的某些字段)??梢杂檬聞沾aSU20來查看系統(tǒng)有哪些權(quán)限字段,用SU21來查看系統(tǒng)有哪些默認的權(quán)限對象。
于是我們知道了事務代碼與權(quán)限對象的區(qū)別。從權(quán)限控制的范疇來看,事務代碼屬于一種特殊的權(quán)限對象;一個事務代碼在執(zhí)行過程中,為了判斷某個ID是否有權(quán)限執(zhí)行此事務代碼,還可能檢查其他若干普通的權(quán)限對象。使用SU22來查看某個事務代碼包含了哪些權(quán)限對象。在透明表USOBX中,存放了事務碼與權(quán)限對象的對應關(guān)系。
3、自定義權(quán)限對象
上文所說的系統(tǒng)自帶權(quán)限對象與權(quán)限字段僅能滿足有限的需要,其權(quán)限審核的邏輯也是系統(tǒng)硬編碼了的,我們能做的只是是否啟用某項權(quán)限對象的檢查(使用SU22)。如果需要自定義,通過SU20、SU21定義即可。
authority-check后的SY-SUBRC返回值的不同也代表著不同的意思,這里稍微歸總一下:
0
權(quán)限check成功
4
用戶無這樣的權(quán)限
8
在寫ABAP authority-check時,指定太多的ID(最多只能有10個)
12
用戶信息中不存在這樣的authority object
16
用戶信息中不存在這樣的profile
24
指定的fild名字與authority-object中ID需要的field不匹配
28
用戶信息不正確
32
用戶信息不正確
36
用戶信息不正確
1.su20 創(chuàng)建權(quán)限對象字段 例子: ZPOWERFLD1
創(chuàng)建權(quán)限對象字段(存儲在AUTHX表中),指定表中的數(shù)據(jù)元素。
2.su21 創(chuàng)建權(quán)限對象類和權(quán)限對象 例子:對象類:選擇了默認的WG零售 對象:ZPOWER1
創(chuàng)建權(quán)限對象類別(存儲在TOBCT表中)
點擊對象類別創(chuàng)建權(quán)限對象(存儲在TOBJ表中),生成SAP_ALL,創(chuàng)建的時候需要填寫權(quán)限對象字段,還可以加上ACTVT,ACTVT中有很多的值,如02修改,03一般為顯示權(quán)限
需要馬上生效,點擊左上角SAP_ALL
3.su01 生成參數(shù)文件 例子:ZAUTOPROF
環(huán)境-維護參數(shù)文件 輸入?yún)?shù)文件名,點擊創(chuàng)建參數(shù)文件的工作區(qū)-進入后新建-進入后輸入權(quán)限對象和權(quán)限(自己起名字,例:ZAUTHO),雙擊ZAUTHO,可對權(quán)限對象下的權(quán)限字段的值進行設置(程序中輸入的值要在這個值域),注意激活
4.pfcg為角色分配權(quán)限 例子:ZROLEA
新建權(quán)限角色,第二欄為菜單,可以添加事務碼(可以選擇1.添加標準 or 2.報表,本例子選2),第三欄為權(quán)限,輸入剛建立的參數(shù)文件,點擊更改授權(quán)數(shù)據(jù),也可以看到設置的值,最后點擊生成(即:皮球),第4欄為用戶,輸入想要設置權(quán)限的用戶,指定有效期。
5.su01 添加參數(shù)文件和角色給用戶
參數(shù)標簽輸入?yún)?shù)文件,角色標簽輸入剛建的角色。
6.程序中書寫 例子: Z_AUTHORITY_TEST
在程序中加上類似代碼:
REPORT Z_AUTHORITY_TEST.
DATA: L_STR(30) TYPE C.
SELECTION-SCREEN BEGIN OF BLOCK B3 .
SELECTION-SCREEN COMMENT 1(10) TEXT-003.
PARAMETERS:P_CARRID LIKE SPFLI-CARRID.
SELECTION-SCREEN END OF BLOCK B3.
AT SELECTION-SCREEN.
"su21 新建WG對象類下的ZPOWER1授權(quán)對象 ,將su20創(chuàng)建的ZPOWERFLD1給授權(quán)對象
AUTHORITY-CHECK OBJECT 'ZPOWER1'
"su20 ZPOWERFLD1 授權(quán)對象字段,對應的是SPFLI-SCARR
ID 'ZPOWERFLD1' FIELD P_CARRID .
IF SY-SUBRC <> 0.
CONCATENATE P_CARRID '您沒有權(quán)限!' INTO L_STR.
MESSAGE L_STR TYPE 'E'.
EXIT.
ENDIF.
7.su24 查找一個事務的授權(quán)對象
在SU24中為事務碼添加權(quán)限對象,一般在se93中添加的那一個權(quán)限對象會在你點擊事務碼之后自動出現(xiàn)
若是事務碼有多個權(quán)限控制對象,需要自
在項目中,難免要使用到自定義的權(quán)限對象,如對利潤中心的檢查,找了好久,沒有看到,于是,我就自己建了一個
剛開始不懂,到處查資料,分為幾個步驟,如下:
1.su20
創(chuàng)建權(quán)限對象字段(存儲在AUTHX表中)
2.su21 創(chuàng)建權(quán)限對象
創(chuàng)建權(quán)限對象類別(存儲在TOBCT表中)
點擊對象類別創(chuàng)建權(quán)限對象(存儲在TOBJ表中),生成SAP_ALL
這里創(chuàng)建的時候需要填寫 權(quán)限對象字段,還可以加上ACTVT,ACTVT中有很多的值,如03一般為顯示權(quán)限
需要馬上生效,點擊SAP_ALL
3.程序中書寫
在程序中加上類似代碼:
authority-check object 'V_VBKA_VKO'
id 'VKORG' p_vkorg
id 'ACTVT' '03'.
4.su24
在SU24中為事務碼添加權(quán)限對象,一般在se93中添加的那一個權(quán)限對象會在你點擊事務碼之后自動出現(xiàn)
若是事務碼有多個權(quán)限控制對象,需要自己手動添加另外的權(quán)限對象。
權(quán)限對象中有四個標識:
? U C CM
當權(quán)限對象對應的是C或CM時,控制有效。他們之間的區(qū)別在于,CM在PFCG分配權(quán)限時會自動帶出來,C標記的需要手工分配。
5.pfcg為角色分配權(quán)限
這是屬于BASIS的部分,但是開發(fā)人員需要了解。選擇需要修改的權(quán)限角色,第二欄為權(quán)限,可以添加事務碼,之后在更改用戶權(quán)限里面,點擊授權(quán)對象,這時,前面為CM標記的權(quán)限對象會出現(xiàn),標記為C的不會出現(xiàn),需要手動分配。
6.待分析,se93. se93主要用于分配程序的事務碼,這個地方值得注意的就是一般的報表程序都選擇第二項。。。否則在程序運行的時候,點擊執(zhí)行,界面就會消失~~這里也有分配權(quán)限對象,但是只能填一個,不知道如何處理。
部分參照:http://silverw0396.**.com/blog/90671
總結(jié)
- 上一篇: ubuntu18.04下安装Anacon
- 下一篇: 趋势科技防毒墙网络版的卸载方法