小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

作為ABAP程序員怎么在HANA時代生存?

 一騎當千_30 2018-04-22

在傳統(tǒng)的ECC系統(tǒng)中ABAP程序可以使用OpenSQL來操作關系型數(shù)據(jù)庫,那么在HANA時代,程序是怎么操作HANA數(shù)據(jù)庫,尤其是實現(xiàn)HANA的特性的呢?其中很重要的一個功能就是CDS,S/4HANA大量應用都采用CDS來實現(xiàn)數(shù)據(jù)讀取。

什么是CDS呢?

CDS是Core data services的簡寫,通過使用數(shù)據(jù)定義語言DDL,查詢語言QL,表達式語言EL,來實現(xiàn)對HANA數(shù)據(jù)庫的操作。

CDS提供了遠遠超出傳統(tǒng)數(shù)據(jù)建模工具的功能,CDS提供了概念建模、關聯(lián)定義、內(nèi)嵌方法、和可擴展性等功能。起初CDS只是在SAP HANA數(shù)據(jù)庫的建模和運行時使用,現(xiàn)在CDS也實施于SAP NetWeaver AS ABAP層面,讓開發(fā)人員可以在ABAP層面使用ABAP開發(fā)工具創(chuàng)建CDS,然后運行時把業(yè)務邏輯放到數(shù)據(jù)庫層面來運行。

CDS是定義語義層面上的富數(shù)據(jù)模型,可以解釋為CDS視圖。CDS簡單的說可以讓開發(fā)者定義實體類型和它們之間的語義關系,比如在傳統(tǒng)實體關系模型中的外鍵關聯(lián),CDS通過基于SQL語句的DDL(數(shù)據(jù)定義語言)和其他一些概念比如associations關聯(lián),annotation注釋等。

類似于傳統(tǒng)ABAP世界里的DDIC(數(shù)據(jù)字典)的角色,基于CDS的數(shù)據(jù)模型是集中定義然后可以在不同領域使用,比如CDS既可以在事務性應用中使用,也可以在分析型應用中使用,可以通過統(tǒng)一的方式和數(shù)據(jù)庫進行交互。但是,CDS數(shù)據(jù)模型超出了DDIC的能力,DDIC一般是供事務型應用使用,CDS可以通過分層來聚合和分析數(shù)據(jù),比如開始的時候可以創(chuàng)建一個簡單的CDS視圖,然后基于這個CDS視圖再創(chuàng)建強大的CDS視圖。另外CDS提供UNION的特性,可以把多個SELECT語句的返回結(jié)果聚合到一個結(jié)果集中。

根據(jù)SAP的描述,CDS帶來了概念和實現(xiàn)兩個層面的集成。這是什么意思呢?我們舉個例子,比如我們打算查詢部門代碼是4711的部門所有員工的ID,姓名,家庭住址的郵政編碼。為了達到這個目的,我們可以使用下面的SQL語句來實現(xiàn)。

嗯。。。問題是,代碼邏輯和語義之間的差距,也就是業(yè)務顧問和程序員之間的技術差距。如果不是一個經(jīng)驗豐富的SQL程序員是很難理解這段SQL語句的,更不要是寫出來了。其實這個是很多IT公司招聘程序員的面試題??!這也就是CDS提出的初衷,怎么簡化這種程序語言和現(xiàn)實語義之間的差別。

好了,作為ABAP程序員,可以用OpenSQL改寫上面復雜的SQL語句,開發(fā)如下:

由于SQL代碼邏輯有點復雜,我們可以看到ABAP語句里面是一層循環(huán)套著一層循環(huán),顯而易見存在性能問題,這就引來了怎么優(yōu)化代碼,提升性能。這也是CDS創(chuàng)建初衷之一,優(yōu)化性能。

現(xiàn)在讓我們看看同樣的需求,在CDS中怎么實現(xiàn)。

用了CDS,不存在SQL的言不達意,也不存在ABAP的效率低下。

