@sapui5/sap.ushell_abap 1.139.0 → 1.141.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 (55) 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 +19 -13
  4. package/src/main/js/sap/ushell_abap/adapters/abap/AppStateAdapter.js +11 -11
  5. package/src/main/js/sap/ushell_abap/adapters/abap/ClientSideTargetResolutionAdapter.js +81 -81
  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 -2
  8. package/src/main/js/sap/ushell_abap/adapters/abap/ContainerAdapter.js +15 -17
  9. package/src/main/js/sap/ushell_abap/adapters/abap/FlpLaunchPageAdapter.js +230 -167
  10. package/src/main/js/sap/ushell_abap/adapters/abap/LaunchPageAdapter.js +1 -1
  11. package/src/main/js/sap/ushell_abap/adapters/abap/MenuAdapter.js +1 -1
  12. package/src/main/js/sap/ushell_abap/adapters/abap/NavTargetResolutionAdapter.js +1 -1
  13. package/src/main/js/sap/ushell_abap/adapters/abap/NavTargetResolutionInternalAdapter.js +1 -1
  14. package/src/main/js/sap/ushell_abap/adapters/abap/PageBuildingAdapter.js +10 -12
  15. package/src/main/js/sap/ushell_abap/adapters/abap/PagePersistenceAdapter.js +20 -17
  16. package/src/main/js/sap/ushell_abap/adapters/abap/PersonalizationAdapter.js +5 -5
  17. package/src/main/js/sap/ushell_abap/adapters/abap/PersonalizationV2Adapter.js +1 -1
  18. package/src/main/js/sap/ushell_abap/adapters/abap/SearchAdapter.js +1 -1
  19. package/src/main/js/sap/ushell_abap/adapters/abap/SupportTicketAdapter.js +2 -2
  20. package/src/main/js/sap/ushell_abap/adapters/abap/Ui5ComponentLoaderAdapter.js +1 -1
  21. package/src/main/js/sap/ushell_abap/adapters/abap/UserInfoAdapter.js +34 -28
  22. package/src/main/js/sap/ushell_abap/adapters/hana/ContainerAdapter.js +1 -1
  23. package/src/main/js/sap/ushell_abap/bootstrap/evo/SAPCompanionConditionSetter.js +5 -5
  24. package/src/main/js/sap/ushell_abap/bootstrap/evo/XhrLogonEventHandler.js +5 -2
  25. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.bootstrap.utils.js +2 -2
  26. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.configure.ushell.js +1 -1
  27. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.request.pageset.js +54 -31
  28. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.request.startup.js +17 -13
  29. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.theme.handler.js +2 -1
  30. package/src/main/js/sap/ushell_abap/bootstrap/evo/boottask.js +85 -74
  31. package/src/main/js/sap/ushell_abap/components/TCodeNavigation/MessageCode.js +47 -0
  32. package/src/main/js/sap/ushell_abap/components/TCodeNavigation/TCodeNavigationError.js +59 -0
  33. package/src/main/js/sap/ushell_abap/components/TCodeNavigation.js +163 -0
  34. package/src/main/js/sap/ushell_abap/integration/fileshares/AppRuntimeFileShareSupport.js +4 -4
  35. package/src/main/js/sap/ushell_abap/library.js +8 -1
  36. package/src/main/js/sap/ushell_abap/pbServices/ui2/AllCatalogs.js +2 -2
  37. package/src/main/js/sap/ushell_abap/pbServices/ui2/Bag.js +15 -19
  38. package/src/main/js/sap/ushell_abap/pbServices/ui2/Catalog.js +19 -17
  39. package/src/main/js/sap/ushell_abap/pbServices/ui2/Chip.js +14 -23
  40. package/src/main/js/sap/ushell_abap/pbServices/ui2/ChipDefinition.js +4 -5
  41. package/src/main/js/sap/ushell_abap/pbServices/ui2/ChipInstance.js +8 -13
  42. package/src/main/js/sap/ushell_abap/pbServices/ui2/Error.js +2 -2
  43. package/src/main/js/sap/ushell_abap/pbServices/ui2/Factory.js +12 -20
  44. package/src/main/js/sap/ushell_abap/pbServices/ui2/ODataService.js +9 -12
  45. package/src/main/js/sap/ushell_abap/pbServices/ui2/ODataWrapper.js +45 -33
  46. package/src/main/js/sap/ushell_abap/pbServices/ui2/Page.js +3 -5
  47. package/src/main/js/sap/ushell_abap/pbServices/ui2/PageBuildingService.js +19 -22
  48. package/src/main/js/sap/ushell_abap/pbServices/ui2/PageSet.js +9 -10
  49. package/src/main/js/sap/ushell_abap/pbServices/ui2/RemoteCatalogService.js +2 -2
  50. package/src/main/js/sap/ushell_abap/pbServices/ui2/Utils.js +19 -69
  51. package/src/main/js/sap/ushell_abap/pbServices/ui2/contracts/actions.js +3 -4
  52. package/src/main/js/sap/ushell_abap/pbServices/ui2/contracts/configuration.js +1 -1
  53. package/src/main/js/sap/ushell_abap/pbServices/ui2/contracts/visible.js +2 -2
  54. package/src/main/js/sap/ushell_abap/ui5appruntime/AppInfoAdapter.js +2 -2
  55. package/ui5.yaml +33 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapui5/sap.ushell_abap",
