2012-10-10 36 views
1

我想知道是否有機會創建依賴於用戶的BAdI實現?依賴於用戶的BAdI實現

我的意思是說:BAdI有不同的實現,這些實現根據記錄的用戶和調用特定事務調用。

其他情況是不爲該用戶調用某些實現並呼叫其他用戶。有這樣的機會嗎?

現在我使用的是簡單的檢查

IF sy-uname = 'username'. 

回答

4

新BAdIs允許GET BADI調用具有可在實現定義用來選擇不同的實現類的一個或多個FILTERS參數。但是這些過濾參數必須由調用BAdI的代碼提供。當標準代碼不提供用戶名作爲過濾器參數時,無法根據用戶名選擇實施類。

所以當你想爲不同的用戶使用不同的邏輯時,你需要在你的實現代碼中做到這一點。但使用用戶名來決定做什麼可能不是最容易維護的架構。

我猜爲什麼BAdI應該爲特定用戶行爲不同的原因是因爲該用戶在公司中有一些特殊的工作。當擁有這個職位的人改變了,或者當他得到一兩個其他人來幫助他們,或者他只是呼籲生病,而其他人必須去做他的工作時,你會做什麼?每當發生這種情況時,您是否想要傳輸程序更改?但還有其他選項:

  • 用戶組的不同行爲。您可以從數據庫表中讀取用戶組usr02(字段CLASS)
  • 權限不同的行爲。做一個AUTHORITY-CHECK,並根據成功使BADI行爲有所不同。
  • 用戶參數的不同行爲。要讀取程序中的用戶參數,請使用GET PARAMETER ID。用戶的參數可以由事務SU03中的管理員通過用戶自己用事務SU3(當他們有權這樣做的時候)或者以編程方式用SET PARAMETER ID來設置。
+1

而不是用戶參數,您應該使用個性化對象。它們允許更好的維護UI以及基於角色的分配。 – vwegert