@sapui5/sap.ushell_abap 1.141.3 → 1.143.0

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 (27) hide show
  1. package/package.json +1 -1
  2. package/src/main/js/sap/ushell_abap/.library +1 -1
  3. package/src/main/js/sap/ushell_abap/adapters/abap/AppStateAdapter.js +1 -1
  4. package/src/main/js/sap/ushell_abap/adapters/abap/ClientSideTargetResolutionAdapter.js +1 -1
  5. package/src/main/js/sap/ushell_abap/adapters/abap/CommonDataModelAdapter.js +1 -1
  6. package/src/main/js/sap/ushell_abap/adapters/abap/ConfigurationDefaultsAdapter.js +1 -1
  7. package/src/main/js/sap/ushell_abap/adapters/abap/ContainerAdapter.js +1 -1
  8. package/src/main/js/sap/ushell_abap/adapters/abap/FlpLaunchPageAdapter.js +6 -6
  9. package/src/main/js/sap/ushell_abap/adapters/abap/LaunchPageAdapter.js +1 -1
  10. package/src/main/js/sap/ushell_abap/adapters/abap/NavTargetResolutionAdapter.js +1 -1
  11. package/src/main/js/sap/ushell_abap/adapters/abap/NavTargetResolutionInternalAdapter.js +1 -1
  12. package/src/main/js/sap/ushell_abap/adapters/abap/PageBuildingAdapter.js +1 -1
  13. package/src/main/js/sap/ushell_abap/adapters/abap/PagePersistenceAdapter.js +1 -1
  14. package/src/main/js/sap/ushell_abap/adapters/abap/PersonalizationAdapter.js +1 -1
  15. package/src/main/js/sap/ushell_abap/adapters/abap/PersonalizationV2Adapter.js +1 -1
  16. package/src/main/js/sap/ushell_abap/adapters/abap/SearchAdapter.js +1 -1
  17. package/src/main/js/sap/ushell_abap/adapters/abap/SupportTicketAdapter.js +1 -1
  18. package/src/main/js/sap/ushell_abap/adapters/abap/Ui5ComponentLoaderAdapter.js +1 -1
  19. package/src/main/js/sap/ushell_abap/adapters/hana/ContainerAdapter.js +1 -1
  20. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.configure.ushell.js +1 -1
  21. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.constants.js +0 -1
  22. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.request.startup.js +5 -5
  23. package/src/main/js/sap/ushell_abap/bootstrap/evo/boottask.js +78 -45
  24. package/src/main/js/sap/ushell_abap/components/TCodeNavigation/MessageCode.js +19 -1
  25. package/src/main/js/sap/ushell_abap/components/TCodeNavigation.js +58 -19
  26. package/src/main/js/sap/ushell_abap/library.js +1 -1
  27. package/ui5.yaml +14 -6
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapui5/sap.ushell_abap",
3
- "version": "1.141.3",
3
+ "version": "1.143.0",
4
4
  "description": "SAPUI5 Library sap.ushell_abap",
5
5
  "homepage": "https://sap.github.io/ui5-tooling/pages/SAPUI5/",