3
- "version": "1.139.0",
3
+ "version": "1.141.0",
4
4
  "description": "SAPUI5 Library sap.ushell_abap",
5
5
  "homepage": "https://sap.github.io/ui5-tooling/pages/SAPUI5/",
6
6
  "keywords": [
@@ -15,7 +15,7 @@
15
15
  "build-themes": "cross-env-shell ui5 build --exclude-task=* --include-task=buildThemes --framework-version $npm_package_version"
16
16
  },
17
17
  "devDependencies": {
18
- "@ui5/cli": "^3.11.6",
18
+ "@ui5/cli": "^4.0.24",
19
19
  "cross-env": "^7.0.3"
20
20
  }
21
21
  }
@@ -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.139.0</version>
5
+ <version>1.141.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
 
@@ -6,14 +6,16 @@ sap.ui.define([
6
6
  "sap/ui/thirdparty/jquery",
7
7
  "sap/ui/core/format/DateFormat",
8
8
  "sap/ushell_abap/pbServices/ui2/ODataService",
9
- "sap/ushell/services/_Personalization/constants"
9
+ "sap/ushell/services/_Personalization/constants",
10
+ "sap/ushell/utils/LaunchpadError"
10
11
  ], (
11
12
  ObjectPath,
12
13
  Log,
13
14
  jQuery,
14
15
  DateFormat,
15
16
  ODataService,
16
- constants
17
+ constants,
18
+ LaunchpadError
17
19
  ) => {
18
20
  "use strict";
19
21
 
@@ -34,7 +36,7 @@ sap.ui.define([
34
36
  return sContainerKey.substring(sCONTAINER_KEY_PREFIX.length, sCONTAINER_KEY_PREFIX.length + 40);
35
37
  }
36
38
 
37
- const AdapterContainer = function (sContainerKey, oService, oScope, sAppName) {
39
+ function AdapterContainer (sContainerKey, oService, oScope, sAppName) {
38
40
  this._oService = oService;
39
41
  this._oScope = oScope;
40
42
  this["sap-cache-id"] = ObjectPath.get("_oService._oConfig.services.personalization.cacheId", this);
@@ -55,7 +57,7 @@ sap.ui.define([
55
57
  };
56
58
  this._oPropertyBag = {};
57
59
  this._aOperationQueue = [];
58
- };
60
+ }
59
61
 
60
62
  /**
61
63
  * Resets the container item values to initial ( retaining key, validity, etc!)
@@ -92,11 +94,12 @@ sap.ui.define([
92
94
  // response contains items.results (!)
93
95
  that._oJSONContainer.PersContainerItems = (that._oJSONContainer.PersContainerItems && that._oJSONContainer.PersContainerItems.results) || [];
94
96
  oDeferred.resolve(that);
95
- }, (sErrorMessage) => {
97
+ }, (sErrorMessage, oParsedError) => {
96
98
  // this error handler used to resolve with an empty personalization container
97
99
  // but was changed to reject the promise so that the caller can react to the error
98
100
  Log.error(sErrorMessage);
99
- oDeferred.reject(sErrorMessage);
101
+
102
+ oDeferred.reject(new LaunchpadError(sErrorMessage, oParsedError));
100
103
  });
101
104
  return oDeferred.promise();
102
105
  };
@@ -114,8 +117,8 @@ sap.ui.define([
114
117
 
115
118
  oDataWrapper.create(sRelativeURL, this._oJSONContainer, (/* response */) => {
116
119
  oDeferred.resolve(that);
117
- }, (sErrorMessage) => {
118
- oDeferred.reject(sErrorMessage);
120
+ }, (sErrorMessage, oParsedError) => {
121
+ oDeferred.reject(new LaunchpadError(sErrorMessage, oParsedError));
119
122
  });
120
123
  return oDeferred.promise();
121
124
  };
@@ -132,8 +135,8 @@ sap.ui.define([
132
135
 
133
136
  oDataWrapper.del(sRelativeURL, (response) => {
134
137
  oDeferred.resolve(that);
135
- }, (sErrorMessage) => {
136
- oDeferred.reject(sErrorMessage);
138
+ }, (sErrorMessage, oParsedError) => {
139
+ oDeferred.reject(new LaunchpadError(sErrorMessage, oParsedError));
137
140
  });
138
141
  this._reset();
139
142
  return oDeferred.promise();
@@ -200,8 +203,8 @@ sap.ui.define([
200
203
  };
201
204
 
202
205
  /**
203
- * Locates an item for the key sItemKey,
204
- * returns { index : nr, TrueItemKey : truekey, containerProperty : }
206
+ * @param {string} sItemKey - The item key.
207
+ * @returns {{index: int, TrueItemKey: string, containerProperty: string}} An object containing match details.
205
208
  * either trueKey xor containerProperty is set.
206
209
  * index is filled iff it is a present item
207
210
  */
@@ -276,7 +279,7 @@ sap.ui.define([
276
279
  sItemValue = this._oJSONContainer.PersContainerItems[oItemRef.index].value;
277
280
  try {
278
281
  oItemValue = JSON.parse(sItemValue);
279
- } catch (e) {
282
+ } catch {
280
283
  // Workaround for
281
284
  // GW Bug "true" => "X" and false => "" at the backend
282
285
  // can be removed once Correction of Note 2013368 is implemented in landscape
@@ -299,6 +302,8 @@ sap.ui.define([
299
302
  /**
300
303
  * set oItemValue under sItemKey
301
304
  * returns undefined
305
+ * @param {string} sItemKey the item key
306
+ * @param {object} oItemValue the item value to be set
302
307
  */
303
308
  AdapterContainer.prototype.setItemValue = function (sItemKey, oItemValue) {
304
309
  const sItemValue = JSON.stringify(oItemValue);
@@ -332,6 +337,7 @@ sap.ui.define([
332
337
 
333
338
  /**
334
339
  * delete (1st) item with key sItemKey
340
+ * @param {string} sItemKey the item key
335
341
  */
336
342
  AdapterContainer.prototype.delItem = function (sItemKey) {
337
343
  const oItemRef = this._locateItem(sItemKey);
@@ -2,7 +2,7 @@
2
2
 
3
3
  /**
4
4
  * @fileOverview The Unified Shell's AppStateAdapter for the ABAP platform.
5
- * @version 1.139.0
5
+ * @version 1.141.0
6
6
  */
7
7
  sap.ui.define([
8
8
  "sap/base/util/ObjectPath",
@@ -38,7 +38,7 @@ sap.ui.define([
38
38
  *
39
39
  * @private
40
40
  */
41
- const AppStateAdapter = function (oSystem, sParameters, oConfig) {
41
+ function AppStateAdapter (oSystem, sParameters, oConfig) {
42
42
  this._oConfig = oConfig && oConfig.config;
43
43
  const sAppStateServiceURL = `${ObjectPath.get("services.appState.baseUrl", oConfig) || "/sap/opu/odata/UI2/INTEROP"}/`;
44
44
  const oODataWrapperSettings = {
@@ -47,11 +47,11 @@ sap.ui.define([
47
47
  "sap-client": Container.getLogonSystem().getClient()
48
48
  };
49
49
  this._oWrapper = ODataWrapper.createODataWrapper(oODataWrapperSettings);
50
- function fnDefaultFailure (oMessage) {
51
- throw new SrvcError(oMessage, "sap.ushell_abap.adapters.abap.AppStateAdapter");
50
+ function fnDefaultFailure (sErrorMessage) {
51
+ throw new SrvcError(sErrorMessage, "sap.ushell_abap.adapters.abap.AppStateAdapter");
52
52
  }
53
53
  ODataService.call(this, this._oWrapper, fnDefaultFailure);
54
- };
54
+ }
55
55
 
56
56
  /**
57
57
  * Save the given data sValue for the given key at the persistence layer
@@ -83,8 +83,8 @@ sap.ui.define([
83
83
  this._oWrapper.create(sRelativeUrl, oPayload, (/* response */) => {
84
84
  oDeferred.resolve();
85
85
  }, (sErrorMessage) => {
86
- oDeferred.reject(sErrorMessage);
87
- Log.error(sErrorMessage);
86
+ Log.error(`AppState save failed: ${sErrorMessage}`);
87
+ oDeferred.reject(new Error(sErrorMessage));
88
88
  });
89
89
 
90
90
  return oDeferred.promise();
@@ -111,12 +111,12 @@ sap.ui.define([
111
111
  this._oWrapper.read(sRelativeUrl, (response) => {
112
112
  oDeferredRead.resolve(response.id, response.value);
113
113
  }, (sErrorMessage) => {
114
- Log.error(sErrorMessage);
115
- oDeferredRead.reject(sErrorMessage);
114
+ Log.error(`AppState load failed: ${sErrorMessage}`);
115
+ oDeferredRead.reject(new Error(sErrorMessage));
116
116
  }, false);
117
117
  this._oWrapper.submitBatchQueue(() => { }, (sErrorMessage) => {
118
- Log.error(sErrorMessage);
119
- oDeferredRead.reject(sErrorMessage);
118
+ Log.error(`AppState load failed: ${sErrorMessage}`);
119
+ oDeferredRead.reject(new Error(sErrorMessage));
120
120
  });
121
121
 
122
122
  return oDeferredRead.promise();
@@ -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.139.0
12
+ * @version 1.141.0
13
13
  */
14
14
  sap.ui.define([
15
15
  "sap/base/util/ObjectPath",
@@ -106,7 +106,7 @@ sap.ui.define([
106
106
  * @since 1.34.0
107
107
  * @private
108
108
  */
109
- const ClientSideTargetResolutionAdapter = function (oSystem, sParameters, oAdapterConfig) {
109
+ function ClientSideTargetResolutionAdapter (oSystem, sParameters, oAdapterConfig) {
110
110
  const that = this;
111
111
  // as the method getProductVersion returns the product name, the following holds true.
112
112
  const oContainer = Container;
@@ -214,8 +214,8 @@ sap.ui.define([
214
214
  that._storeFromFullStartupResponse(oFullStartupResult);
215
215
  fnResolve(); // resolve the full promise
216
216
  })
217
- .catch((sMsg) => {
218
- fnReject(sMsg); // reject the full promise
217
+ .catch((oError) => {
218
+ fnReject(oError); // reject the full promise
219
219
  });
220
220
  };
221
221
 
@@ -271,10 +271,10 @@ sap.ui.define([
271
271
  "sap.ushell_abap.adapters.abap.ClientSideTargetResolutionAdapter"
272
272
  );
273
273
  }
274
- }).catch((sReason) => {
274
+ }).catch((oError) => {
275
275
  Log.error(
276
276
  "Initial segment promise was rejected.",
277
- sReason,
277
+ oError,
278
278
  "sap.ushell_abap.adapters.abap.ClientSideTargetResolutionAdapter"
279
279
  );
280
280
  });
@@ -287,7 +287,7 @@ sap.ui.define([
287
287
  );
288
288
  that._storeFromFullStartupResponse(oFullStartupResult);
289
289
  });
290
- };
290
+ }
291
291
 
292
292
  /**
293
293
  * Checks the Resolve Link/Start Up result for Application Dependencies and if present modifies the results
@@ -450,26 +450,26 @@ sap.ui.define([
450
450
  });
451
451
 
452
452
  // must wait on the full target mappings promise to complete before returning
453
- this._oNavTargetPromise.then(() => {
454
- Log.debug(
455
- "Got inbounds from full start_up response",
456
- "",
457
- "sap.ushell_abap.adapters.abap.ClientSideTargetResolutionAdapter"
458
- );
453
+ this._oNavTargetPromise
454
+ .then(() => {
455
+ Log.debug(
456
+ "Got inbounds from full start_up response",
457
+ "",
458
+ "sap.ushell_abap.adapters.abap.ClientSideTargetResolutionAdapter"
459
+ );
459
460
 
460
- // convert (once) when needed
461
- this._aInbounds = this._formatDirectStart(this._aTargetMappings);
461
+ // convert (once) when needed
462
+ this._aInbounds = this._formatDirectStart(this._aTargetMappings);
462
463
 
463
- // we don't want to check for the initial segment in the future anymore, since we've got all the inbounds now.
464
- this.getInbounds = function () {
465
- // replace implementation of this method (no conversion in future calls anymore!)
466
- return Promise.resolve(this._aInbounds);
467
- };
464
+ // we don't want to check for the initial segment in the future anymore, since we've got all the inbounds now.
465
+ this.getInbounds = function () {
466
+ // replace implementation of this method (no conversion in future calls anymore!)
467
+ return Promise.resolve(this._aInbounds);
468
+ };
468
469
 
469
- fnResolve(this._aInbounds);
470
- }, (sMsg) => {
471
- fnReject(sMsg);
472
- });
470
+ fnResolve(this._aInbounds);
471
+ })
472
+ .catch(fnReject);
473
473
  });
474
474
  };
475
475
 
@@ -528,12 +528,12 @@ sap.ui.define([
528
528
  (sNavTargetDataResult) => {
529
529
  const oNavTargetDataResult = JSON.parse(sNavTargetDataResult);
530
530
  if (!oNavTargetDataResult) {
531
- fnReject("Malformed Full TM Result");
531
+ fnReject(new Error("Malformed Full TM Result"));
532
532
  }
533
533
  fnResolve(oNavTargetDataResult);
534
534
  },
535
- (sMessage) => {
536
- fnReject(sMessage);
535
+ (sErrorMessage) => {
536
+ fnReject(new Error(sErrorMessage));
537
537
  }
538
538
  );
539
539
  });
@@ -871,9 +871,7 @@ sap.ui.define([
871
871
  }
872
872
 
873
873
  oODataResponse.results.forEach((oEntry) => {
874
- let oParam;
875
874
  const sEntryName = oEntry.name;
876
- let sEntryValue;
877
875
  let sUserDefaultValue;
878
876
 
879
877
  if (Object.prototype.hasOwnProperty.call(oRes.parameters, sEntryName)) {
@@ -886,8 +884,8 @@ sap.ui.define([
886
884
  required: that._getObjectDefaulting(oEntry, "required", false)
887
885
  };
888
886
 
889
- oParam = oRes.parameters[sEntryName];
890
- sEntryValue = that._getObjectDefaulting(oEntry, "value", "");
887
+ const oParam = oRes.parameters[sEntryName];
888
+ const sEntryValue = that._getObjectDefaulting(oEntry, "value", "");
891
889
 
892
890
  if (oEntry.regexp === true) {
893
891
  oParam.filter = {
@@ -1131,7 +1129,6 @@ sap.ui.define([
1131
1129
  */
1132
1130
  ClientSideTargetResolutionAdapter.prototype._resolveHashFragmentBE = function (sFragmentNoHash) {
1133
1131
  const that = this;
1134
- let bBatchQueueOpened;
1135
1132
  const sFormFactor = Utils.getFormFactor();
1136
1133
 
1137
1134
  /**
@@ -1147,7 +1144,7 @@ sap.ui.define([
1147
1144
  return encodeURIComponent(sUnencoded).replace(/'/g, "''");
1148
1145
  }
1149
1146
 
1150
- bBatchQueueOpened = this._openBatchQueueUnlessOpen(this._getODataWrapper());
1147
+ const bBatchQueueOpened = this._openBatchQueueUnlessOpen(this._getODataWrapper());
1151
1148
 
1152
1149
  /**
1153
1150
  * Adds the given post parameters to a url
@@ -1207,18 +1204,21 @@ sap.ui.define([
1207
1204
 
1208
1205
  that._compactTooLongWdaUrl(oAdjustedResult).then((oCompactedResult) => {
1209
1206
  fnResolve(oCompactedResult);
1210
- }).catch((sMsg) => {
1211
- fnReject(`Could not resolve link '${sFragmentNoHash}' due to compactation failure${sMsg}`);
1207
+ }).catch((oError) => {
1208
+ Log.error(`Could not resolve link '${sFragmentNoHash}' due to compactation failure`, oError);
1209
+ fnReject(oError);
1212
1210
  });
1213
1211
  } else {
1214
- fnReject(`Could not resolve link '${sFragmentNoHash}'`);
1212
+ fnReject(new Error(`Could not resolve link '${sFragmentNoHash}'`));
1215
1213
  }
1216
- }, (sMessage) => {
1217
- fnReject(sMessage);
1214
+ }, (sErrorMessage) => {
1215
+ fnReject(new Error(sErrorMessage));
1218
1216
  });
1219
1217
 
1220
1218
  if (bBatchQueueOpened) {
1221
- that._getODataWrapper().submitBatchQueue(() => { }, fnReject);
1219
+ that._getODataWrapper().submitBatchQueue(() => { }, (sErrorMessage) => {
1220
+ fnReject(new Error(sErrorMessage));
1221
+ });
1222
1222
  }
1223
1223
  });
1224
1224
  };
@@ -1324,6 +1324,45 @@ sap.ui.define([
1324
1324
 
1325
1325
  // check if we have it already
1326
1326
  return new Promise((fnResolve, fnReject) => {
1327
+ /*
1328
+ * Trigger call to front-end server. This case may occur, for example, during application direct start with
1329
+ * a system alias that is not sent by the backend. Backend only sends data about the system aliases that are
1330
+ * mentioned in the systemAlias fields of the target mappings (or for virtual target mappings).
1331
+ */
1332
+ function fnRetryBufferOrUseInterop () {
1333
+ oSystemAliasData = that._readSystemAliasFromBuffer(sSystemAlias); // note: already in ClientSideTargetResolutionAdapter format
1334
+ if (oSystemAliasData) {
1335
+ Log.debug(
1336
+ `System alias '${sSystemAlias}' is now in buffer`,
1337
+ "Skipping INTEROP service call",
1338
+ "sap.ushell_abap.adapters.abap.ClientSideTargetResolutionAdapter"
1339
+ );
1340
+ fnResolve(oSystemAliasData);
1341
+ } else {
1342
+ Log.debug(
1343
+ `System alias '${sSystemAlias}' still not in buffer`,
1344
+ "Resolving via INTEROP service",
1345
+ "sap.ushell_abap.adapters.abap.ClientSideTargetResolutionAdapter"
1346
+ );
1347
+ that._readSystemAliasViaInterop(sSystemAlias)
1348
+ .catch((oError) => {
1349
+ fnReject(oError);
1350
+ })
1351
+ .then((oOdataSystemAliasData) => {
1352
+ oSystemAliasData = that._fixSystemAlias(oOdataSystemAliasData);
1353
+
1354
+ if (oSystemAliasData && oSystemAliasData.id) {
1355
+ that._writeSystemAliasToBuffer(oSystemAliasData);
1356
+ fnResolve(oSystemAliasData);
1357
+ } else {
1358
+ sMessage = "Data returned for system alias is not valid. Has no 'id'. System alias data will not be cached.";
1359
+ Log.warning(`ClientSideTargetResolutionAdapter: ${sMessage}`);
1360
+ fnResolve(oSystemAliasData);
1361
+ }
1362
+ });
1363
+ }
1364
+ }
1365
+
1327
1366
  oSystemAliasData = this._readSystemAliasFromBuffer(sSystemAlias); // note: already in ClientSideTargetResolutionAdapter format
1328
1367
  if (oSystemAliasData) {
1329
1368
  Log.debug(
@@ -1343,46 +1382,7 @@ sap.ui.define([
1343
1382
 
1344
1383
  // must wait at least on the small start_up response before using INTEROP
1345
1384
 
1346
- /*
1347
- * Trigger call to front-end server. This case may occur, for example, during application direct start with
1348
- * a system alias that is not sent by the backend. Backend only sends data about the system aliases that are
1349
- * mentioned in the systemAlias fields of the target mappings (or for virtual target mappings).
1350
- */
1351
- const fnRetryBufferOrUseInterop = function () {
1352
- oSystemAliasData = that._readSystemAliasFromBuffer(sSystemAlias); // note: already in ClientSideTargetResolutionAdapter format
1353
- if (oSystemAliasData) {
1354
- Log.debug(
1355
- `System alias '${sSystemAlias}' is now in buffer`,
1356
- "Skipping INTEROP service call",
1357
- "sap.ushell_abap.adapters.abap.ClientSideTargetResolutionAdapter"
1358
- );
1359
- fnResolve(oSystemAliasData);
1360
- } else {
1361
- Log.debug(
1362
- `System alias '${sSystemAlias}' still not in buffer`,
1363
- "Resolving via INTEROP service",
1364
- "sap.ushell_abap.adapters.abap.ClientSideTargetResolutionAdapter"
1365
- );
1366
- that._readSystemAliasViaInterop(sSystemAlias)
1367
- .catch((sError) => {
1368
- fnReject(sError);
1369
- })
1370
- .then((oOdataSystemAliasData) => {
1371
- oSystemAliasData = that._fixSystemAlias(oOdataSystemAliasData);
1372
-
1373
- if (oSystemAliasData && oSystemAliasData.id) {
1374
- that._writeSystemAliasToBuffer(oSystemAliasData);
1375
- fnResolve(oSystemAliasData);
1376
- } else {
1377
- sMessage = "Data returned for system alias is not valid. Has no 'id'. System alias data will not be cached.";
1378
- Log.warning(`ClientSideTargetResolutionAdapter: ${sMessage}`);
1379
- fnResolve(oSystemAliasData);
1380
- }
1381
- });
1382
- }
1383
- };
1384
-
1385
- this._oInitialSegmentPromise.then(fnRetryBufferOrUseInterop, fnRetryBufferOrUseInterop);
1385
+ this._oInitialSegmentPromise.finally(fnRetryBufferOrUseInterop);
1386
1386
  }
1387
1387
  });
1388
1388
  };
@@ -1520,8 +1520,8 @@ sap.ui.define([
1520
1520
  (oSystemAliasData) => {
1521
1521
  fnResolve(oSystemAliasData);
1522
1522
  },
1523
- (sMessage) => {
1524
- fnReject(sMessage);
1523
+ (sErrorMessage) => {
1524
+ fnReject(new Error(sErrorMessage));
1525
1525
  }
1526
1526
  );
1527
1527
  });
@@ -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.139.0
5
+ * @version 1.141.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.139.0
5
+ * @version 1.141.0
6
6
  */
7
7
  sap.ui.define([
8
8
  "sap/ushell_abap/bootstrap/evo/abap.constants",
@@ -11,7 +11,6 @@ sap.ui.define([
11
11
  "use strict";
12
12
 
13
13
  /**
14
- * @returns {sap.ushell_abap.adapters.abap.ConfigurationDefaultsAdapter}
15
14
  * @private
16
15
  */
17
16
  return function () {
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * @fileOverview The Unified Shell's container adapter for the ABAP platform.
4
4
  *
5
- * @version 1.139.0
5
+ * @version 1.141.0
6
6
  */
7
7
  sap.ui.define([
8
8
  "sap/ui/thirdparty/jquery",
@@ -25,7 +25,7 @@ sap.ui.define([
25
25
  abapUtils,
26
26
  ODataWrapper,
27
27
  URI,
28
- OData,
28
+ datajs,
29
29
  deepClone,
30
30
  ObjectPath,
31
31
  Log,
@@ -42,6 +42,8 @@ sap.ui.define([
42
42
  * Constructs a new instance of the container adapter for the ABAP platform.
43
43
  *
44
44
  * @param {sap.ushell.System} oSystem the logon system (alias, platform, base URL)
45
+ * @param {string} sParameter the parameter to be passed to the container adapter
46
+ * @param {object} oProperties the properties to be passed to the container adapter, e.g. the configuration
45
47
  *
46
48
  * @hideconstructor
47
49
  * @see sap.ushell.services.initializeContainer
@@ -49,7 +51,7 @@ sap.ui.define([
49
51
  * @since 1.11.0
50
52
  * @private
51
53
  */
52
- const ContainerAdapter = function (oSystem, sParameter, oProperties) {
54
+ function ContainerAdapter (oSystem, sParameter, oProperties) {
53
55
  let oUser;
54
56
  const S_LOGOFF_URL = "/sap/public/bc/icf/logoff";
55
57
 
@@ -78,7 +80,7 @@ sap.ui.define([
78
80
  oFrame.setAttribute("src", sUrl);
79
81
 
80
82
  function onload () {
81
- parent.postMessage(sSafeUrl, "*");
83
+ window.parent.postMessage(sSafeUrl, "*");
82
84
  }
83
85
 
84
86
  oFrame.addEventListener("load", onload);
@@ -129,9 +131,7 @@ sap.ui.define([
129
131
  // startup result (modified!)
130
132
  this._setThemeAccessibilityFlags = function (oStartupResult) {
131
133
  if (oStartupResult.userProfile && oStartupResult.userProfile.length) {
132
- let oUserProfileDataTheme;
133
- let oUserProfileDataAccessibility;
134
- oUserProfileDataTheme = oStartupResult.userProfile.filter((profileProperty) => {
134
+ const oUserProfileDataTheme = oStartupResult.userProfile.filter((profileProperty) => {
135
135
  return profileProperty.id && profileProperty.id === "THEME";
136
136
  })[0];
137
137
  // Theme
@@ -145,7 +145,7 @@ sap.ui.define([
145
145
  }
146
146
  // AccessibilityPermitted: Note: we only register whether editing the Accessibility is allowed on the
147
147
  // ABAP Platform, we don't test whether accessibility is available!
148
- oUserProfileDataAccessibility = oStartupResult.userProfile.filter((profileProperty) => {
148
+ const oUserProfileDataAccessibility = oStartupResult.userProfile.filter((profileProperty) => {
149
149
  return profileProperty.id && profileProperty.id === "ACCESSIBILITY";
150
150
  })[0];
151
151
  if (oUserProfileDataAccessibility && oUserProfileDataAccessibility.id) {
@@ -391,11 +391,9 @@ sap.ui.define([
391
391
  });
392
392
  }
393
393
  oDeferred.resolve();
394
- }, (sError) => { // error handler
395
- Log.error(`Reading REMOTE catalogs failed: ${
396
- sError}`, null,
397
- "sap.ushell_abap.adapters.abap.ContainerAdapter");
398
- oDeferred.reject();
394
+ }, (sErrorMessage) => { // error handler
395
+ Log.error("Reading REMOTE catalogs failed:", sErrorMessage, "sap.ushell_abap.adapters.abap.ContainerAdapter");
396
+ oDeferred.reject(new Error(sErrorMessage));
399
397
  });
400
398
  })
401
399
  .catch(oDeferred.reject);
@@ -513,13 +511,13 @@ sap.ui.define([
513
511
  }
514
512
 
515
513
  if (isUserImageEnabled() && oUser && oUser.isJamActive && oUser.isJamActive()) {
516
- OData.read("/sap/bc/ui2/smi/rest_tunnel/Jam/api/v1/OData/Self?$format=json", (oResponseData) => {
514
+ datajs.read("/sap/bc/ui2/smi/rest_tunnel/Jam/api/v1/OData/Self?$format=json", (oResponseData) => {
517
515
  const sJamUserId = oResponseData.results.Id;
518
516
  const sJamUserImageUrl = `/sap/bc/ui2/smi/rest_tunnel/Jam/api/v1/OData/Members('${sJamUserId}')/ProfilePhoto/$value`;
519
517
 
520
518
  oUser.setImage(sJamUserImageUrl);
521
- }, () => {
522
- Log.error("Could not recieve JAM user data");
519
+ }, (oDataJsError) => {
520
+ Log.error("Could not receive JAM user data");
523
521
  });
524
522
  }
525
523
  };
@@ -540,7 +538,7 @@ sap.ui.define([
540
538
  }
541
539
  return sUrl;
542
540
  };
543
- };
541
+ }
544
542
 
545
543
  return ContainerAdapter;
546
544
  });