sap資料--sap許可權解剖(二)

oncefly發表於2010-12-23

直觀的說,許可權就是“某人能幹某事”和“某人不能幹某事”之合。在SAP系統中,用事務碼(也稱交易程式碼、或者TCODE、或者Transaction Code)表示一個使用者能幹的事情。比如MM01這個TCODE是用來維護物料資料的、MIGO是用來收貨的、FS00是用來維護會計科目的等。

  用SU01新建一個ID時,預設的許可權是空白,即這個新建的ID不能做任何事情,不能使用任何事務程式碼。這樣只需要為相應的ID賦上相應的TCODE,即可實現“某人能幹某事”了,其補集,則是“某人不能幹的某些事”。

[@more@]  但是我們不能直接在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.

  結語:

  本文僅對系統本身做了技術性敘述,並未結合業務實際,但是我們有勾勒出了一個大致的許可權矩陣,縱向是操作人(ID),橫向是某些許可權物件,許可權物件再細分成若干事務程式碼、允許動作、許可權欄位及其允許的值等。

  而實際業務中是否需要將許可權劃分的如此細緻,完全取決於某領導的喜好、跳不過的律法、和企業內部的規章制度。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30745/viewspace-1043526/,如需轉載,請註明出處,否則將追究法律責任。

相關文章