日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

揭开SAP Fiori编程模型规范里注解的神秘面纱 - @OData.publish工作原理解析

發(fā)布時間:2023/12/19 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 揭开SAP Fiori编程模型规范里注解的神秘面纱 - @OData.publish工作原理解析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Jerry的前一篇文章 揭開SAP Fiori編程模型規(guī)范里注解的神秘面紗 - @ObjectModel.readOnly工作原理解析,給大家分享了@ObjectModel.readOnly這個注解對應(yīng)的Fiori UI和ABAP后臺的工作原理。

今天我們繼續(xù)研究另一個注解@OData.publish.

在SAP官網(wǎng)的ABAP Programming Model for SAP Fiori的幫助文檔里,在OData Annotations目錄下有對這個注解的介紹:

https://help.sap.com/viewer/cc0c305d2fab47bd808adcad3ca7ee9d/1709%20000/en-US/ccdb054e4ecf4573829d4ba258cafa72.html

一旦加上了這個注解的CDS view激活時,會自動生成一個OData服務(wù)。

這個OData服務(wù)是如何自動生成的?這就是本文所要分享的內(nèi)容。

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

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

激活之后,我試著用0311作為關(guān)鍵字在OData服務(wù)的注冊事務(wù)碼/IWFND/MAINT_SERVICE里搜索,果然搜到了對應(yīng)生成的OData服務(wù):

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

IWMO: SAP Gateway Business Suite Enablement對應(yīng)的模型
IWSV: SAP Gateway Business Suite Enablement對應(yīng)的服務(wù)
CLAS: OData服務(wù)的實現(xiàn)類ZCL_ZJERRYTEST20160311

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

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

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

打開ST05跟蹤模式,激活CDS view,在數(shù)據(jù)庫跟蹤結(jié)果里果然發(fā)現(xiàn)了將自動生成的對象名稱插入到注冊表TADIR的OPEN SQL語句。

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

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

點(diǎn)擊ST05里藍(lán)色的眼鏡圖標(biāo),自動跳轉(zhuǎn)到OPEN SQL語句里。設(shè)置斷點(diǎn),激活CDS view,斷點(diǎn)觸發(fā):

從當(dāng)前的調(diào)用棧往外追溯,發(fā)現(xiàn)在第21個調(diào)用棧幀,正是自動生成OData服務(wù)的地方:

CL_WB_DDLS_SECOBJ_HNDLR_SINGLE->IF_DDIC_WB_DDLS_SECOBJ_HANDLER~ON_ACTIVATION

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

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

此處會根據(jù)EDIT_STATE的值,進(jìn)入對應(yīng)的分支。

EDIT_STATE值為N的分支,則執(zhí)行OData服務(wù)的創(chuàng)建,通過CL_SADL_GTK_ODATA_SERVICE_GEN完成,后綴GEN代表Generation.

從調(diào)試器里能看出,名稱為ZJERRYTEST20160311的OData服務(wù)通過create_via_exposure方法被創(chuàng)建。

完整的調(diào)用棧:

本文其實也是另一個具體的例子,在不了解一段邏輯(無論框架層面或者應(yīng)用層面)的情況下,如何使用ST05這個工具來找到設(shè)置斷點(diǎn)的代碼位置,從而找到問題分析的突破口。

感謝閱讀。

更多閱讀

  • Jerry的通過CDS view + Smart Template 開發(fā)Fiori應(yīng)用的blog合集

  • SAP Fiori應(yīng)用的三種部署方式

  • Jerry的Fiori原創(chuàng)文章合集

  • SAP成都C4C小李探花:淺談Fiori Design Guidelines

  • SAP Fiori + Vue = ?

  • Fiori Fundamentals和SAP UI5 Web Components

  • 30分鐘用Restful ABAP Programming模型開發(fā)一個支持增刪改查的Fiori應(yīng)用

  • SAP Fiori應(yīng)用索引大全

  • 介紹一種Fiori標(biāo)準(zhǔn)應(yīng)用的增強(qiáng)方式

  • 揭開SAP Fiori編程模型規(guī)范里注解的神秘面紗 - @ObjectModel.readOnly工作原理解析

  • 為什么SAP GUI里的傳統(tǒng)事務(wù)碼能通過Fiori Launchpad啟動并運(yùn)行在瀏覽器里

  • 一步步把SAP GUI的事務(wù)碼配置到SAP Fiori Launchpad里
    要獲取更多Jerry的原創(chuàng)文章,請關(guān)注公眾號"
    汪子熙":

總結(jié)

以上是生活随笔為你收集整理的揭开SAP Fiori编程模型规范里注解的神秘面纱 - @OData.publish工作原理解析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。