中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

OData服務是如何自動生成的

發布時間:2022-01-04 15:07:03 來源:億速云 閱讀:228 作者:iii 欄目:服務器

本篇內容主要講解“OData服務是如何自動生成的”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“OData服務是如何自動生成的”吧!

假設我們對加了這個注解的CDS view激活后自動生成的OData服務的明細一無所知,從何處開始入手進行研究呢?

我創建了一個名為zjerrytest20160311的view,然后加上這個注解,激活。根據我的經驗,按照SAP慣例,自動生成的OData服務的名稱應該也會包含0311這個字符串。

OData服務是如何自動生成的

激活之后,我試著用0311作為關鍵字在OData服務的注冊事務碼/IWFND/MAINT_SERVICE里搜索,果然搜到了對應生成的OData服務:

OData服務是如何自動生成的

在Jerry之前的文章 [ABAP CCDEF, CCIMP, CCMAC, CCAU, CMXXX這些東東是什么鬼]( ABAP CCDEF, CCIMP, CCMAC, CCAU, CMXXX這些東東是什么鬼) 曾經提到ABAP Netweaver的注冊表TADIR,按照0311進行查詢,發現CDS view激活之后,除了OData服務本身,還自動生成了下列這些對象:

OData服務是如何自動生成的

  • IWMO: SAP Gateway Business Suite Enablement對應的模型

  • IWSV: SAP Gateway Business Suite Enablement對應的服務

  • CLAS: OData服務的實現類ZCL_ZJERRYTEST20160311

做個實驗,當我把OData.publish的值設置為false,再次激活,發現類型為IWMO和IWSV的對象從注冊表TADIR中消失了,這再次印證了二者是注解OData.publish設置為true之后激活CDS view生成的。

OData服務是如何自動生成的

那么如何研究CDS view激活時,這兩個對象的自動生成邏輯呢?

使用Jerry文章( SAP錯誤消息調試之七種武器:讓所有的錯誤消息都能被定位) 里介紹的第六種武器,離別鉤之ST05.

打開ST05跟蹤模式,激活CDS view,在數據庫跟蹤結果里果然發現了將自動生成的對象名稱插入到注冊表TADIR的OPEN SQL語句。

OData服務是如何自動生成的

《神雕俠侶》天竺僧去絕情谷給楊過找情花毒解藥時,說過一句話:毒蛇出沒之處,七步之內必有解藥。

OData服務是如何自動生成的

同樣,在ABAP里,在插入數據庫表的OPEN SQL語句之前,必定有待插入數據的生成邏輯。

點擊ST05里藍色的眼鏡圖標,自動跳轉到OPEN SQL語句里。設置斷點,激活CDS view,斷點觸發:

OData服務是如何自動生成的

從當前的調用棧往外追溯,發現在第21個調用棧幀,正是自動生成OData服務的地方:

OData服務是如何自動生成的

CL_WB_DDLS_SECOBJ_HNDLR_SINGLE->IF_DDIC_WB_DDLS_SECOBJ_HANDLER~ON_ACTIVATION

這個方法首先根據delta_state判斷出需要刪除,新增或者更新的對象清單,分別存儲在下圖12到14行三個輸出參數里。

OData服務是如何自動生成的

舉個例子,當我在一個已經激活過后的CDS view源代碼里添加@OData.publish:true的注解,然后激活,此時該注解對于的EDIT_STATE為N(New), 而其他的注解因為沒有任何變化,被標記為U(Unchanged).

OData服務是如何自動生成的

此處會根據EDIT_STATE的值,進入對應的分支。

OData服務是如何自動生成的

EDIT_STATE值為N的分支,則執行OData服務的創建,通過CL_SADL_GTK_ODATA_SERVICE_GEN完成,后綴GEN代表Generation.

OData服務是如何自動生成的

從調試器里能看出,名稱為ZJERRYTEST20160311的OData服務通過create_via_exposure方法被創建。

完整的調用棧:

OData服務是如何自動生成的

到此,相信大家對“OData服務是如何自動生成的”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阜城县| 承德市| 区。| 曲阜市| 乌什县| 景泰县| 久治县| 吴忠市| 和田县| 武平县| 广平县| 泸定县| 米林县| 阳山县| 容城县| 光山县| 谢通门县| 信阳市| 德钦县| 高雄县| 宝清县| 安阳县| 镇原县| 贵州省| 都江堰市| 呼图壁县| 巴马| 金堂县| 墨竹工卡县| 阿克苏市| 黑水县| 峨眉山市| 洛阳市| 瑞昌市| 中阳县| 银川市| 云阳县| 连云港市| 屯门区| 广丰县| 通渭县|