Jerry答網友提問:SAP CRM WebClient UI裡的EXT,STRUCT等含義
2020年,Jerry會做一個新的嘗試,選擇部分朋友向我提出的問題,在公眾號,知識星球或者微信圈子這些平臺上公開回答,這樣或許能幫助到更多的朋友。
具體說明參見我前一篇文章: 2020年關於SAP知識問答的一個新的嘗試
網友的提問:
Jerry的解答:
以上截圖是CRM系統裡BSP_WD_CPMWB這個事務碼進入之後,任意開啟一個上下文節點(Context Node)看到的資訊:
STRUCT的含義?
在Jerry之前的文章 Jerry的WebClient UI 42篇原創文章合集提到這樣一張圖:
在UI層的CRM BSP component的MVC設計裡,Model,即Context node,繫結的是Business Object Layer的模型,因此Context node Attributes資料夾下面,以STRUCT開頭的欄位,意味著這個欄位是繫結到BOL模型節點裡的一個欄位的,二者存在一一對應關係,如下圖箭頭所示。而下圖藍色欄位LOCKED, 前面沒有STRUCT字首,說明這個欄位並非來自BOL模型節點,而是開發者直接建立的,這種欄位一般用於應用邏輯裡儲存臨時狀態,或是代表當前應用的某個標誌位,沒有對應的底層儲存,在SAP很多產品裡也稱這種欄位為transient field或者calculated field.
展開某個欄位,看到的GET, GET_M, GET_I, GET_V, GET_P, GET_A是什麼意思?
要回答這個問題,得從CRM WebClient UI頁面的渲染方式說起。
如上圖這種檢視原始碼,使用的標籤頁不是HTML支援的原生標籤,瀏覽器是無法識別和解析的,因此需要有一箇中間層,或者說轉換器,將這些SAP封裝過的標籤轉換成瀏覽器支援的原生HTML標籤。
按照這個轉換器所處位置的不同,分為伺服器端渲染和瀏覽器端渲染兩種方式。SAP CRM WebClient UI基於SAP BSP技術——Business Server Page,光聽名字就知道是在伺服器端渲染了。而SAP UI5,是典型的瀏覽器端渲染,我們在其XML檢視裡書寫的那些標籤同樣無法直接被瀏覽器使用,需要每個標籤對應的渲染器,在瀏覽器端用JavaScript程式碼生成對應原生的HTML標籤。
回到CRM WebClient UI,對於Attributes裡的這些STRUCT欄位們,我們在渲染出的最終頁面裡,有的是一般的輸入欄位,有的是超連結,有的是下拉框,有的不可編輯,SAP開發的轉換器怎麼知道要將每個欄位渲染成什麼樣呢?
奧妙就在這些GET方法裡。這裡有一個小小的設計模式的思路在內,即SAP CRM WebClient UI的框架程式碼,負責伺服器端渲染80%的工作量,即把整個頁面的框架搭出來,包括一個頁面有多少欄位,欄位之間的相對位置等。剩下20%的工作量,比如每個欄位的型別,外觀等屬性,這些資訊框架不可能知道,也不應該知道,這些應該由應用程式提供介面(也可以理解成回撥),在介面裡實現這些屬性,然後由框架呼叫這些介面。我們可以把這個模式看成是設計模式裡的一種——模板模式(Template Design Pattern).
看具體的例子。
雙擊進入CONFIG這個欄位的GET_P方法裡。P的意思是Property,屬性。UI框架在渲染CONFIG這個欄位時,會呼叫GET_P_CONFIG這個介面,詢問應用:你想把CONFIG這個欄位渲染成什麼型別(下圖第4行的fieldtype)?
應用程式通過第五行的field_type_checkbox回答框架:我想把CONFIG欄位渲染成checkbox, 拜託了。
UI框架拿到這個資訊後,就可以做對應的渲染工作了。
如果想研究UI拿到這個欄位型別後如何渲染的細節,在GET_P方法裡打斷點,然後開啟一個頁面,單步除錯記錄:
GET_I: 如果應用邏輯裡需要根據某種條件動態決定該欄位是否可編輯,將邏輯寫在這個介面裡。
純粹的GET_P方法:這裡面奧妙很多,尤其是這個CONVERT_TO_STRING方法,將底層資料庫表裡對應的欄位根據BOL模型裡的欄位型別渲染成最終對使用者友好易讀的字串。比如底層資料庫表裡儲存的是不含任何時區的時間戳(timestamp), 那麼這個方法會根據使用者設定裡的時區,自動轉換成該時區的本地時間。
GET_V: 如果想實現自定義的F4 Value Help,在此實現。
GET_A: 如果某欄位的啟用與否,依賴於某個Business Switch的開與關,在此實現。在SFW開頭的系列事務碼裡檢視和操作Business Switch和Function.
EXT開頭的欄位,代表通過CRM增強工具Application Extension Tool(AET)建立的增強欄位。
希望本文能解答這位朋友提出的問題,感謝閱讀。
相關閱讀
* Jerry的WebClient UI 42篇原創文章合集
* 也可以瞭解Jerry提到的UI5的客戶端渲染方式,看Jerry這篇文章:[
]
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2673568/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 答網友提問 - SAP Business Technology Platform(BTP) 的計費模式Platform模式
- 在SAP CRM WebClient UI裡開啟ABAP Webdynpro頁面WebclientUI
- SAP CRM OData模型裡的addressable為true的含義模型
- SAP CRM WebClient UI和Fiori UI混搭並存WebclientUI
- SAP CRM WebClient UI和Hybris backoffice UI開發的相同點WebclientUI
- SAP WebClient UI的白屏問題分析WebclientUI
- SAP CRM WebClient UI異常的持久化機制WebclientUI持久化
- 將SAP CRM WebClient UI的表格匯出成PDFWebclientUI
- SAP CRM WebClient UI上將text area裡的文字清空的後臺處理WebclientUI
- 如何在SAP WebClient UI裡使用jChartFXWebclientUI
- SAP CRM SPRO Customizing 裡 Text Object 屬性 continue 的含義Object
- SAP CRM WebClient UI上以html格式顯示note的問題討論WebclientUIHTML
- SAP CRM WebClient UI的Delta處理機制介紹WebclientUI
- SAP CRM WebClient UI html 格式的 Text 顯示邏輯WebclientUIHTML
- SAP CRM WebClient UI 支援的一些 url 引數WebclientUI
- SAP CRM WebClient UI和Hybris的controller是如何被呼叫的WebclientUIController
- 在SAP CRM WebClient UI中用javascript觸發ABAP eventWebclientUIJavaScript
- 使用Selenium自動化測試SAP CRM WebClient UIWebclientUI
- 如何在CRM WebClient UI裡使用HANA Live ReportWebclientUI
- 在SAP WebClient UI裡顯示倒數計時的UIWebclientUI
- SAP CRM WebClient UI的on_new_focus應該怎麼理解WebclientUI
- SAP CRM WebClient UI表格編輯模式的除錯明細WebclientUI模式除錯
- SAP CRM WebClient UI和Hybris Commerce的懶載入機制WebclientUI
- SAP CRM WebClient UI Text Type 顯示的過濾邏輯WebclientUI
- SAP CRM WebClient UI和ABAP Webdynpro頁面的互相跳轉WebclientUI
- 如何在SAP WebClient UI裡使用HANA Live reportWebclientUI
- SAP UI5 應用 index.html 裡 data-sap-ui-resourceroots 指令的含義和作用UIIndexHTML
- SAP CRM WebClient UI cross component跳轉的一個具體例子WebclientUIROS
- SAP CRM WebClient UI Text 可編輯與否的控制邏輯WebclientUI
- 答網友提問:使用 SAP Fiori Tools 建立的 Fiori Elements 應用,如何進行二次開發?
- Hybris service layer和SAP CRM WebClient UI架構的橫向比較WebclientUI架構
- SAP UI5 裡一個功能的 compatibility version 是什麼含義?UI
- 如何在SAP WebClient UI裡建立柱狀圖(bar chart)WebclientUI
- CRM WebClient UI裡的檔案是如何上傳到Netweaver後臺的WebclientUI
- 如何把SAP CRM WebClient UI上某個欄位高亮加粗顯示WebclientUI
- 三種動態控制SAP CRM WebClient UI assignment block顯示與否的方法WebclientUIBloC
- SAP WebClient UI overview頁面裡assignment block的可見性分析技巧WebclientUIViewBloC
- SAP WebClient UI的會話重啟原理WebclientUI會話