如何在SAP Cloud for Customer自定義BO中建立訪問控制
1. C4C中的訪問控制有兩種方式
- RelevantForAccessControl
- AccessControlContext
2. 要使用訪問控制,必須滿足下面條件
- 每一個業務物件(BO),只能存在唯一一個訪問控制.
- 與之關聯的源節點必需是業務物件(BO)的根(Root)節點
- 對於RelevantForAccessControl,它所關聯的節點也必須是根節點(Root).
- 對於RelevantForAccessControl,它所關聯的節點,必須存在訪問控制.檢視方法可以進studio中的Repository Explorer,點選物件檢視.在業務物件(BO)文件中的Supported Access Contexts中檢視.
- 對於AccessControlContext.,它是通過UUID做訪問控制的,所以定義的元素必定要與UUID相關.
如何建立BO我們這裡不再論述, 這編文章重點講解的是C4C中的控制的執行原理.
語法
1. RelevantForAccessControl
這個關鍵詞的語法是
[RelevantForAccessControl] association toBusinessPartner to BusinessPartner;
2. AccessControlContext
這個關鍵詞的語法是
[AccessControlContext (Employee)] element UID : UUID; [AccessControlContext (Employee)] association ToEmployee to AP.FO.BusinessPartner.Global:Employee using UUID ;
建立訪問控制
下面我們以AccessControlContext為例,看看C4C的訪問控制是如何動作的.
第一步,在我們建立的BO中新增訪問控制欄位
[AccessControlContext(SalesOrganization)] association toOrganisationalUnit to OrganisationalUnit using UUID;
在BeforeSave中把上面訪問控制欄位的值新增上.
啟用並生成螢幕
第二步..開啟WCView螢幕檔案,開啟屬性皮膚
更改AccessContextCode屬性為9001-PDI:SalesOrganisation
這步非常重要,而且必須是訪問控制欄位相對應的訪問控制程式碼
下面是個人收集的訪問控制欄位與訪問控制程式碼表
如果這一步設定錯誤,訪問控制不會生效,詳細我會在後面說.
第三步.更改WCView下面包括的子螢幕的訪問許可權,例如(QC,OWL,TI)
開啟其中的Access Controlled Business Object
把Unrestricted Access設定為False
這一步也是非常重要,如果不把Unrestricted Access設定為False的話,螢幕中的欄位是不會繼承WCView中設定的訪問控制屬性的.
第四步.更改OWL頁面中的Query,讓他繫結帶有SAP_AccessControlList的Query
QueryByElements或者自定義的Query都可以.
做完以上部署後,系統就能使訪問控制生效了,之後要做的事情就是把WCView分配給角色,然後設定訪問控制許可權.
訪問控制的工作原理
當我們在Business Object中建立完訪問控制欄位並啟用後
系統會給該BO增加一個新的Dependent Node
AccessControlList中包含下面欄位
上圖來自SAP社群部落格
Implementing Access Control on Custom Business Objects
。
其中最重要的兩個欄位是ACCESS_CONTEXT_CODE和OBJECT_UUID-CONTENT
- ACCESS_CONTEXT_CODE中儲存了該BO資料的訪問控制程式碼
- OBJECT_UUID-CONTENT中儲存了該BO資料的訪問控制內容
當我們儲存時, AccessControlContext中關聯的值被填充上,然後系統會把關聯中的UUID值儲存到SAP_AccessControlList中的OBJECT_UUID-CONTENT, AccessControlContext括號內的物件會轉化為CODE,存放到SAP_AccessControlList中的ACCESS_CONTEXT_CODE.
轉化的CODE是根據上表中的值來轉化的.所以上在第二部的WCView中的AccessContextCode值不能亂選.不然對不上的話,訪問控制是不會生效的.
當我們在系統中為使用者分配訪問許可權時,系統會為每個使用者訪問每個業務物件生成一個表
只有當使用者的訪問許可權中的資料與BO中的SAP_AccessControlList中的OBJECT_UUID-CONTENT匹配,使用者才能看到該條資料.
Tips 1
如果我們在系統中建立了多個訪問控制欄位,系統只會以最後一條訪問控制欄位
例如這裡,有兩個訪問控制欄位,一個是Employee(1010),另一個是SalesOrganisation(9001),當出現多個訪問控制欄位時,系統只會以最後出現的訪問控制欄位為主.
Tips 2
別忘了設定其它相關的螢幕(QC,TI,QAF,OWL),不然這些螢幕就不受訪問控制欄位影響了,會看到系統中所有資料.
Tips 3
假設變更了訪問控制型別後,那麼之前設定的訪問控制欄位是不受新的訪問控制型別影響的,解決方法是進去變更之前的資料中更改任何資料,然後儲存.
Tips 4
PDI USER賬號是個神奇的賬號,他是不會受到ACL影響的唯一賬號,所以如果遇到ACL的一些問題,不防試試使用PDI USER去測試一下.
參考文章
- Access Control Management: How to analyze access control issues – Check User’s Authorization
- Implementing Access Control on Custom Business Objects
- Instance Based Access Control
要獲取更多Jerry的原創技術文章,請關注公眾號"汪子熙"
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2654202/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何在SAP Cloud for Customer中建立基於Opportunity的Registered ProductCloudUnity
- SAP Cloud for Customer裡BusinessPartner, Customer和Employee這些BO的區別Cloud
- 如何給SAP Cloud for Customer UI上的欄位新增自定義校驗邏輯CloudUI
- SAP Cloud for Customer使用移動裝置訪問系統的硬體要求Cloud
- SAP Cloud for Customer的前世今生Cloud
- SAP Cloud for Customer Account和individual customer的區別Cloud
- 如何用SAP Cloud for Customer的手機App建立銷售訂單CloudAPP
- 如何啟用SAP C4C自定義BO的Text Collection功能
- SAP CRM和Cloud for Customer裡的Formatted Text控制元件的比較CloudORM控制元件
- 如何建立HTML Mashup並插入到SAP Cloud for Customer標準頁面裡HTMLCloud
- 機器學習在SAP Cloud for Customer中的應用機器學習Cloud
- SAP HANA Cloud 學習教程之一: 如何在 SAP BTP 上建立 SAP HANA Cloud 例項Cloud
- SAP Cloud for Customer Price-計價簡介Cloud
- SAP Cloud for Customer的Mashup位於CustomPane裡Cloud
- 如何使用SAP Cloud for Customer裡的Data SourceCloud
- SAP Cloud for Customer 標準培訓課程Cloud
- SAP Analytics Cloud和Cloud for Customer之間的Single Sign on配置Cloud
- SAP CRM和Cloud for Customer中的Event handler(事件處理器)Cloud事件
- 如何把SAP Kyma和SAP Cloud for Customer連線起來Cloud
- 如何讓SAP C4C自定義BO實現附件上傳的功能
- 如何在Mac上訪問任務控制Mac
- SAP Cloud for Customer Extensibility的設計與實現Cloud
- SAP Cloud for Customer的Container應用設計原理CloudAI
- SAP Cloud for Customer ABSL的一些優化Cloud優化
- SAP Cloud for Customer的CTI呼叫中心解決方案Cloud
- 使用soapUI消費SAP Cloud for Customer的web serviceUICloudWeb
- SAP Cloud for Customer框架是如何使用JavaScript Promise的Cloud框架JavaScriptPromise
- 在 SAP Business Application Studio 裡訪問 SAP HANA Cloud 例項APPCloud
- SAP 電商雲 Spartacus UI 同 SAP Customer Data Cloud 的整合UICloud
- 如何在SAP S4HANA Cloud系統裡建立employeeCloud
- 如何在SAP Cloud for Customer裡開發具有依賴關係的互動下拉選單Cloud
- SAP Cloud for Customer和SAP Fiori系統裡的OData測試工具Cloud
- 使用nodejs消費SAP Cloud for Customer上的Web serviceNodeJSCloudWeb
- SAP Cloud for Customer的Account Team裡的role如何配置Cloud
- 使用Excel匯入資料到SAP Cloud for Customer系統ExcelCloud
- 如何在macOS中建立訪客帳戶Mac
- Swift 中的訪問控制Swift
- SAP Commerce Cloud 新一代 UI Spartacus 和 Customer Data cloud 的整合CloudUI