@sapui5/sap.ushell_abap 1.140.0 → 1.141.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/package.json +2 -2
  2. package/src/main/js/sap/ushell_abap/.library +1 -1
  3. package/src/main/js/sap/ushell_abap/adapters/abap/AdapterContainer.js +12 -9
  4. package/src/main/js/sap/ushell_abap/adapters/abap/AppStateAdapter.js +9 -9
  5. package/src/main/js/sap/ushell_abap/adapters/abap/ClientSideTargetResolutionAdapter.js +39 -36
  6. package/src/main/js/sap/ushell_abap/adapters/abap/CommonDataModelAdapter.js +1 -1
  7. package/src/main/js/sap/ushell_abap/adapters/abap/ConfigurationDefaultsAdapter.js +1 -1
  8. package/src/main/js/sap/ushell_abap/adapters/abap/ContainerAdapter.js +8 -10
  9. package/src/main/js/sap/ushell_abap/adapters/abap/FlpLaunchPageAdapter.js +150 -91
  10. package/src/main/js/sap/ushell_abap/adapters/abap/LaunchPageAdapter.js +1 -1
  11. package/src/main/js/sap/ushell_abap/adapters/abap/NavTargetResolutionAdapter.js +1 -1
  12. package/src/main/js/sap/ushell_abap/adapters/abap/NavTargetResolutionInternalAdapter.js +1 -1
  13. package/src/main/js/sap/ushell_abap/adapters/abap/PageBuildingAdapter.js +1 -1
  14. package/src/main/js/sap/ushell_abap/adapters/abap/PagePersistenceAdapter.js +18 -15
  15. package/src/main/js/sap/ushell_abap/adapters/abap/PersonalizationAdapter.js +3 -3
  16. package/src/main/js/sap/ushell_abap/adapters/abap/PersonalizationV2Adapter.js +1 -1
  17. package/src/main/js/sap/ushell_abap/adapters/abap/SearchAdapter.js +1 -1
  18. package/src/main/js/sap/ushell_abap/adapters/abap/SupportTicketAdapter.js +2 -2
  19. package/src/main/js/sap/ushell_abap/adapters/abap/Ui5ComponentLoaderAdapter.js +1 -1
  20. package/src/main/js/sap/ushell_abap/adapters/abap/UserInfoAdapter.js +28 -20
  21. package/src/main/js/sap/ushell_abap/adapters/hana/ContainerAdapter.js +1 -1
  22. package/src/main/js/sap/ushell_abap/bootstrap/evo/SAPCompanionConditionSetter.js +1 -1
  23. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.configure.ushell.js +1 -1
  24. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.request.pageset.js +1 -1
  25. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.request.startup.js +17 -13
  26. package/src/main/js/sap/ushell_abap/bootstrap/evo/boottask.js +58 -56
  27. package/src/main/js/sap/ushell_abap/components/TCodeNavigation/MessageCode.js +47 -0
  28. package/src/main/js/sap/ushell_abap/components/TCodeNavigation/TCodeNavigationError.js +59 -0
  29. package/src/main/js/sap/ushell_abap/components/TCodeNavigation.js +129 -116
  30. package/src/main/js/sap/ushell_abap/integration/fileshares/AppRuntimeFileShareSupport.js +4 -4
  31. package/src/main/js/sap/ushell_abap/library.js +8 -1
  32. package/src/main/js/sap/ushell_abap/pbServices/ui2/Bag.js +11 -11
  33. package/src/main/js/sap/ushell_abap/pbServices/ui2/Catalog.js +2 -2
  34. package/src/main/js/sap/ushell_abap/pbServices/ui2/Chip.js +4 -8
  35. package/src/main/js/sap/ushell_abap/pbServices/ui2/ChipInstance.js +4 -8
  36. package/src/main/js/sap/ushell_abap/pbServices/ui2/ODataWrapper.js +18 -6
  37. package/src/main/js/sap/ushell_abap/pbServices/ui2/Utils.js +6 -9
  38. package/src/main/js/sap/ushell_abap/pbServices/ui2/contracts/actions.js +2 -2
  39. package/src/main/js/sap/ushell_abap/pbServices/ui2/contracts/visible.js +2 -2
  40. package/src/main/js/sap/ushell_abap/ui5appruntime/AppInfoAdapter.js +2 -2
  41. package/ui5.yaml +33 -1
