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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

揭开SAP Fiori编程模型规范里注解的神秘面纱 - @ObjectModel

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

今天是農(nóng)歷鼠年大年初五,本文是鼠年第5篇文章,也是汪子熙公眾號第204篇原創(chuàng)文章。

最近大家真是談蝙蝠色變呀!

SAP官網(wǎng)的ABAP Programming Model for Fiori幫助文檔里,定義了很多注解(Annotation):
https://help.sap.com/viewer/cc0c305d2fab47bd808adcad3ca7ee9d/1709%20000/en-US/896496ecfe4f4f8b857c6d93d4489841.html

對于這些注解,我們可以從其字面含義和SAP幫助文檔去掌握其用法和功能。

以@ObjectModel.readOnly為例,施加了這個注解的CDS view字段,在對應(yīng)的Fiori UI上以只讀的方式渲染:

并且也不能通過編程的方式進行修改。

大家在使用這些注解的時候,有沒有想過,它們是怎么工作的?

以@ObjectModel.readOnly為例,現(xiàn)在就請跟著Jerry一起,去探索它的前后臺實現(xiàn)原理。

在Chrome開發(fā)者工具的UI5面板里,找到Posting Date這個控件對應(yīng)的屬性,發(fā)現(xiàn)字段editable屬性值為false,這就是其在UI不能編輯的原因。

如果你的Chrome開發(fā)者工具沒有UI5這個標(biāo)簽,請參考Jerry這篇文章,安裝Chrome for UI5的擴展:

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

既然后臺模型是CDS view,那么前臺UI顯然基于Fiori Elements. 我想知道Posting Date這個控件的editable屬性是在什么時候被設(shè)置成false的。

在SmartField.setEditable函數(shù)里設(shè)置斷點,重新打開Fiori UI,點擊Edit進入編輯模型,斷點觸發(fā),從調(diào)用棧能看出,有代碼調(diào)用SmartField.setEditable時,傳入的參數(shù)為false.

那么這個false如何計算出來的?順著當(dāng)前的調(diào)用棧往外層查找,發(fā)現(xiàn)一個重要的函數(shù):

AnnotationHelper.canUpdateProperty.

從函數(shù)名就能猜測出,這個函數(shù)負責(zé)計算一個控件的屬性是否允許更新(Update),工作的上下文就是注解(Annotation).

這個方法實現(xiàn)體的語義也很清楚,如果后臺模型字段sap:updatable設(shè)置為false,則canUpdateProperty函數(shù)調(diào)用返回false,導(dǎo)致SmartField.setEditable以參數(shù)false去渲染Fiori UI.

我們打開OData服務(wù)的metadata,發(fā)現(xiàn)posting date字段對應(yīng)的sap:updatable果然為false.

至此Fiori UI的工作原理分析完畢。我們再來看后臺。我的CDS view里只添加了@ObjectModel.readOnly為true的注解,而非sap:updatable. 顯然,這二者存在一定的關(guān)聯(lián)關(guān)系。

在Jerry之前的文章 Jerry的CDS view自學(xué)系列 介紹過CDS view框架處理邏輯,有這么一段代碼:

第839行的IF判斷,如果OBJECTMODEL.READONLY為true,則read_only屬性為X.

而read_only屬性為true,會導(dǎo)致posting date字段的屬性集合內(nèi)表里,新增一條read_only為X的記錄:


最后,在SADL框架的屬性檢測邏輯中,一旦發(fā)現(xiàn)字段屬性集合內(nèi)表里存在read_only為X的屬性,則將lv_creatable和lv_updatable置為false.

而SADL框架計算出來的這兩個值為false的布爾變量,最后就會將sap:creatable和sap:updatable設(shè)置為false.

@ObjectModel.readOnly屬性的前后臺工作原理的神秘面紗,至此就揭開了,然而它只是SAP Fiori編程模型眾多注解的冰山一角。敬請關(guān)注Jerry后續(xù)的分享,感謝閱讀。

更多閱讀

  • 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)用的增強方式

要獲取更多Jerry的原創(chuàng)文章,請關(guān)注公眾號"汪子熙":

總結(jié)

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

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