最近,我在玩ABAP CDS視圖,並且遇到了一些權限方面的挑戰。我在網上沒看到有多少有關CDS開發的文檔,因為它是個相當新的東西。因此,我決定寫下這篇博客,也許我的想法可以幫助到一些人。
和你已經意識到的一樣,ABAP CDS視圖跑在ABAP層,而且不受限於SAP HANA(也就是不存在這樣的數據庫依賴)。ABAP CDS有它自己的、基於角色的權限概念。角色通過DCL源代碼中的DEFINE ROLE定義。
這里是一個基本的CDS視圖,它有數據目錄“dimension”:
當我在HANA STUDIO中運行CDS視圖的時候,我觀察到這個查詢沒有抓取到成本中心數據。為什么?
每個CDS視圖都在SE11中有它相對應的SQL視圖。在上面的例子中。IFICostCenter是DDL I_CostCenter的SQL視圖。
這里有一個找到這些對象定義所在的包的簡單方法,
前往SE11輸入視圖,IFICostCenter >顯示:
你可以在這里找到包名(上圖高亮的部分)。
現在打開HANA Studio,把這個包添加到你的包收藏夾文件夾。
一旦添加到了你的收藏夾,展開Core Data Services然后你就可以在數據定義文件夾看到DDL源代碼,以及在訪問控制文件夾看到DCL源。
這里是一個成本中心CDS視圖的DCL源的例子。
注意:DDL和DCL的名字必須一致。
權限在DCL源中執行了。我們應該確保權限對象K_CSKS在后端被分配到用戶(在我使用的S/4 HANA 1511中是這樣的)。
將權限檢查對象授予給用戶之后,可以看到成本中心數據了,Bingo!
注意:actvt 是操作代碼。在該情況下,應該是03——顯示。
注釋@AccessControl.authorizationCheck: #CHECK 會強制進行權限檢查。
如果使用 #NOT_REQUIRED 或 #NOT_ALLOWED,權限檢查會被忽略。
希望本文對你有幫助。
本文鏈接:http://www.cnblogs.com/hhelibeb/p/6647178.html
英文原文:Wonder how Data Control Language (DCL) works with ABAP Core Data Services (CDS)?