您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關怎樣實現SAP S/4HANA系統CDS view擴展原理分析,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
創建擴展字段后,我想從接口視圖中檢索它的數據,就像I_產品一樣。也就是說,擴展字段已經在MARA中,我想通過I_產品而不是MARA使用它。
使用以下ABAP代碼時,它不起作用:
```ABAP
數據:I_產品的lt_表類型表。
從I_產品中選擇*INTO TABLE@lt_TABLE。
```
原因是
我_產品的SQL視圖中根本沒有相應的擴展字段。為什么?
只是因為I_產品未啟用擴展字段。
還應在自定義字段邏輯磁貼中啟用:
(1). 選擇您的擴展字段。
(2). 選項卡UI和報告:
(3). 單擊“啟用使用”按鈕:
永遠不要忘記發布您的更改。
一旦完成,它現在就可以工作了:
我來解答這兩天我們討論的問題。Key user 點了enable usage之后,如下圖這個例子,
為什么之后我們 SELECT * FROM I_PRPODUCTWD 就能把extension field一起select出來,這些extension field不是做在E_PRODUCT上嗎? E_PRODUCT 是通過association和I_PRODUCTWD連接起來的,為什么select * 能夠把association view里的field一起讀出來?
首先,上述紅色的說法就是錯誤的,extension field并不是通過association從E_PRODUCT里讀的. 我們要明確我們點enable usage的出發點是某個具體的extension field, 而不是從CDS view出發。選擇了具體的extension field之后,再選擇要extend的CDS view,點擊publish,此時將會自動創建一個帶有當前extension field的extension view,對選中的CDS extensible view進行擴展。這樣造成的結果是,從SE11里觀察SQL view能發現extension field會通過append的方式直接成為extensible view的一部分,這之后和E_PRODUCT再無任何關系。
比如這個extension view 在點publish時是什么時候生成的?
你可以自己debug,在這個方法里設個斷點,然后點publish,你會發現publish時,有10個object會自動生成,其中第三個就是上面圖里的extension view.
那框架咋知道我這個extension field在publish時要生成這10個東西?
答案還是在registry里:
如果想研究具體框架的generation實現,看這個class,里面每個sub class負責一種特定的repository generation實現,
其中CL_CFD_ENH_CDS_ENH_ABSTRACT又包含了所有CDS view相關的generation邏輯,里面又分了三種不同的類型。
所有這些協同工作,最后確保從application developer的眼里,看到extension field在design time時即出現在extensible view本身。額外補充一點哈。
E_PRODUCT一個最主要的目的就是為了register使用,同時在創建custom field時點publish時,能夠自動生成一個E_Product的extension view。
如下圖。當然在此之前需要先去自動擴展Product table的這個字段,這也是在點publish時自動完成的。
然后當你需要把這個custom field暴露在上層的view時,比如I_ProductWD,這時去Jerry提到的點擊Enable時就會生成I_ProductWD的extension view。
其實你如果點擊對應的字段,你會發現其實就是從上面的E_Product的extension view里去讀取的。
總結一下,I_ProductWD里定義的E_PRODUCT的association更多是用于design time(register),之后在enable時知道如何創建extension view。然后有了extension view時,就跟E_Product沒有直接關系了,因為extension view:ZZ1_PRE47GXHDI6P2ZLO3ADGY4HHFE里的內容是自動暴露為hosting view:I_PRODUCTWD的interface的。這也是為什么select *能自動出來,并不需要通過association。
關于怎樣實現SAP S/4HANA系統CDS view擴展原理分析就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。