Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 
JerryWang
Advisor
Advisor
I am using "Adapt UI" button to try to adapt some standard Fiori UI.

To my surprise, this button is not available in some system, although all necessary authorizations have been granted to my user:

I debugged the button rendering logic in the same where the button display is working correctly, and find the plugin sap.ushell.plugins.rta is responsible to manage this button.

Where does this plugin come from? From the code below, we know the plugin configuration is stored in window.sap-ushell-config.


This server side configuration is hard coded in launchpad html file, variable sServiceSideConfig in line 76 and converted to JSON object in line 79.



Paste the content of sServerSideconfig to notepad:




\x7b\x22ui5\x22\x3a\x7b\x22resourceRoots\x22\x3a\x7b\x22\x22\x3a\x22\x2fsap\x2fbc\x2fui5_ui5\x2fui2\x2fushell\x2fresources\x2f\x7e20161212025200\x7e\x22\x7d\x7d,\x22ui2CacheBusterToken\x22\x3a\x22\x7e4A3375BD016D83256D071D17363AC0EE\x7eC\x22,\x22ui5CacheBusterToken\x22\x3a\x22\x7e20161212025200\x7e\x22,\x22cacheBusting\x22\x3a\x7b\x22cacheBusterToken\x22\x3a\x22\x7e4A3375BD016D83256D071D17363AC0EE\x7eC\x22,\x22patterns\x22\x3a\x7b\x22\x5e\x5c\x2fsap\x5c\x2fbc\x5c\x2fui5_ui5\x5c\x2f\x28\x5b\x5e\x2f\x3f\x23\x5d\x2a\x5c\x2f\x5b\x5e\x2f\x3f\x23\x5d\x2a\x29\x28\x5b\x3f\x23\x5d.\x2a\x29\x3f\x22\x3a\x7b\x22replacement\x22\x3a\x22\x2fsap\x2fbc\x2fui5_ui5\x2f\x241\x2f\x5bCacheBusterToken\x5d\x242\x22,\x22order\x22\x20\x3a\x20100\x7d\x7d\x7d,\x22bootstrapPlugins\x22\x3a\x7b\x22plugin_1\x22\x3a\x7b\x22component\x22\x3a\x22fin.central.user.defaultparameter\x22,\x22url\x22\x3a\x22\x2fsap\x2fbc\x2fui5_ui5\x2fsap\x2ffin_acc_userpar\x2f\x7eD34995E7A1B31A8749F9FAEB5D7D7336\x7e5\x22,\x22manifestUrl\x22\x3a\x22\x2fsap\x2fbc\x2flrep\x2fcontent\x2f\x7e20161229074544.1119540\x7e\x2fapps\x2ffin.central.user.defaultparameter\x2fapp\x2fsap\x2ffin_acc_userpar\x2fmanifest.appdescr\x22,\x22self\x22\x3a\x7b\x22name\x22\x3a\x22fin.central.user.defaultparameter\x22,\x22url\x22\x3a\x22\x2fsap\x2fbc\x2fui5_ui5\x2fsap\x2ffin_acc_userpar\x2f\x7eD34995E7A1B31A8749F9FAEB5D7D7336\x7e5\x22\x7d,\x22asyncHints\x22\x3a\x7b\x22libs\x22\x3a\x5b\x7b\x22name\x22\x3a\x22sap.m\x22\x7d,\x7b\x22name\x22\x3a\x22sap.ui.core\x22\x7d\x5d,\x22requests\x22\x3a\x5b\x7b\x22name\x22\x3a\x22sap.ui.fl.changes\x22,\x22reference\x22\x3a\x22fin.central.user.defaultparameter.Component\x22\x7d\x5d\x7d,\x22config\x22\x3a\x7b\x22sap\x2dushell\x2dplugin\x2dtype\x22\x3a\x22UserDefaults\x22\x7d\x7d,\x22plugin_2\x22\x3a\x7b\x22component\x22\x3a\x22sap.dfa.help.utils.adapters.fiori\x22,\x22url\x22\x3a\x22\x2fresources\x2fsap\x2fdfa\x2fhelp\x2futils\x2fadapters\x2ffiori\x22,\x22self\x22\x3a\x7b\x22name\x22\x3a\x22sap.dfa.help.utils.adapters.fiori\x22\x7d,\x22config\x22\x3a\x7b\x22product\x22\x3a\x22SAP_S4HANA_CLOUD\x22,\x22version\x22\x3a\x221702\x20500\x22,\x22editor\x22\x3a\x22false\x22,\x22system\x22\x3a\x22\x22\x7d\x7d,\x22plugin_3\x22\x3a\x7b\x22component\x22\x3a\x22sap.ushell.plugins.rta\x22,\x22self\x22\x3a\x7b\x22name\x22\x3a\x22sap.ushell.plugins.rta\x22\x7d,\x22asyncHints\x22\x3a\x7b\x22libs\x22\x3a\x5b\x7b\x22name\x22\x3a\x22sap.ui.dt\x22,\x22lazy\x22\x3atrue\x7d,\x7b\x22name\x22\x3a\x22sap.ui.core\x22\x7d,\x7b\x22name\x22\x3a\x22sap.ui.rta\x22,\x22lazy\x22\x3atrue\x7d,\x7b\x22name\x22\x3a\x22sap.m\x22\x7d\x5d,\x22requests\x22\x3a\x5b\x7b\x22name\x22\x3a\x22sap.ui.fl.changes\x22,\x22reference\x22\x3a\x22sap.ushell.plugins.rta.Component\x22\x7d\x5d\x7d,\x22config\x22\x3a\x7b\x22\x22\x3a\x22\x22\x7d\x7d\x7d,\x22startupConfig\x22\x3a\x7b\x22version\x22\x3a\x221.2.01\x22,\x22client\x22\x3a\x22381\x22,\x22dateFormat\x22\x3a\x222\x22,\x22tislcal\x22\x3a\x5b\x5d,\x22email\x22\x3a\x22\x22,\x22firstName\x22\x3a\x22William\x22,\x22fullName\x22\x3a\x22William\x20Intsales\x22,\x22id\x22\x3a\x22CB9980001995\x22,\x22language\x22\x3a\x22EN\x22,\x22languageBcp47\x22\x3a\x22en\x22,\x22lastName\x22\x3a\x22Intsales\x22,\x22numberFormat\x22\x3a\x22X\x22,\x22rtl\x22\x3afalse,\x22system\x22\x3a\x22XT4\x22,\x22theme\x22\x3a\x22sap_belize\x22,\x22timeFormat\x22\x3a\x220\x22,\x22timeZone\x22\x3a\x22UTC\x22,\x22welcomeMessage\x22\x3a\x22\x22,\x22themeRoot\x22\x3a\x22\x2fsap\x2fpublic\x2fbc\x2fthemes\x2f\x7eclient\x2d381\x2f\x7ecache\x2dcLcsqv7IJA6wgNr.LPCOPw41QWo\x22,\x22seed\x22\x3a\x22tTRKkR5.OYtaSB2P\x2dPs1ZA\x22,\x22userProfile\x22\x3a\x5b\x7b\x22id\x22\x3a\x22ACCESSIBILITY\x22,\x22value\x22\x3a\x22false\x22,\x22editState\x22\x3a1\x7d,\x7b\x22id\x22\x3a\x22CHARSET\x22,\x22value\x22\x3a\x22utf\x2d8\x22,\x22editState\x22\x3a1\x7d,\x7b\x22id\x22\x3a\x22CONTENT_DENSITY\x22,\x22value\x22\x3a\x22compact\x22,\x22editState\x22\x3a3\x7d,\x7b\x22id\x22\x3a\x22DATE_FORMAT\x22,\x22value\x22\x3a\x222\x22,\x22editState\x22\x3a1\x7d,\x7b\x22id\x22\x3a\x22EMAIL\x22,\x22value\x22\x3a\x22\x22,\x22editState\x22\x3a1\x7d,\x7b\x22id\x22\x3a\x22FIRST_NAME\x22,\x22value\x22\x3a\x22William\x22,\x22editState\x22\x3a1\x7d,\x7b\x22id\x22\x3a\x22FULL_NAME\x22,\x22value\x22\x3a\x22William\x20Intsales\x22,\x22editState\x22\x3a1\x7d,\x7b\x22id\x22\x3a\x22LANGUAGE\x22,\x22value\x22\x3a\x22en\x22,\x22editState\x22\x3a1\x7d,\x7b\x22id\x22\x3a\x22LAST_NAME\x22,\x22value\x22\x3a\x22Intsales\x22,\x22editState\x22\x3a1\x7d,\x7b\x22id\x22\x3a\x22NUMBER_FORMAT\x22,\x22value\x22\x3a\x22X\x22,\x22editState\x22\x3a1\x7d,\x7b\x22id\x22\x3a\x22RTL\x22,\x22value\x22\x3a\x22false\x22,\x22editState\x22\x3a1\x7d,\x7b\x22id\x22\x3a\x22THEME\x22,\x22value\x22\x3a\x22sap_bluecrystal\x22,\x22editState\x22\x3a3\x7d,\x7b\x22id\x22\x3a\x22TIME_FORMAT\x22,\x22value\x22\x3a\x220\x22,\x22editState\x22\x3a1\x7d,\x7b\x22id\x22\x3a\x22TIME_ZONE\x22,\x22value\x22\x3a\x22UTC\x22,\x22editState\x22\x3a1\x7d,\x7b\x22id\x22\x3a\x22TRACKING_USAGE_ANALYTICS\x22,\x22value\x22\x3a\x22undefined\x22,\x22editState\x22\x3a3\x7d,\x7b\x22id\x22\x3a\x22WELCOME_MESSAGE\x22,\x22value\x22\x3a\x22\x22,\x22editState\x22\x3a1\x7d\x5d,\x22isJamActive\x22\x3atrue,\x22isEmbReportingActive\x22\x3afalse,\x22services\x22\x3a\x7b\x22targetMappings\x22\x3a\x7b\x22baseUrl\x22\x3a\x22\x2fsap\x2fopu\x2fodata\x2fUI2\x2fINTEROP\x22,\x22relativeUrl\x22\x3a\x22TargetMappings\x22,\x22cacheId\x22\x3a\x223747C42E017C755D68D930CF65BF660A\x22\x7d,\x22personalization\x22\x3a\x7b\x22baseUrl\x22\x3a\x22\x2fsap\x2fopu\x2fodata\x2fUI2\x2fINTEROP\x22,\x22relativeUrl\x22\x3a\x22PersContainers\x22,\x22cacheId\x22\x3a\x22331D24E47CB232D662E42AA1B17FD0E4\x22\x7d,\x22pbFioriHome\x22\x3a\x7b\x22baseUrl\x22\x3a\x22\x2fsap\x2fopu\x2fodata\x2fUI2\x2fPAGE_BUILDER_PERS\x22,\x22relativeUrl\x22\x3a\x22\x2fPageSets\x28\x27\x252FUI2\x252FFiori2LaunchpadHome\x27\x29\x3f\x24expand\x3dPages\x2fPageChipInstances\x2fChip\x2fChipBags\x2fChipProperties,Pages\x2fPageChipInstances\x2fRemoteCatalog,Pages\x2fPageChipInstances\x2fChipInstanceBags\x2fChipInstanceProperties,AssignedPages,DefaultPage\x22,\x22cacheId\x22\x3a\x228CDCD4A847681ED6B3B3260FB4742526\x22\x7d,\x22startUp\x22\x3a\x7b\x22baseUrl\x22\x3a\x22\x2fsap\x2fbc\x2fui2\x2f\x22,\x22relativeUrl\x22\x3a\x22start_up\x22,\x22cacheId\x22\x3a\x223747C42E017C755D68D930CF65BF660A\x22\x7d\x7d\x7d\x7d
Decode it via some online decode tool:



Here we can find out that the Adapt UI plugin is there:



Then we do the same check on another system where Adapt UI is missing, here the plugin configuration is missing. As a result, this button missing issue is not caused by inadequate user authorization, but the needed plugin is not returned by server side.
For more detail about server side configuration and how I finally manged to make this button visible, please refer to this blog Fiori launchpad page server side configuration.


1 Comment