6
6
  "keywords": [
@@ -2,7 +2,7 @@
2
2
  <library xmlns="http://www.sap.com/sap.ui.library.xsd">
3
3
  <name>sap.ushell_abap</name>
4
4
  <vendor>SAP SE</vendor>
5
- <version>1.141.3</version>
5
+ <version>1.143.0</version>
6
6
  <copyright>Copyright (c) 2009-2025 SAP SE, All Rights Reserved</copyright>
7
7
  <documentation>SAP library: sap.ushell_abap</documentation>
8
8
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  /**
4
4
  * @fileOverview The Unified Shell's AppStateAdapter for the ABAP platform.
5
- * @version 1.141.3
5
+ * @version 1.143.0
6
6
  */
7
7
  sap.ui.define([
8
8
  "sap/base/util/ObjectPath",
@@ -9,7 +9,7 @@
9
9
  * <li>provide the resolveHashFragmentFallback function, a fallback method called by ClientSideTargetResolution service.</li>
10
10
  * </ul>
11
11
  *
12
- * @version 1.141.3
12
+ * @version 1.143.0
13
13
  */
14
14
  sap.ui.define([
15
15
  "sap/base/util/ObjectPath",
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * @fileOverview The Unified Shell's CommonDataModelAdapter for the ABAP platform, it is used to avoid 404 when no adapter is found
4
4
  *
5
- * @version 1.141.3
5
+ * @version 1.143.0
6
6
  */
7
7
  sap.ui.define([
8
8
  ], () => {
@@ -2,7 +2,7 @@
2
2
 
3
3
  /**
4
4
  * @fileOverview The ConfigurationDefaults adapter for the ABAP platform.
5
- * @version 1.141.3
5
+ * @version 1.143.0
6
6
  */
7
7
  sap.ui.define([
8
8
  "sap/ushell_abap/bootstrap/evo/abap.constants",
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * @fileOverview The Unified Shell's container adapter for the ABAP platform.
4
4
  *
5
- * @version 1.141.3
5
+ * @version 1.143.0
6
6
  */
7
7
  sap.ui.define([
8
8
  "sap/ui/thirdparty/jquery",
@@ -3,7 +3,7 @@
3
3
  /**
4
4
  * @fileoverview The Unified Shell's page building adapter for the ABAP platform. Private copy. Classical home page functions are deprecated.
5
5
  * @since 1.121
6
- * @version 1.141.3
6
+ * @version 1.143.0
7
7
  */
8
8
  sap.ui.define([
9
9
  "sap/ui/thirdparty/URI",
@@ -3171,13 +3171,13 @@ sap.ui.define([
3171
3171
 
3172
3172
  // check and process sUrl
3173
3173
  if (sUrl[0] === "#" || bSameDomain) {
3174
- const oHash = oUrlParsing.parseShellHash(oUrlParsing.getShellHash(sUrl));
3175
- if (oHash && oTargetMappingSupport.get(fnMkKey(oHash.semanticObject, oHash.action)) !== undefined) {
3174
+ const oParsedHash = oUrlParsing.parseShellHash(oUrlParsing.getShellHash(sUrl));
3175
+ if (oParsedHash && oTargetMappingSupport.get(fnMkKey(oParsedHash.semanticObject, oParsedHash.action)) !== undefined) {
3176
3176
  // User has a target mapping matching the URL, so add this information to the bookmark for form factor based filtering
3177
3177
  oConfiguration.navigation_use_semantic_object = true;
3178
- oConfiguration.navigation_semantic_object = oHash.semanticObject;
3179
- oConfiguration.navigation_semantic_action = oHash.action;
3180
- oConfiguration.navigation_semantic_parameters = oUrlParsing.paramsToString(oHash.params);
3178
+ oConfiguration.navigation_semantic_object = oParsedHash.semanticObject;
3179
+ oConfiguration.navigation_semantic_action = oParsedHash.action;
3180
+ oConfiguration.navigation_semantic_parameters = oUrlParsing.paramsToString(oParsedHash.params);
3181
3181
  }
3182
3182
  }
3183
3183
  return oConfiguration;
@@ -4,7 +4,7 @@
4
4
  * @fileOverview The Unified Shell's page building adapter for the ABAP platform.
5
5
  *
6
6
  * @deprecated since 1.100
7
- * @version 1.141.3
7
+ * @version 1.143.0
8
8
  */
9
9
  sap.ui.define([
10
10
  "sap/ushell_abap/adapters/abap/FlpLaunchPageAdapter"
@@ -8,7 +8,7 @@
8
8
  * service now calls the ClientSideTargetResolution service in the ABAP
9
9
  * platform.
10
10
  *
11
- * @version 1.141.3
11
+ * @version 1.143.0
12
12
  */
13
13
  sap.ui.define([], () => {
14
14
  "use strict";
@@ -8,7 +8,7 @@
8
8
  * service now calls the ClientSideTargetResolution service in the ABAP
9
9
  * platform.
10
10
  *
11
- * @version 1.141.3
11
+ * @version 1.143.0
12
12
  * @since 1.121
13
13
  */
14
14
  sap.ui.define([], () => {
@@ -2,7 +2,7 @@
2
2
 
3
3
  /**
4
4
  * @fileOverview The Unified Shell's page building adapter for the ABAP platform.
5
- * @version 1.141.3
5
+ * @version 1.143.0
6
6
  */
7
7
  sap.ui.define([
8
8
  "sap/base/util/ObjectPath",
@@ -2,7 +2,7 @@
2
2
 
3
3
  /**
4
4
  * @fileOverview PagePersistenceAdapter for the ABAP platform.
5
- * @version 1.141.3
5
+ * @version 1.143.0
6
6
  */
7
7
  sap.ui.define([
8
8
  "sap/base/i18n/Localization",
@@ -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.141.3
10
+ * @version 1.143.0
11
11
  */
12
12
  sap.ui.define([
13
13
  "sap/ushell_abap/adapters/abap/AdapterContainer",
@@ -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.141.3
10
+ * @version 1.143.0
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.141.3
5
+ * @version 1.143.0
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.141.3
5
+ * @version 1.143.0
6
6
  */
7
7
  sap.ui.define([
8
8
  "sap/base/util/isEmptyObject",
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * @fileOverview The Unified Shell's Ui5ComponentLoaderAdapter for the ABAP platform
4
4
  *
5
- * @version 1.141.3
5
+ * @version 1.143.0
6
6
  */
7
7
  sap.ui.define([
8
8
  ], () => {
@@ -3,7 +3,7 @@
3
3
  /**
4
4
  * @fileOverview The Unified Shell's container adapter for the HANA platform.
5
5
  *
6
- * @version 1.141.3
6
+ * @version 1.143.0
7
7
  */
8
8
  sap.ui.define([
9
9
  "sap/ui/thirdparty/jquery",
@@ -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.141.3
17
+ * @version 1.143.0
18
18
  */
19
19
  sap.ui.define([
20
20
  "./abap.constants",
@@ -22,7 +22,6 @@ sap.ui.define([
22
22
  customPreload: {
23
23
  enabled: true,
24
24
  coreResources: [
25
- "sap/ushell/preload-bundles/thirdparty.js",
26
25
  "sap/ushell_abap/bootstrap/evo/core-min-0.js",
27
26
  "sap/ushell_abap/bootstrap/evo/core-min-1.js",
28
27
  "sap/ushell_abap/bootstrap/evo/core-min-2.js",
@@ -120,23 +120,23 @@ sap.ui.define([
120
120
  };
121
121
 
122
122
  /**
123
- * Performs an extra request to retreive a direct Start Request.
123
+ * Performs an extra request to retrieve a direct Start Request.
124
124
  *
125
125
  * @param {object} oStartupConfig
126
126
  * Startup object, used to take cacheId and other parameters
127
- * @param {object} oParsedShellHash
127
+ * @param {sap.ushell.services.URLParsing.DecomposedHash} oParsedHash
128
128
  * The parsed shell hash object. The object must contain semanticObject and action
129
129
  * @param {object} oInitialKeys
130
- * The parameters which shold be copyed to the requested url
130
+ * The parameters which should be copied to the requested url
131
131
  *
132
132
  * @returns {Promise}
133
133
  * Result of the GET request should be resolved
134
134
  */
135
- oStartupHandler.requestDirectStart = function (oStartupConfig, oParsedShellHash, oInitialKeys) {
135
+ oStartupHandler.requestDirectStart = function (oStartupConfig, oParsedHash, oInitialKeys) {
136
136
  const sFormFactor = Utils.getFormFactor();
137
137
  let sQueryPath = "";
138
138
 
139
- sQueryPath = `so=${oParsedShellHash.semanticObject}&action=${oParsedShellHash.action}`;
139
+ sQueryPath = `so=${oParsedHash.semanticObject}&action=${oParsedHash.action}`;
140
140
  sQueryPath += "&systemAliasesFormat=object";
141
141
  Object.keys(oInitialKeys).forEach((sKey) => {
142
142
  sQueryPath += `&${sKey}=${oInitialKeys[sKey]}`;
@@ -44,7 +44,7 @@ sap.ui.define([
44
44
  //
45
45
  // URLParsing service could not used because some functional need before Container is created
46
46
  //
47
- // TODO: move to ushell or seperate module or find other solution
47
+ // TODO: move to ushell or separate module or find other solution
48
48
  //**************************************
49
49
 
50
50
  /**
@@ -214,7 +214,7 @@ sap.ui.define([
214
214
  * @param {string} [oSettings.legacyDateFormat] the date format
215
215
  * @param {string} [oSettings.legacyNumberFormat] the number format
216
216
  * @param {string} [oSettings.legacyTimeFormat] the time format
217
- * @param {object} [oCurrencyFormats] Currecnty Format Information
217
+ * @param {object} [oCurrencyFormats] Currency Format Information
218
218
  * @param {string} [sTimeZoneIana] IANA timezone
219
219
  *
220
220
  * @private
@@ -319,7 +319,7 @@ sap.ui.define([
319
319
  * Determines the theme root for the given theme.
320
320
  * In case the theme begins with sap_ we assume that it is a theme provided by sap and therefore
321
321
  * theme root is set to "". The theme is then loaded by the UI5 http handler. This is necessary
322
- * as the themeing infrastructure is not mandatory and therefore it cannot be ensured that the
322
+ * as the theming infrastructure is not mandatory and therefore it cannot be ensured that the
323
323
  * http handler of the theming infrastructure is running.
324
324
  * @param {string} sTheme theme
325
325
  * @param {string} sSystemThemeRoot system theme root
@@ -727,7 +727,7 @@ sap.ui.define([
727
727
  Log.info("SAPCompanion conditions could not be set.");
728
728
  });
729
729
 
730
- const sShellHash = oBoottask._getShellHash();
730
+ let sShellHash = oBoottask._getShellHash();
731
731
 
732
732
  if (isHomepageHash(sShellHash) && window["sap-ushell-config"].ushell &&
733
733
  window["sap-ushell-config"].ushell.spaces && window["sap-ushell-config"].ushell.spaces.enabled) {
@@ -737,60 +737,93 @@ sap.ui.define([
737
737
  const oFrameLogonManager = oXhrLogonLib.FrameLogonManager.getInstance();
738
738
  getContainer().oFrameLogonManager = oFrameLogonManager;
739
739
  });
740
+
740
741
  if (isDirectStart(sShellHash)) { // only set on direct app start (not #Shell-home)
742
+ sShellHash = this._getFullShellHash(); // take full hash for direct start
743
+
741
744
  let fnResolve;
742
745
  let fnReject;
743
746
  window["sap-ushell-async-libs-promise-directstart"] = new Promise((resolve, reject) => {
744
747
  fnResolve = resolve;
745
748
  fnReject = reject;
746
749
  });
747
- window["sap-ushell-async-libs-promise-directstart"].catch((oError) => { // always provide catch handler
748
- /* silently ignore */
750
+ window["sap-ushell-async-libs-promise-directstart"].catch((oError) => {
751
+ Log.error("Direct app start failed", oError, "sap.ushell_abap.bootstrap");
749
752
  });
753
+
754
+ let oPromise = Promise.resolve();
755
+ if (sShellHash.includes("sap-ssb-eval-id")) {
756
+ // For a Smart Business direct start the parameter sap-ssb-eval-id has to be
757
+ // resolved by Smart Business early so that the resolved parameters are already
758
+ // passed to the app component during the early component creation.
759
+ oPromise = Promise.resolve()
760
+ .then(async () => {
761
+ const SmartBusiness = await new Promise((resolve, reject) => {
762
+ sap.ui.require(["sap/ushell/utils/SmartBusiness"], resolve, reject);
763
+ });
764
+ // At this early point in time the Smart Business library has not been loaded yet.
765
+ // Load it to avoid single file requests.
766
+ // On ABAP, the path where the library is loaded from differs from the
767
+ // common namespace so it has to be mapped.
768
+ await SmartBusiness.loadSmartBusinessLibrary("/sap/bc/ui5_ui5/sap/ssbtileslibs1");
769
+
770
+ let oParsedShellHash = UrlParsing.parseShellHash(sShellHash);
771
+ oParsedShellHash = await SmartBusiness.resolveEvaluationId(oParsedShellHash, true);
772
+ sShellHash = UrlParsing.constructShellHash(oParsedShellHash, true);
773
+ });
774
+ }
775
+
750
776
  // resolve the shell hash and try to load a UI5 component for it; if successful,
751
777
  // the application context for the component will be attached to the resolution result
752
778
  // for non-UI5 targets, it will be empty
753
- getContainer().getServiceAsync("NavTargetResolutionInternal").then((oNavTargetResolutionInternal) => {
754
- const sShellHash = `#${oBoottask._getShellHash()}`;
755
- oNavTargetResolutionInternal.resolveHashFragment(sShellHash)
756
- .done((oResolutionResult) => {
757
- sap.ui.require(["sap/ushell/services/AppConfiguration"], (AppConfiguration) => {
758
- AppConfiguration.setCurrentApplication(oResolutionResult);
759
-
760
- if (oResolutionResult && oResolutionResult.ui5ComponentName) {
761
- const sBasicHash = UrlParsing.getBasicHash(sShellHash);
762
- oResolutionResult.ui5ComponentId = `application-${sBasicHash}-component`;
763
- // create UI5 component early
764
- getContainer().getServiceAsync("Ui5ComponentLoader").then((oUi5ComponentLoader) => {
765
- oUi5ComponentLoader.createComponent(
766
- oResolutionResult,
767
- getParsedShellHash(sShellHash),
768
- createWaitForRendererCreatedPromise(),
769
- "Application"
770
- )
771
- .then((oResolutionResultWithComponentHandle) => {
772
- fnResolve({
773
- resolvedHashFragment: oResolutionResultWithComponentHandle,
774
- dependenciesLoaded: true
779
+ oPromise
780
+ .then(() => {
781
+ return getContainer().getServiceAsync("NavTargetResolutionInternal");
782
+ })
783
+ .then((oNavTargetResolutionInternal) => {
784
+ const oParsedHash = UrlParsing.parseShellHash(sShellHash);
785
+
786
+ oNavTargetResolutionInternal.resolveHashFragment(UrlParsing.ensureLeadingHash(sShellHash))
787
+ .done((oResolutionResult) => {
788
+ sap.ui.require(["sap/ushell/services/AppConfiguration"], (AppConfiguration) => {
789
+ AppConfiguration.setCurrentApplication(oResolutionResult);
790
+
791
+ if (oResolutionResult && oResolutionResult.ui5ComponentName) {
792
+ const sBasicHash = UrlParsing.constructBasicHash(oParsedHash);
793
+ oResolutionResult.ui5ComponentId = `application-${sBasicHash}-component`;
794
+ // create UI5 component early
795
+ getContainer().getServiceAsync("Ui5ComponentLoader").then((oUi5ComponentLoader) => {
796
+ oUi5ComponentLoader.createComponent(
797
+ oResolutionResult,
798
+ [createWaitForRendererCreatedPromise()],
799
+ "Application"
800
+ )
801
+ .then((oResolutionResultWithComponentHandle) => {
802
+ fnResolve({
803
+ resolvedHashFragment: oResolutionResultWithComponentHandle,
804
+ dependenciesLoaded: true
805
+ });
806
+ })
807
+ .catch((oError) => {
808
+ fnReject(oError);
775
809
  });
776
- })
777
- .catch((oError) => {
778
- fnReject(oError);
779
- });
780
- });
781
- } else {
782
- // non-ui5 app
783
- fnResolve({
784
- resolvedHashFragment: oResolutionResult,
785
- dependenciesLoaded: false
786
- });
787
- }
810
+ });
811
+ } else {
812
+ // non-ui5 app
813
+ fnResolve({
814
+ resolvedHashFragment: oResolutionResult,
815
+ dependenciesLoaded: false
816
+ });
817
+ }
818
+ });
819
+ })
820
+ .fail((oError) => {
821
+ fnReject(oError);
788
822
  });
789
- })
790
- .fail((oError) => {
791
- fnReject(oError);
792
- });
793
- });
823
+ })
824
+ .catch((oError) => {
825
+ fnReject(oError);
826
+ });
794
827
  }
795
828
  }
796
829
 
@@ -25,7 +25,16 @@ sap.ui.define([
25
25
  NAV_SUCCESS: "NAV_SUCCESS",
26
26
 
27
27
  /**
28
- * No matching inbound was found for the transaction code or a mandatory parameter is missing.
28
+ * Navigation failed.
29
+ *
30
+ * @since 1.142.0
31
+ * @private
32
+ * @ui5-restricted sap.esh.search.ui
33
+ */
34
+ NAVFLP_HOME_FAILED: "NAV_FLP_HOME_FAILED",
35
+
36
+ /**
37
+ * No matching inbound was found for the transaction code.
29
38
  *
30
39
  * @since 1.140.0
31
40
  * @private
@@ -33,6 +42,15 @@ sap.ui.define([
33
42
  */
34
43
  NO_INBOUND_FOUND: "NO_INBOUND_FOUND",
35
44
 
45
+ /**
46
+ * At least one mandatory parameter is missing for each navigation result of the transaction code.
47
+ *
48
+ * @since 1.141.0
49
+ * @private
50
+ * @ui5-restricted sap.esh.search.ui
51
+ */
52
+ MANDATORY_PARAMETER_MISSING: "MANDATORY_PARAMETER_MISSING",
53
+
36
54
  /**
37
55
  * An unknown error occurred during navigation.
38
56
  *
@@ -4,6 +4,7 @@ sap.ui.define([
4
4
  "sap/ushell/Container",
5
5
  "sap/base/Log",
6
6
  "sap/ushell/api/performance/Extension",
7
+ "sap/ushell/utils/WindowUtils",
7
8
  "sap/ushell/api/performance/NavigationSource",
8
9
  "sap/ushell_abap/components/TCodeNavigation/TCodeNavigationError",
9
10
  "sap/ushell_abap/components/TCodeNavigation/MessageCode"
@@ -11,6 +12,7 @@ sap.ui.define([
11
12
  Container,
12
13
  Log,
13
14
  Extension,
15
+ WindowUtils,
14
16
  NavigationSource,
15
17
  TCodeNavigationError,
16
18
  MessageCode
@@ -52,6 +54,7 @@ sap.ui.define([
52
54
 
53
55
  /**
54
56
  * Navigates to an app intent if the given sTCode matches an inbound's appInfo parameter abap.transaction.
57
+ * The transaction code is case-insensitive and will be converted to uppercase for matching.
55
58
  * If a matching inbound is found, it extracts the semantic object, action, and parameters
56
59
  * and uses the Navigation service to perform the navigation.
57
60
  * @param {string} sTCode The transaction code to search for, can also be an App ID.
@@ -69,28 +72,36 @@ sap.ui.define([
69
72
  const NavDataProvider = await Container.getServiceAsync("NavigationDataProvider");
70
73
  const oNavigationData = await NavDataProvider.getNavigationData();
71
74
 
72
- const oValidInbound = this.#getValidInbound(oNavigationData, sTCode);
75
+ const sTCodeUpper = sTCode.toUpperCase();
76
+ const oValidInbound = this.#getValidInbound(oNavigationData, sTCodeUpper);
73
77
 
74
78
  if (oValidInbound) {
75
- // Extract semantic object, action, and parameters from the matched inbound for navigation
76
- const { semanticObject: sSemanticObject, action: sAction } = oValidInbound;
77
- const oParams = {};
79
+ await TCodeNavigation.#navigateByInbound(oValidInbound, bExplace);
80
+
81
+ return {
82
+ successful: true,
83
+ messagecode: MessageCode.NAV_SUCCESS
84
+ };
85
+ } else if (sTCode === "") {
78
86
  if (bExplace) {
79
- oParams["sap-ushell-navmode"] = "explace";
87
+ // Opens Shell home in a new tab
88
+ const sFLPUrl = Container.getFLPUrl();
89
+ const bResult = WindowUtils.openURL(sFLPUrl);
90
+ if (!bResult) {
91
+ throw new TCodeNavigationError(
92
+ `Navigation to FLP home failed: ${sFLPUrl}`,
93
+ { code: MessageCode.NAVFLP_HOME_FAILED }
94
+ );
95
+ }
96
+ } else {
97
+ await Container.getServiceAsync("Navigation").then((oNavService) => {
98
+ oNavService.navigate({
99
+ target: {
100
+ shellHash: "#"
101
+ }
102
+ });
103
+ });
80
104
  }
81
-
82
- // Log the navigation source for performance tracking
83
- this.#oExtension.addNavigationSource(NavigationSource.SearchDirectLaunch);
84
-
85
- const oNavService = await Container.getServiceAsync("Navigation");
86
- await oNavService.navigate({
87
- target: {
88
- semanticObject: sSemanticObject,
89
- action: sAction
90
- },
91
- params: oParams
92
- });
93
-
94
105
  return {
95
106
  successful: true,
96
107
  messagecode: MessageCode.NAV_SUCCESS
@@ -113,6 +124,34 @@ sap.ui.define([
113
124
  }
114
125
  }
115
126
 
127
+ /**
128
+ * Performs navigation using the Navigation service based on the provided inbound.
129
+ * @param {object} oValidInbound The valid inbound object containing semanticObject and action.
130
+ * @param {boolean} bExplace Indicates whether to open the navigation in a new tab.
131
+ *
132
+ * @since 1.142.0
133
+ * @private
134
+ */
135
+ static async #navigateByInbound (oValidInbound, bExplace) {
136
+ const { semanticObject: sSemanticObject, action: sAction } = oValidInbound;
137
+ const oParams = {};
138
+ if (bExplace) {
139
+ oParams["sap-ushell-navmode"] = "explace";
140
+ }
141
+
142
+ // Log the navigation source for performance tracking
143
+ this.#oExtension.addNavigationSource(NavigationSource.SearchDirectLaunch);
144
+
145
+ const oNavService = await Container.getServiceAsync("Navigation");
146
+ await oNavService.navigate({
147
+ target: {
148
+ semanticObject: sSemanticObject,
149
+ action: sAction
150
+ },
151
+ params: oParams
152
+ });
153
+ }
154
+
116
155
  /**
117
156
  * Finds the first inbound that matches the given transaction code and doesn't have mandatory parameters.
118
157
  * @param {object} oNavigationData The navigation data containing inbounds.
@@ -151,7 +190,7 @@ sap.ui.define([
151
190
  if (!oValidInbound) {
152
191
  throw new TCodeNavigationError(
153
192
  `Mandatory parameter is missing for transaction ${sTCode}`,
154
- { code: MessageCode.NO_INBOUND_FOUND }
193
+ { code: MessageCode.MANDATORY_PARAMETER_MISSING }
155
194
  );
156
195
  }
157
196
 
@@ -30,7 +30,7 @@ sap.ui.define([
30
30
  const ushellAbapLib = Library.init({
31
31
  name: "sap.ushell_abap",
32
32
  apiVersion: 2,
33
- version: "1.141.3",
33
+ version: "1.143.0",
34
34
  dependencies: ["sap.ui.core", "sap.m"],
35
35
  noLibraryCSS: true,
36
36
  extensions: {
package/ui5.yaml CHANGED
@@ -241,8 +241,6 @@ builder:
241
241
  - '!sap/ushell/appRuntime/ui5/plugins/rtaAgent/'
242
242
  - '!sap/ushell/appRuntime/ui5/plugins/rtaShell/'
243
243
  - '!sap/ushell/appRuntime/neo/*.js'
244
- - '!sap/ushell/thirdparty/'
245
- - '!sap/ushell/gen/'
246
244
  resolve: false
247
245
  renderer: false
248
246
  - mode: require
@@ -324,6 +322,16 @@ builder:
324
322
  - mode: preload
325
323
  name: sap/ushell/core-lib-preload
326
324
  filters: &core-min-preload
325
+ - sap/f/gen/ui5/webcomponents/dist/Avatar.js
326
+ - sap/f/gen/ui5/webcomponents/dist/Button.js
327
+ - sap/f/gen/ui5/webcomponents_fiori/dist/ShellBar.js
328
+ - sap/f/gen/ui5/webcomponents_fiori/dist/ShellBarBranding.js
329
+ - sap/f/gen/ui5/webcomponents_fiori/dist/ShellBarItem.js
330
+ - sap/f/gen/ui5/webcomponents_fiori/dist/ShellBarSearch.js
331
+ - sap/f/gen/ui5/webcomponents_fiori/dist/ShellBarSpacer.js
332
+ - sap/f/thirdparty/ui5/webcomponents_icons_business_suite/AllIcons.js
333
+ - sap/f/thirdparty/ui5/webcomponents_icons_tnt/AllIcons.js
334
+ - sap/f/thirdparty/ui5/webcomponents_icons/AllIcons.js
327
335
  - sap/f/GridContainer.js
328
336
  - sap/f/GridContainerItemLayoutData.js
329
337
  - sap/m/App.js
@@ -418,6 +426,7 @@ builder:
418
426
  - sap/ushell/components/tiles/utils.js
419
427
  - sap/ushell/iconfonts.js
420
428
  - sap/ushell/library.js
429
+ - sap/ushell/modules
421
430
  - sap/ushell/override.js
422
431
  - sap/ushell/renderer/History.js
423
432
  - sap/ushell/renderer/Renderer.js
@@ -490,8 +499,6 @@ builder:
490
499
  - sap/ushell_abap/pbServices/
491
500
  - '!sap/viz/libs/sap-viz.js'
492
501
  - '!sap/ui/unified/'
493
- - '!sap/ushell/thirdparty/'
494
- - '!sap/ushell/gen/'
495
502
  resolve: true
496
503
  renderer: true
497
504
  - mode: require
@@ -532,11 +539,10 @@ builder:
532
539
  - sap/ui/util/
533
540
  - sap/ushell/
534
541
  - sap/ushell_abap/
535
- - '!sap/ushell/thirdparty/'
536
- - '!sap/ushell/gen/'
537
542
  - '!**/*-preload*.js'
538
543
  - '!**/*.support.js'
539
544
  - '!**/designtime/'
545
+ - '!sap/f/thirdparty/_dynamics/'
540
546
  - '!sap/m/rules/'
541
547
  - '!sap/ui/core/messagebundle*.properties'
542
548
  - '!sap/ui/core/plugin/'
@@ -581,6 +587,8 @@ builder:
581
587
  - sap/ushell/utils/Deferred.js
582
588
  # dependency of sap.ushell.ui.QuickAccess
583
589
  - sap/ushell/utils/AppType.js
590
+ # Default ushell modules
591
+ - sap/ushell/components/shell/Notifications/NotificationsModule.js
584
592
  resolve: false
585
593
  bundleOptions:
586
594
  optimize: true