還不夠?這不足以打動你?你說,我們SE11同樣可以創(chuàng)建View啊,你CDS有啥了不起的?。磕悄阏娴男∏莆覀僀DS了,其實CDS遠遠強大于我上面提的兩點,CDS遠遠不止于創(chuàng)建一個視圖,而且是通過DDL來表達包括數(shù)據(jù)庫表、數(shù)據(jù)庫視圖和方法、數(shù)據(jù)類型的元模型庫。CDS其實是為了適應HANA數(shù)據(jù)庫而產(chǎn)生的,CDS包括兩種類型,HANA CDS和ABAP CDS,其中HANA CDS是在SAP HANA Studio中創(chuàng)建,運行于HANA數(shù)據(jù)庫,而ABAP CDS在ABAP應用服務器,HANA CDS只能運行于HANA數(shù)據(jù)庫,ABAP CDS不限于HANA數(shù)據(jù)庫。CDS還可以分為有參數(shù)CDS和無參數(shù)CDS。

HANA CDS和ABAP CDS的不同點。

HANA CDS 和ABAP CDS在視圖定義上有一些小的差異,他們都是基于DDIC(數(shù)據(jù)字典)在數(shù)據(jù)庫上創(chuàng)建的視圖,HANA CDS創(chuàng)建的實體類型必須基于數(shù)據(jù)庫表的DDIC定義,而 ABAP CDS可以引用數(shù)據(jù)庫表、視圖或者其他CDS視圖中的類型定義。

什么時候使用HANACDS什么時候選擇ABAP CDS?

當然如果項目中只是使用SAP HANA數(shù)據(jù)庫進行開發(fā),而不使用ABAP程序,那就理所當然的使用HANA CDS了。

如果想通過ABAP像使用數(shù)據(jù)字典中的數(shù)據(jù)類型一樣調(diào)用CDS或者用Open SQL來調(diào)用CDS,并且在ABAP層面解析CDS注釋的話,那么必須使用ABAP CDS;

如果不通過ABAP調(diào)用CDS,但是想要像ABAP代碼庫一樣管理CDS,比如transport和升級,那么也需要使用ABAP CDS;

排除上面兩種條件,不使用ABAP直接調(diào)用,那么最好用HANA CDS,畢竟原生態(tài),更好的集成于HANA數(shù)據(jù)庫,當然ABAP也可以調(diào)用,比如通過原生SQL語句(ADBC, AMDP)。

那么在SAP系統(tǒng)中怎么查看有哪些CDS視圖呢?

我們可以通過事務碼SE16查看表 TADIR 參數(shù): PGMID = ‘R3TR’, OBJECT = ‘DDLS’。然后知道了包名,我們就可以在ADT中查看ABAP CDS的源代碼了。

可以看到包名是:FINS_FIS_APAR_APPS

查看表DDLDEPENDENCY ,這里包含DDL源代碼的名稱,對象名稱也就是CDS的名稱。

在ADT中查看C_APMANUALPAYMENTS,

為了方便查看我們使用可視化界面:

CDS都有哪些元素呢?首先我們看一下開發(fā)環(huán)境的目錄結(jié)構:

可以看到CDS有兩部分:Access Control和Data Definition。Access Control相當于CDS的權限認證,CDS的權限管理具有自己的特點,如下圖:

定義角色來檢驗用戶是否有權限訪問對應的CDS View,如果沒有權限,也不會在SU53看到error message。

@EndUserText.label:'Auto assigned mapping role for P_Arbsitmonacc'

@MappingRole:true

這種標簽的注釋語言,不是沒有意義的,在編譯過程中會翻譯成對應的程序語言,達到對應的功能。

CDS包括兩部分DDL SQL View 和CDS View Entity,其中DDL SQL View是ABAP的數(shù)據(jù)字典,在SE11可以只讀;CDS View Entity是DDL的源文件,他是一個數(shù)據(jù)庫對象,在Eclipse, ADT或者SAP HANA Studio中創(chuàng)建和編輯,如下圖:

本文只是對CDS進行簡單的介紹,如果各位看官對CDS比較感興趣,可以自己查查資料,使用ADT或者HANA Studio進行開發(fā)嘗試。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多