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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SAP Fiori里的Adapt UI按钮,神出鬼没的奥秘

發布時間:2023/12/19 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SAP Fiori里的Adapt UI按钮,神出鬼没的奥秘 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天是2020年2月2日鼠年大年初九,這是Jerry鼠年的第9篇文章,也是汪子熙公眾號總共第208篇原創文章。

這幾天大家在家一日游的感覺如何?

工作中Jerry的同事曾經問過我一個問題,Fiori界面上這個Adapt UI的按鈕,為什么有的系統上有,有的系統上沒有?Fiori Key User正是通過點擊該按鈕,進入Fiori UI的Adaptation模式,從而實現在屏幕上新增擴展字段的目的。

比較下面兩個不同系統的截圖:


為什么這個Adapt UI按鈕,如此神出鬼沒,有的系統上有顯示,有的沒有?

自己動手,豐衣足食。假設你的身邊找不到Fiori專家,如何通過自己在系統里調試的方法找到問題的答案呢?

Jerry之前的文章 Jerry的Fiori原創文章合集 ,搜集了很多案例,講述了如何通過單步調試,去分析和處理Fiori開發工作中的一些常見問題。

現在我們再次通過單步調試的方式來分析這個Adapt UI按鈕動態顯示與否的邏輯。

首先根據Jerry這篇博客介紹的SAP UI5控件在瀏覽器端的渲染邏輯的知識,找出是一個ID為sap.ushell.plugins.rta的插件,負責管理該Adapt UI按鈕。我個人把rta理解成Run Time Adaptation.

https://blogs.sap.com/?p=133359

這個插件從哪里來呢?在Chrome開發者工具里對sap.ushell.config和sap-ushell-config這組關鍵字進行全文搜索,找到了下面的代碼片段:

由此可見,rta這個插件實例,存儲在sap-ushell-config這個全局對象的bootstrapPlugins屬性里。

在Adapt UI按鈕能夠顯示的系統上調試,發現全局對象sap-ushell-config的值,來自oServerSideConfig這個JSON對象,而后者的值,是從SAP Fiori Launchpad的html頁面里一個硬編碼的字符串反序列化而成:

把FioriLaunchpad.html里這個硬編碼的字符串拷貝下來:

decode之后,發現其層級結構同我們之前在Chrome開發者工具里觀察到的sap-ushell-config全局對象完全一致,說明我們找對地方了。

下一步就是要弄清楚FioriLaunchpad.html里這個硬編碼的字符串到底來自何方。標準開發人員一個字符一個字符敲進去的?SAP軟件沒有這么傻。

SE80打開Fiori Launchpad Shell對應的BSP應用:
/ui2/ushell, 發現字符串的值來自變量:

${SERVER-SIDE-CONFIG}

因此SE80里我們找到的這個FioriLaunchpad.html只是起到一個模板文件的作用,里面第76行出現的${SERVER-SIDE-CONFIG}, 也只是一個占位符,會被運行時該變量的實際值替換,最后就成了我們在Chrome開發者工具里觀察到的那個長長的字符串。

那么變量${SERVER-SIDE-CONFIG}的值從哪里來?在BSP應用里查找,發現get_server_side_config_json方法返回的值,注入到該變量里。

所以現在的問題轉化為,通過單步調試get_server_side_config_json方法,弄清楚里面的邏輯:

當我單步調試進入該方法時,發現上圖第18行lr_data->mt_plugin這個內表里,已經包含了需要返回并注入到變量${SERVER-SIDE-CONFIG}里的當前系統上所有可用的Fiori Launchpad插件實例了,本文關注的sap.rta.plugin也赫然在列。

那么為什么本文開頭提到的另一個系統里,沒有顯示Adapt UI按鈕呢?

問題就出在下圖第22行的CHECK語句。第18行的mt_plugin內表,存儲了當前系統所有可用的Fiori Launchpad插件,每個插件都對應一個catalog ID.

第21行的內表it_catalogs, 存放的是當前登錄用戶通過分配的PFCG角色所擁有的catalog ID集合。

上圖這段代碼的語義是,遍歷當前系統所有可用的Fiori Launchpad插件,如果其對應的catalog ID,沒有出現在登錄用戶所擁有的catalog ID集合里,那么該插件對于該登錄用戶來說就是無效的(invalid), 應該將其從Fiori Launchpad上隱藏。

從上圖的調試窗口,我得知Run Time Adaptation這個插件對應的catalog ID為/UIF/SAP_RTA_PLUGIN, 然后我到ABAP后臺SU01去檢查,發現在看不到Adapt UI按鈕的那個系統里,我的用戶果然沒有分配這個catalog. 于是將其分配上去:

問題得以解決,現在Fiori UI里,這個久違的Adapt UI又回來了。

這就是一個實際的“自己動手,豐衣足食”的例子——我通過單步調試,沒有求助Fiori專家,也解決了工作中遇到的實際問題。

更多閱讀

  • Jerry的通過CDS view + Smart Template 開發Fiori應用的blog合集

  • SAP Fiori應用的三種部署方式

  • Jerry的Fiori原創文章合集

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

  • SAP Fiori + Vue = ?

  • Fiori Fundamentals和SAP UI5 Web Components

  • 30分鐘用Restful ABAP Programming模型開發一個支持增刪改查的Fiori應用

  • SAP Fiori應用索引大全

  • 介紹一種Fiori標準應用的增強方式

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

  • 為什么SAP GUI里的傳統事務碼能通過Fiori Launchpad啟動并運行在瀏覽器里

  • 一步步把SAP GUI的事務碼配置到SAP Fiori Launchpad里

要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":

總結

以上是生活随笔為你收集整理的SAP Fiori里的Adapt UI按钮,神出鬼没的奥秘的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。