溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎樣實(shí)現(xiàn)SAP S/4HANA系統(tǒng)CDS view擴(kuò)展原理分析

發(fā)布時(shí)間:2021-12-31 10:18:29 來(lái)源:億速云 閱讀:271 作者:柒染 欄目:互聯(lián)網(wǎng)科技

這篇文章將為大家詳細(xì)講解有關(guān)怎樣實(shí)現(xiàn)SAP S/4HANA系統(tǒng)CDS view擴(kuò)展原理分析,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

創(chuàng)建擴(kuò)展字段后,我想從接口視圖中檢索它的數(shù)據(jù),就像I_產(chǎn)品一樣。也就是說(shuō),擴(kuò)展字段已經(jīng)在MARA中,我想通過(guò)I_產(chǎn)品而不是MARA使用它。

怎樣實(shí)現(xiàn)SAP S/4HANA系統(tǒng)CDS view擴(kuò)展原理分析

使用以下ABAP代碼時(shí),它不起作用:

```ABAP

數(shù)據(jù):I_產(chǎn)品的lt_表類型表。

從I_產(chǎn)品中選擇*INTO TABLE@lt_TABLE。

```

原因是

我_產(chǎn)品的SQL視圖中根本沒(méi)有相應(yīng)的擴(kuò)展字段。為什么?

只是因?yàn)镮_產(chǎn)品未啟用擴(kuò)展字段。

還應(yīng)在自定義字段邏輯磁貼中啟用:

(1). 選擇您的擴(kuò)展字段。

怎樣實(shí)現(xiàn)SAP S/4HANA系統(tǒng)CDS view擴(kuò)展原理分析怎樣實(shí)現(xiàn)SAP S/4HANA系統(tǒng)CDS view擴(kuò)展原理分析

(2). 選項(xiàng)卡UI和報(bào)告:

怎樣實(shí)現(xiàn)SAP S/4HANA系統(tǒng)CDS view擴(kuò)展原理分析

(3). 單擊“啟用使用”按鈕:

怎樣實(shí)現(xiàn)SAP S/4HANA系統(tǒng)CDS view擴(kuò)展原理分析

永遠(yuǎn)不要忘記發(fā)布您的更改。

一旦完成,它現(xiàn)在就可以工作了:

怎樣實(shí)現(xiàn)SAP S/4HANA系統(tǒng)CDS view擴(kuò)展原理分析怎樣實(shí)現(xiàn)SAP S/4HANA系統(tǒng)CDS view擴(kuò)展原理分析

我來(lái)解答這兩天我們討論的問(wèn)題。Key user 點(diǎn)了enable usage之后,如下圖這個(gè)例子,

怎樣實(shí)現(xiàn)SAP S/4HANA系統(tǒng)CDS view擴(kuò)展原理分析

為什么之后我們 SELECT * FROM I_PRPODUCTWD 就能把extension field一起select出來(lái),這些extension field不是做在E_PRODUCT上嗎? E_PRODUCT 是通過(guò)association和I_PRODUCTWD連接起來(lái)的,為什么select * 能夠把a(bǔ)ssociation view里的field一起讀出來(lái)?

首先,上述紅色的說(shuō)法就是錯(cuò)誤的,extension field并不是通過(guò)association從E_PRODUCT里讀的. 我們要明確我們點(diǎn)enable usage的出發(fā)點(diǎn)是某個(gè)具體的extension field, 而不是從CDS view出發(fā)。選擇了具體的extension field之后,再選擇要extend的CDS view,點(diǎn)擊publish,此時(shí)將會(huì)自動(dòng)創(chuàng)建一個(gè)帶有當(dāng)前extension field的extension view,對(duì)選中的CDS extensible view進(jìn)行擴(kuò)展。這樣造成的結(jié)果是,從SE11里觀察SQL view能發(fā)現(xiàn)extension field會(huì)通過(guò)append的方式直接成為extensible view的一部分,這之后和E_PRODUCT再無(wú)任何關(guān)系。