@@ -2,7 +2,7 @@
2
2
 
3
3
  /**
4
4
  * @fileOverview PagePersistenceAdapter for the ABAP platform.
5
- * @version 1.140.0
5
+ * @version 1.141.1
6
6
  */
7
7
  sap.ui.define([
8
8
  "sap/base/i18n/Localization",
@@ -10,16 +10,16 @@ sap.ui.define([
10
10
  "sap/ushell/utils/HttpClient",
11
11
  "sap/ushell/resources",
12
12
  "sap/ushell/utils/chipsUtils",
13
- "sap/ushell/Config",
14
- "sap/ushell/Container"
13
+ "sap/ushell/Container",
14
+ "sap/ushell/utils/LaunchpadError"
15
15
  ], (
16
16
  Localization,
17
17
  ObjectPath,
18
18
  HttpClient,
19
- resources,
19
+ ushellResources,
20
20
  chipsUtils,
21
- Config,
22
- Container
21
+ Container,
22
+ LaunchpadError
23
23
  ) => {
24
24
  "use strict";
25
25
 
@@ -362,7 +362,7 @@ sap.ui.define([
362
362
  let oConfiguration;
363
363
  try {
364
364
  oConfiguration = JSON.parse(oVisualization.configuration);
365
- } catch (err) {
365
+ } catch {
366
366
  oConfiguration = {};
367
367
  }
368
368
 
@@ -389,19 +389,22 @@ sap.ui.define([
389
389
  };
390
390
 
391
391
  /**
392
- * @param {object} error The error object
392
+ * @param {Error} oError The error object
393
393
  * @returns {Promise<object>} A rejected promise containing the error
394
394
  *
395
395
  * @experimental Since 1.67.0
396
396
  * @private
397
397
  */
398
- PagePersistenceAdapter.prototype._rejectWithError = function (error) {
399
- const oError = {
400
- component: this.S_COMPONENT_NAME,
401
- description: resources.i18n.getText("PagePersistenceAdapter.CannotLoadPage"),
402
- detail: error
403
- };
404
- return Promise.reject(oError);
398
+ PagePersistenceAdapter.prototype._rejectWithError = async function (oError) {
399
+ throw new LaunchpadError(
400
+ oError.message,
401
+ {
402
+ component: this.S_COMPONENT_NAME,
403
+ description: ushellResources.i18n.getText("PagePersistenceAdapter.CannotLoadPage"),
404
+ detail: oError
405
+ },
406
+ oError
407
+ );
405
408
  };
406
409
 
407
410
  return PagePersistenceAdapter;
@@ -7,7 +7,7 @@
7
7
  * Container header properties transported via pseudo-items are mapped to the
8
8
  * respective header properties in setItem/getItem/delItem
9
9
  *
10
- * @version 1.140.0
10
+ * @version 1.141.1
11
11
  */
12
12
  sap.ui.define([
13
13
  "sap/ushell_abap/adapters/abap/AdapterContainer",
@@ -54,8 +54,8 @@ sap.ui.define([
54
54
  "sap-client": Container.getLogonSystem().getClient()
55
55
  };
56
56
  this._oWrapper = ODataWrapper.createODataWrapper(oODataWrapperSettings);
57
- function fnDefaultFailure (oMessage) {
58
- throw new SrvcError(oMessage, "sap.ushell_abap.adapters.abap.PersonalizationAdapter");
57
+ function fnDefaultFailure (sErrorMessage) {
58
+ throw new SrvcError(sErrorMessage, "sap.ushell_abap.adapters.abap.PersonalizationAdapter");
59
59
  }
60
60
  ODataService.call(this, this._oWrapper, fnDefaultFailure);
61
61
  }
@@ -7,7 +7,7 @@
7
7
  * Container header properties transported via pseudo-items are mapped to the
8
8
  * respective header properties in setItem/getItem/delItem
9
9
  *
10
- * @version 1.140.0
10
+ * @version 1.141.1
11
11
  */
12
12
  sap.ui.define([
13
13
  "./PersonalizationAdapter"
@@ -2,7 +2,7 @@
2
2
 
3
3
  /**
4
4
  * @fileOverview The Search adapter for the ABAP platform.
5
- * @version 1.140.0
5
+ * @version 1.141.1
6
6
  */
7
7
  sap.ui.define([], () => {
8
8
  "use strict";
@@ -2,7 +2,7 @@
2
2
 
3
3
  /**
4
4
  * @fileOverview The SupportTicket adapter for the ABAP platform.
5
- * @version 1.140.0
5
+ * @version 1.141.1
6
6
  */
7
7
  sap.ui.define([
8
8
  "sap/base/util/isEmptyObject",
@@ -100,7 +100,7 @@ sap.ui.define([
100
100
  oDataWrapper.create(sRelativeUrl, oSupportTicketData, (response) => {
101
101
  fnResolve(response.messageNumber);
102
102
  }, (sErrorMessage) => {
103
- fnReject(sErrorMessage);
103
+ fnReject(new Error(sErrorMessage));
104
104
  });
105
105
  });
106
106
 
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * @fileOverview The Unified Shell's Ui5ComponentLoaderAdapter for the ABAP platform
4
4
  *
5
- * @version 1.140.0
5
+ * @version 1.141.1
6
6
  */
7
7
  sap.ui.define([
8
8
  ], () => {
@@ -7,15 +7,17 @@ sap.ui.define([
7
7
  "sap/ui/VersionInfo",
8
8
  "sap/base/Log",
9
9
  "sap/ushell/resources",
10
- "sap/base/i18n/date/CalendarWeekNumbering"
10
+ "sap/base/i18n/date/CalendarWeekNumbering",
11
+ "sap/ushell/utils/LaunchpadError"
11
12
  ], (
12
13
  ODataWrapper,
13
- OData,
14
+ datajs,
14
15
  jQuery,
15
16
  VersionInfo,
16
17
  Log,
17
18
  resources,
18
- CalendarWeekNumbering
19
+ CalendarWeekNumbering,
20
+ LaunchpadError
19
21
  ) => {
20
22
  "use strict";
21
23
 
@@ -97,18 +99,21 @@ sap.ui.define([
97
99
  themeRoot: oThemeList.themeRoot
98
100
  });
99
101
  })
100
- .catch((error) => {
101
- Log.error(error, null, "sap.ushell_abap.adapters.abap.UserInfoAdapter");
102
+ .catch((oError) => {
103
+ Log.error(oError.message, oError, "sap.ushell_abap.adapters.abap.UserInfoAdapter");
102
104
  // fallback to the previous implementation via /UI2/INTEROP
103
- OData.read({requestUri: "/sap/opu/odata/UI2/INTEROP/Themes"},
105
+ datajs.read({requestUri: "/sap/opu/odata/UI2/INTEROP/Themes"},
104
106
  (oData) => { // success
105
107
  oDeferred.resolve({
106
108
  options: oData?.results || []
107
109
  });
108
110
  },
109
- (oError) => { // fail
110
- Log.error(oError.message, null, "sap.ushell_abap.adapters.abap.UserInfoAdapter");
111
- oDeferred.reject(oError.message);
111
+ (oDataJsError) => { // fail
112
+ Log.error(oDataJsError.message, null, "sap.ushell_abap.adapters.abap.UserInfoAdapter");
113
+ const oError = new LaunchpadError(`Failed to fetch data: ${oDataJsError.message}`, {
114
+ dataJsError: oDataJsError
115
+ });
116
+ oDeferred.reject(oError);
112
117
  });
113
118
  });
114
119
 
@@ -150,7 +155,7 @@ sap.ui.define([
150
155
  const sUri = encodeURI("/sap/opu/odata/UI2/INTEROP/UserProfilePropertyValues?$filter=id eq 'PREFERRED_LOGON_LANGUAGE'");
151
156
 
152
157
  // read semantic objects from interop service
153
- OData.read({ requestUri: sUri },
158
+ datajs.read({ requestUri: sUri },
154
159
  // sucess
155
160
  (oData) => {
156
161
  let aResult = [{
@@ -170,9 +175,12 @@ sap.ui.define([
170
175
  oDeferred.resolve(aResult);
171
176
  },
172
177
  // fail
173
- (oError) => {
174
- Log.error(oError.message, null, "sap.ushell_abap.adapters.abap.UserInfoAdapter");
175
- oDeferred.reject(oError.message);
178
+ (oDataJsError) => {
179
+ Log.error(oDataJsError.message, null, "sap.ushell_abap.adapters.abap.UserInfoAdapter");
180
+ const oError = new LaunchpadError(`Failed to fetch data: ${oDataJsError.message}`, {
181
+ dataJsError: oDataJsError
182
+ });
183
+ oDeferred.reject(oError);
176
184
  });
177
185
 
178
186
  return oDeferred.promise();
@@ -229,8 +237,8 @@ sap.ui.define([
229
237
  oResult[this] = oData.results;
230
238
  }.bind(sCurrentId),
231
239
  // error
232
- (oError) => {
233
- Log.error(oError.message, null, "sap.ushell_abap.adapters.abap.UserInfoAdapter");
240
+ (sErrorMessage) => {
241
+ Log.error(sErrorMessage, null, "sap.ushell_abap.adapters.abap.UserInfoAdapter");
234
242
  }
235
243
  );
236
244
  }
@@ -241,9 +249,9 @@ sap.ui.define([
241
249
  oDeferred.resolve(oResult);
242
250
  },
243
251
  // error
244
- (oError) => {
245
- Log.error(oError.message, null, "sap.ushell_abap.adapters.abap.UserInfoAdapter");
246
- oDeferred.reject(oError.message);
252
+ (sErrorMessage) => {
253
+ Log.error(sErrorMessage, null, "sap.ushell_abap.adapters.abap.UserInfoAdapter");
254
+ oDeferred.reject(new Error(sErrorMessage));
247
255
  }
248
256
  );
249
257
 
@@ -251,7 +259,7 @@ sap.ui.define([
251
259
  };
252
260
 
253
261
  this._createWrapper = function (sBaseUrl) {
254
- return ODataWrapper.createODataWrapper(sBaseUrl, false, (sError) => { /* default error handler */ });
262
+ return ODataWrapper.createODataWrapper(sBaseUrl, false, (sErrorMessage) => { /* default error handler */ });
255
263
  };
256
264
 
257
265
  /**
@@ -275,7 +283,7 @@ sap.ui.define([
275
283
  }
276
284
  }
277
285
  function fnFailure (sErrorMessage, oParsedErrorInformation) {
278
- oDeferred.reject(sErrorMessage, oParsedErrorInformation);
286
+ oDeferred.reject(new Error(sErrorMessage), oParsedErrorInformation);
279
287
  }
280
288
  Log.debug("[000] updateUserPreferences: _createWrapper", "UserInfoAdapter");
281
289
  oDataWrapper = this._createWrapper("/sap/opu/odata/UI2/INTEROP/");
@@ -3,7 +3,7 @@
3
3
  /**
4
4
  * @fileOverview The Unified Shell's container adapter for the HANA platform.
5
5
  *
6
- * @version 1.140.0
6
+ * @version 1.141.1
7
7
  */
8
8
  sap.ui.define([
9
9
  "sap/ui/thirdparty/jquery",
@@ -56,7 +56,7 @@ sap.ui.define([
56
56
  return;
57
57
  }
58
58
  } else {
59
- oDeferred.reject();
59
+ oDeferred.reject(new Error("Timeout reached while trying to set conditions"));
60
60
  }
61
61
  }
62
62
  fnKeepTrying();
@@ -14,7 +14,7 @@
14
14
  * It furthermore calculates if FLP pages get activated and if needed sets up
15
15
  * the configuration environment to run these.
16
16
  *
17
- * @version 1.140.0
17
+ * @version 1.141.1
18
18
  */
19
19
  sap.ui.define([
20
20
  "./abap.constants",
@@ -125,7 +125,7 @@ sap.ui.define([
125
125
  } else {
126
126
  // rejecting the deferred will make the request later (in the ushell adapter) fail, so
127
127
  // the error handling there takes effect
128
- oDeferred.reject(sResponse);
128
+ oDeferred.reject(new Error(`PageSet request failed: ${sResponse}`));
129
129
  }
130
130
  }
131
131
 
@@ -67,7 +67,9 @@ sap.ui.define([
67
67
  const oStartupResult = JSON.parse(sStartupCallResult);
68
68
  resolve(oStartupResult);
69
69
  },
70
- reject,
70
+ (sErrorMessage) => {
71
+ reject(new Error(sErrorMessage));
72
+ },
71
73
  oXHR
72
74
  );
73
75
  });
@@ -100,19 +102,21 @@ sap.ui.define([
100
102
  * Result of the GET request should be resolved
101
103
  */
102
104
  oStartupHandler.requestFullTM = function (oStartupConfig) {
103
- return requestStartup("so=%2A&action=%2A&systemAliasesFormat=object", ["sap-language", "sap-client", "sap-ui2-cache-disable"], oStartupConfig).then((oResult) => {
104
- if (oResult) {
105
- if (oResult.client) { // double check we get the correct response
106
- // TODO: move this to integration test perhaps
107
- return Promise.reject("A start up response was returned in a target mappings request.");
105
+ return requestStartup("so=%2A&action=%2A&systemAliasesFormat=object", ["sap-language", "sap-client", "sap-ui2-cache-disable"], oStartupConfig)
106
+ .then((oResult) => {
107
+ if (oResult) {
108
+ if (oResult.client) { // double check we get the correct response
109
+ // TODO: move this to integration test perhaps
110
+ throw new Error("A start up response was returned in a target mappings request.");
111
+ }
112
+ return oResult;
108
113
  }
109
- return Promise.resolve(oResult);
110
- }
111
- return Promise.resolve({});
112
- }, (sError) => {
113
- Log.error(`navTargetDataPromise rejected: ${sError}`);
114
- return Promise.reject(sError);
115
- });
114
+ return {};
115
+ })
116
+ .catch((oError) => {
117
+ Log.error("navTargetDataPromise rejected:", oError);
118
+ throw oError;
119
+ });
116
120
  };
117
121
 
118
122
  /**
@@ -184,10 +184,10 @@ sap.ui.define([
184
184
  }
185
185
  try {
186
186
  return JSON.parse(JSON.stringify(oObject));
187
- } catch (e) {
187
+ } catch (oError) {
188
188
  Log.error(
189
189
  "Could not clone object",
190
- null,
190
+ oError,
191
191
  "sap.ushell_abap.bootstrap"
192
192
  );
193
193
  return undefined;
@@ -744,7 +744,7 @@ sap.ui.define([
744
744
  fnResolve = resolve;
745
745
  fnReject = reject;
746
746
  });
747
- window["sap-ushell-async-libs-promise-directstart"].catch((sMsg) => { // always provide catch handler
747
+ window["sap-ushell-async-libs-promise-directstart"].catch((oError) => { // always provide catch handler
748
748
  /* silently ignore */
749
749
  });
750
750
  // resolve the shell hash and try to load a UI5 component for it; if successful,
@@ -774,8 +774,8 @@ sap.ui.define([
774
774
  dependenciesLoaded: true
775
775
  });
776
776
  })
777
- .catch((vError) => {
778
- fnReject(vError);
777
+ .catch((oError) => {
778
+ fnReject(oError);
779
779
  });
780
780
  });
781
781
  } else {
@@ -787,8 +787,8 @@ sap.ui.define([
787
787
  }
788
788
  });
789
789
  })
790
- .fail((sMsg) => {
791
- fnReject(sMsg);
790
+ .fail((oError) => {
791
+ fnReject(oError);
792
792
  });
793
793
  });
794
794
  }
@@ -835,8 +835,8 @@ sap.ui.define([
835
835
  const oPagePersistenceService = aResults[1];
836
836
  oPagePersistenceService.getPage(oIds.pageId);
837
837
  })
838
- .catch((sError) => {
839
- Log.error(sError);
838
+ .catch((oError) => {
839
+ Log.error("getPage failed", oError);
840
840
  });
841
841
  });
842
842
  }
@@ -853,53 +853,55 @@ sap.ui.define([
853
853
 
854
854
  // fire start-up request if direct start also indicates suppression of pageset request
855
855
  // must be kept before success handler of requestStartUp
856
- oStartupHandler.requestStartupConfig().then((oStartupResult) => {
857
- const sHash = oBoottask._getShellHash();
858
- (ObjectPath.get("sap-ushell-config.services.Container.adapter") || ObjectPath.create("sap-ushell-config.services.Container.adapter")).config = oStartupResult;
859
- const oLaunchPageAdapterConfig = ObjectPath.get("sap-ushell-config.services.LaunchPage.adapter.config") || ObjectPath.create("sap-ushell-config.services.LaunchPage.adapter.config");
860
- const oClientSideTargetResolutionAdapterConfig = ObjectPath.get("sap-ushell-config.services.ClientSideTargetResolution.adapter.config") ||
861
- ObjectPath.create("sap-ushell-config.services.ClientSideTargetResolution.adapter.config");
862
- if (ObjectPath.get("sap-ushell-config.ushell.spaces.enabled")) {
863
- // VisualizationDataProvider and LaunchPageAdapter should have the same configuration
864
- ObjectPath.set("sap-ushell-config.services.VisualizationDataProvider.adapter.config", oLaunchPageAdapterConfig);
865
- // NavigationDataProvider and ClientSideTargetResolutionAdapter should have the same config
866
- ObjectPath.set("sap-ushell-config.services.NavigationDataProvider.adapter.config", oClientSideTargetResolutionAdapterConfig);
867
- }
868
- processDirectStart(oStartupResult);
869
-
870
- // Startup theme processing: as early as possible for performance reasons
871
- sSystemThemeRoot = extractSystemThemeRoot(oStartupResult);
872
- oStartupTheme = determineStartupTheme(oStartupResult, sSystemThemeRoot);
873
- if (!getSapThemeUrlParameter() && oStartupTheme) {
874
- Log.debug("theme: load theme from startup service via window",
875
- null, "sap.ushell_abap.bootstrap");
876
- }
877
- // Request page set and incomplete target mappings only if the home page is loaded
878
- // (not a direct application start)
879
- if (isHomepageHash(sHash) && !ObjectPath.get("sap-ushell-config.ushell.spaces.enabled")) {
880
- // do not create cache entries for PageSet and compact TMs
881
- // otherwise the FLP will freeze when returning to HOME from the cold started app (???)
882
- oPageSetHandler.requestPageSet(oStartupResult);
883
- }
884
- const oTMPromise = oStartupHandler.requestFullTM(oStartupResult);
885
- oClientSideTargetResolutionAdapterConfig.navTargetDataPromise = oTMPromise;
886
- // Do not issue the separate compact request for the launchpage adapter, as it was done in the earlier FLP versions.
887
- // Reuse the existing full target mappings request that is sent in any case.
888
- oLaunchPageAdapterConfig.compactTMPromise = oTMPromise;
889
- ObjectPath.set("sap-ushell-config.services.FlpLaunchPage.adapter.config.compactTMPromise", oTMPromise);
890
-
891
- // Request the target mappings immediately when startup request is finished; this is always requested,
892
- // because we need it for navigation target resolution
893
- return Promise.resolve(oStartupResult);
894
- }, (sMessage) => {
895
- Log.error(`start_up request failed: ${sMessage}`, null,
896
- "sap.ushell_abap.bootstrap");
897
- return Promise.resolve({});
898
- }).then((oStartupResult) => {
899
- // Note: processStartup creates window["sap-ushell-config"]
900
- processStartup(oStartupResult);
901
- fnCallback();
902
- });
856
+ oStartupHandler.requestStartupConfig()
857
+ .catch((oError) => {
858
+ Log.error("start_up request failed:", oError, "sap.ushell_abap.bootstrap");
859
+ return {};
860
+ })
861
+ .then((oStartupResult) => {
862
+ const sHash = oBoottask._getShellHash();
863
+ (ObjectPath.get("sap-ushell-config.services.Container.adapter") || ObjectPath.create("sap-ushell-config.services.Container.adapter")).config = oStartupResult;
864
+ const oLaunchPageAdapterConfig = ObjectPath.get("sap-ushell-config.services.LaunchPage.adapter.config") || ObjectPath.create("sap-ushell-config.services.LaunchPage.adapter.config");
865
+ const oClientSideTargetResolutionAdapterConfig = ObjectPath.get("sap-ushell-config.services.ClientSideTargetResolution.adapter.config") ||
866
+ ObjectPath.create("sap-ushell-config.services.ClientSideTargetResolution.adapter.config");
867
+ if (ObjectPath.get("sap-ushell-config.ushell.spaces.enabled")) {
868
+ // VisualizationDataProvider and LaunchPageAdapter should have the same configuration
869
+ ObjectPath.set("sap-ushell-config.services.VisualizationDataProvider.adapter.config", oLaunchPageAdapterConfig);
870
+ // NavigationDataProvider and ClientSideTargetResolutionAdapter should have the same config
871
+ ObjectPath.set("sap-ushell-config.services.NavigationDataProvider.adapter.config", oClientSideTargetResolutionAdapterConfig);
872
+ }
873
+ processDirectStart(oStartupResult);
874
+
875
+ // Startup theme processing: as early as possible for performance reasons
876
+ sSystemThemeRoot = extractSystemThemeRoot(oStartupResult);
877
+ oStartupTheme = determineStartupTheme(oStartupResult, sSystemThemeRoot);
878
+ if (!getSapThemeUrlParameter() && oStartupTheme) {
879
+ Log.debug("theme: load theme from startup service via window",
880
+ null, "sap.ushell_abap.bootstrap");
881
+ }
882
+ // Request page set and incomplete target mappings only if the home page is loaded
883
+ // (not a direct application start)
884
+ if (isHomepageHash(sHash) && !ObjectPath.get("sap-ushell-config.ushell.spaces.enabled")) {
885
+ // do not create cache entries for PageSet and compact TMs
886
+ // otherwise the FLP will freeze when returning to HOME from the cold started app (???)
887
+ oPageSetHandler.requestPageSet(oStartupResult);
888
+ }
889
+ const oTMPromise = oStartupHandler.requestFullTM(oStartupResult);
890
+ oClientSideTargetResolutionAdapterConfig.navTargetDataPromise = oTMPromise;
891
+ // Do not issue the separate compact request for the launchpage adapter, as it was done in the earlier FLP versions.
892
+ // Reuse the existing full target mappings request that is sent in any case.
893
+ oLaunchPageAdapterConfig.compactTMPromise = oTMPromise;
894
+ ObjectPath.set("sap-ushell-config.services.FlpLaunchPage.adapter.config.compactTMPromise", oTMPromise);
895
+
896
+ // Request the target mappings immediately when startup request is finished; this is always requested,
897
+ // because we need it for navigation target resolution
898
+ return Promise.resolve(oStartupResult);
899
+ })
900
+ .then((oStartupResult) => {
901
+ // Note: processStartup creates window["sap-ushell-config"]
902
+ processStartup(oStartupResult);
903
+ fnCallback();
904
+ });
903
905
  }
904
906
 
905
907
  oBoottask.start = start;
@@ -0,0 +1,47 @@
1
+ // Copyright (c) 2009-2025 SAP SE, All Rights Reserved
2
+
3
+ sap.ui.define([
4
+ ], (
5
+ ) => {
6
+ "use strict";
7
+
8
+ /**
9
+ * Message codes for navigation results.
10
+ * @alias sap.ushell_abap.components.TCodeNavigation.MessageCode
11
+ * @enum {string}
12
+ *
13
+ * @since 1.140.0
14
+ * @private
15
+ * @ui5-restricted sap.esh.search.ui
16
+ */
17
+ const MessageCode = {
18
+ /**
19
+ * Navigation was successful.
20
+ *
21
+ * @since 1.140.0
22
+ * @private
23
+ * @ui5-restricted sap.esh.search.ui
24
+ */
25
+ NAV_SUCCESS: "NAV_SUCCESS",
26
+
27
+ /**
28
+ * No matching inbound was found for the transaction code or a mandatory parameter is missing.
29
+ *
30
+ * @since 1.140.0
31
+ * @private
32
+ * @ui5-restricted sap.esh.search.ui
33
+ */
34
+ NO_INBOUND_FOUND: "NO_INBOUND_FOUND",
35
+
36
+ /**
37
+ * An unknown error occurred during navigation.
38
+ *
39
+ * @since 1.140.0
40
+ * @private
41
+ * @ui5-restricted sap.esh.search.ui
42
+ */
43
+ UNKNOWN_ERROR: "UNKNOWN_ERROR"
44
+ };
45
+
46
+ return MessageCode;
47
+ });
@@ -0,0 +1,59 @@
1
+ // Copyright (c) 2009-2025 SAP SE, All Rights Reserved
2
+
3
+ /**
4
+ * @fileOverview Custom Error class to transport more details
5
+ */
6
+ sap.ui.define([
7
+ "sap/ushell_abap/components/TCodeNavigation/MessageCode"
8
+ ], (
9
+ MessageCode
10
+ ) => {
11
+ "use strict";
12
+
13
+ /**
14
+ * @alias sap.ushell_abap.components.TCodeNavigation.TCodeNavigationError
15
+ * @class
16
+ * @augments Error
17
+ * @classdesc Custom error class for TCode navigation errors.
18
+ *
19
+ * @since 1.140.0
20
+ * @private
21
+ * @ui5-restricted sap.esh.search.ui
22
+ */
23
+ class TCodeNavigationError extends Error {
24
+ constructor (message, options = {}) {
25
+ super(message);
26
+
27
+ /**
28
+ * Error code representing the specific error type.
29
+ * @type {sap.ushell_abap.components.TCodeNavigation.MessageCode}
30
+ *
31
+ * @since 1.140.0
32
+ * @private
33
+ */
34
+ this.code = options.code || MessageCode.UNKNOWN_ERROR;
35
+
36
+ /**
37
+ * Error code representing the specific error type.
38
+ * @type {sap.ushell_abap.components.TCodeNavigation.MessageCode}
39
+ *
40
+ * @since 1.140.0
41
+ * @private
42
+ * @ui5-restricted sap.esh.search.ui
43
+ */
44
+ this.messagecode = this.code;
45
+
46
+ /**
47
+ * Indicates whether the navigation was successful.
48
+ * @type {boolean}
49
+ *
50
+ * @since 1.140.0
51
+ * @private
52
+ * @ui5-restricted sap.esh.search.ui
53
+ */
54
+ this.successful = options.successful ?? false;
55
+ }
56
+ }
57
+
58
+ return TCodeNavigationError;
59
+ });