在CDS(Core Data Services)中使用DCL(Data Control Language)
?
最近,我在玩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)?
?
轉載于:https://www.cnblogs.com/hhelibeb/p/6647178.html
總結
以上是生活随笔為你收集整理的在CDS(Core Data Services)中使用DCL(Data Control Language)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android Studio下项目构建的
- 下一篇: servlet和jsp中间的交互