比如這個(gè)extension view 在點(diǎn)publish時(shí)是什么時(shí)候生成的?

怎樣實(shí)現(xiàn)SAP S/4HANA系統(tǒng)CDS view擴(kuò)展原理分析

你可以自己debug,在這個(gè)方法里設(shè)個(gè)斷點(diǎn),然后點(diǎn)publish,你會(huì)發(fā)現(xiàn)publish時(shí),有10個(gè)object會(huì)自動(dòng)生成,其中第三個(gè)就是上面圖里的extension view.

怎樣實(shí)現(xiàn)SAP S/4HANA系統(tǒng)CDS view擴(kuò)展原理分析怎樣實(shí)現(xiàn)SAP S/4HANA系統(tǒng)CDS view擴(kuò)展原理分析怎樣實(shí)現(xiàn)SAP S/4HANA系統(tǒng)CDS view擴(kuò)展原理分析怎樣實(shí)現(xiàn)SAP S/4HANA系統(tǒng)CDS view擴(kuò)展原理分析

那框架咋知道我這個(gè)extension field在publish時(shí)要生成這10個(gè)東西?

答案還是在registry里:

怎樣實(shí)現(xiàn)SAP S/4HANA系統(tǒng)CDS view擴(kuò)展原理分析

如果想研究具體框架的generation實(shí)現(xiàn),看這個(gè)class,里面每個(gè)sub class負(fù)責(zé)一種特定的repository generation實(shí)現(xiàn),

怎樣實(shí)現(xiàn)SAP S/4HANA系統(tǒng)CDS view擴(kuò)展原理分析

其中CL_CFD_ENH_CDS_ENH_ABSTRACT又包含了所有CDS view相關(guān)的generation邏輯,里面又分了三種不同的類型。

怎樣實(shí)現(xiàn)SAP S/4HANA系統(tǒng)CDS view擴(kuò)展原理分析

所有這些協(xié)同工作,最后確保從application developer的眼里,看到extension field在design time時(shí)即出現(xiàn)在extensible view本身。額外補(bǔ)充一點(diǎn)哈。

E_PRODUCT一個(gè)最主要的目的就是為了register使用,同時(shí)在創(chuàng)建custom field時(shí)點(diǎn)publish時(shí),能夠自動(dòng)生成一個(gè)E_Product的extension view。

如下圖。當(dāng)然在此之前需要先去自動(dòng)擴(kuò)展Product table的這個(gè)字段,這也是在點(diǎn)publish時(shí)自動(dòng)完成的。

怎樣實(shí)現(xiàn)SAP S/4HANA系統(tǒng)CDS view擴(kuò)展原理分析

然后當(dāng)你需要把這個(gè)custom field暴露在上層的view時(shí),比如I_ProductWD,這時(shí)去Jerry提到的點(diǎn)擊Enable時(shí)就會(huì)生成I_ProductWD的extension view。

其實(shí)你如果點(diǎn)擊對(duì)應(yīng)的字段,你會(huì)發(fā)現(xiàn)其實(shí)就是從上面的E_Product的extension view里去讀取的。

怎樣實(shí)現(xiàn)SAP S/4HANA系統(tǒng)CDS view擴(kuò)展原理分析

總結(jié)一下,I_ProductWD里定義的E_PRODUCT的association更多是用于design time(register),之后在enable時(shí)知道如何創(chuàng)建extension view。然后有了extension view時(shí),就跟E_Product沒(méi)有直接關(guān)系了,因?yàn)閑xtension view:ZZ1_PRE47GXHDI6P2ZLO3ADGY4HHFE里的內(nèi)容是自動(dòng)暴露為hosting view:I_PRODUCTWD的interface的。這也是為什么select *能自動(dòng)出來(lái),并不需要通過(guò)association。

關(guān)于怎樣實(shí)現(xiàn)SAP S/4HANA系統(tǒng)CDS view擴(kuò)展原理分析就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI