@sapui5/sap.suite.ui.generic.template 1.136.3 → 1.138.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 (27) hide show
  1. package/package.json +1 -1
  2. package/src/sap/suite/ui/generic/template/.library +1 -1
  3. package/src/sap/suite/ui/generic/template/AnalyticalListPage/manifest.json +1 -1
  4. package/src/sap/suite/ui/generic/template/Canvas/manifest.json +1 -1
  5. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_en_US_saprigi.properties +0 -2
  6. package/src/sap/suite/ui/generic/template/ListReport/manifest.json +1 -1
  7. package/src/sap/suite/ui/generic/template/ObjectPage/controller/MessageSortingHandler.js +3 -0
  8. package/src/sap/suite/ui/generic/template/ObjectPage/controller/RelatedAppsHandler.js +18 -27
  9. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n.properties +1 -1
  10. package/src/sap/suite/ui/generic/template/ObjectPage/manifest.json +1 -1
  11. package/src/sap/suite/ui/generic/template/ObjectPage/view/fragments/Actions.fragment.xml +1 -2
  12. package/src/sap/suite/ui/generic/template/QuickCreate/manifest.json +1 -1
  13. package/src/sap/suite/ui/generic/template/QuickView/manifest.json +1 -1
  14. package/src/sap/suite/ui/generic/template/detailTemplates/detailUtils.js +2 -1
  15. package/src/sap/suite/ui/generic/template/js/AnnotationHelper.js +9 -1
  16. package/src/sap/suite/ui/generic/template/js/AnnotationHelperStreamSupport.js +6 -3
  17. package/src/sap/suite/ui/generic/template/lib/AppComponent.js +8 -8
  18. package/src/sap/suite/ui/generic/template/lib/CRUDActionHandler.js +1 -0
  19. package/src/sap/suite/ui/generic/template/lib/CRUDManager.js +12 -0
  20. package/src/sap/suite/ui/generic/template/lib/CommonEventHandlers.js +1 -1
  21. package/src/sap/suite/ui/generic/template/lib/MessageUtils.js +76 -5
  22. package/src/sap/suite/ui/generic/template/lib/ai/EasyFilterBarHandler.js +17 -7
  23. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_en_US_saprigi.properties +1 -108
  24. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_id.properties +1 -1
  25. package/src/sap/suite/ui/generic/template/lib/navigation/NavigationController.js +1 -1
  26. package/src/sap/suite/ui/generic/template/lib/presentationControl/SmartTableHandler.js +6 -6
  27. package/src/sap/suite/ui/generic/template/library.js +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapui5/sap.suite.ui.generic.template",
3
- "version": "1.136.3",
3
+ "version": "1.138.1",
4
4
  "description": "SAPUI5 Library sap.suite.ui.generic.template",
5
5
  "keywords": [
6
6
  "sapui5",
@@ -7,7 +7,7 @@
7
7
 
8
8
  (c) Copyright 2009-2015 SAP SE. All rights reserved
9
9
  </copyright>
10
- <version>1.136.3</version>
10
+ <version>1.138.1</version>
11
11
 
12
12
  <documentation>Library with generic Suite UI templates.</documentation>
13
13
 
@@ -8,7 +8,7 @@
8
8
  "i18n": "i18n/i18n.properties",
9
9
  "applicationVersion": {
10
10
  "__comment": "applicationVersion oder componentversion??",
11
- "version": "1.136.3"
11
+ "version": "1.138.1"
12
12
  },
13
13
  "title": "{{TITLE}}",
14
14
  "description": "{{DESCRIPTION}}",
@@ -8,7 +8,7 @@
8
8
  "i18n": "i18n/i18n.properties",
9
9
  "applicationVersion": {
10
10
  "__comment": "applicationVersion oder componentversion??",
11
- "version": "1.136.3"
11
+ "version": "1.138.1"
12
12
  },
13
13
  "title": "Canvas",
14
14
  "description": "Canvas Page",
@@ -63,8 +63,6 @@ OBJECT_NOT_EDITABLE=\u206A\u206A\u206A\u200C\u200D\u200B\u200B\u200C\u200D\u200D
63
63
 
64
64
  NODATA_SMARTTABLE_LR=\u206A\u206A\u206A\u200C\u200C\u200B\u200D\u200B\u200B\u200C\u200D\u200D\u200C\u200B\u200D\u200B\u200B\u200D\u200C\u200C\u200B\u200D\u200C\u200B\u200B\u200C\u200D\u200B\u200B\u200B\u200D\u200D\u200D\u200B\u200B\u200D\u200B\u200D\u200B\u200C\u200C\u200B\u200B\u200C\u206ATo start, set the relevant filters and choose "Go".\u206A\u206A
65
65
 
66
- SEARCH_FILTERS_KEYBOARD_SHORTCUT_DESC=\u206A\u206A\u206A\u200D\u200B\u200B\u200C\u200B\u200C\u200B\u200B\u200B\u200B\u200D\u200B\u200B\u200D\u200C\u200B\u200C\u200C\u200D\u200D\u200D\u200C\u200B\u200C\u200D\u200C\u200B\u200C\u200D\u200B\u200D\u200C\u200C\u200C\u200B\u200D\u200C\u200B\u200C\u206AGo\u206A\u206A
67
-
68
66
 
69
67
  CANCEL_AND_DISCARD=\u206A\u206A\u206A\u200D\u200C\u200B\u200D\u200B\u200B\u200C\u200B\u200B\u200B\u200D\u200D\u200D\u200D\u200C\u200D\u200B\u200B\u200C\u200D\u200D\u200C\u200C\u200B\u200B\u200D\u200D\u200D\u200C\u200B\u200D\u200B\u200D\u200B\u200C\u200D\u200D\u200B\u200D\u200B\u206ADo you want to discard this draft?\u206A\u206A
70
68
 
@@ -8,7 +8,7 @@
8
8
  "i18n": "i18n/i18n.properties",
9
9
  "applicationVersion": {
10
10
  "__comment": "applicationVersion oder componentversion??",
11
- "version": "1.136.3"
11
+ "version": "1.138.1"
12
12
  },
13
13
  "title": "{{TITLE}}",
14
14
  "description": "{{DESCRIPTION}}",
@@ -738,6 +738,9 @@ sap.ui.define([
738
738
  }
739
739
  } else if (aColumnsForMessage.length === 0){
740
740
  //No columns are available for subtitle
741
+ if (!sErrorColumnLabel){
742
+ return;
743
+ }
741
744
  sI18NKey += "_EMPTY";
742
745
  aParams = [sErrorColumnLabel];
743
746
  } else {
@@ -92,46 +92,37 @@ sap.ui.define([
92
92
  }
93
93
  }
94
94
 
95
+ var oAppComponent = oController.getOwnerComponent().getAppComponent();
96
+ // Preparing the array of semantic objects to fetch links.
97
+ // Initialize the array with the current app's semantic object.
98
+ var aSemanticObjects = [sCurrentSemObj];
99
+
95
100
  //Get all semantic object from manifest setting
96
101
  var oSettings = oTemplateUtils.oComponentUtils.getSettings();
97
102
  var oRelatedAppsSettings = oSettings.relatedAppsSettings;
98
-
99
- var oLinksPromise;
100
103
  var bHasRelatedAppSettings = oRelatedAppsSettings && Object.keys(oRelatedAppsSettings).length > 0;
101
-
102
-
103
- if (bHasRelatedAppSettings) {
104
- // Create a set to hold string data types
105
- const oSemanticObjectSet = new Set();
106
-
107
- // Add the current semantic object into the set
108
- oSemanticObjectSet.add(sCurrentSemObj);
109
104
 
105
+ if (bHasRelatedAppSettings) {
110
106
  // Iterate through oRelatedAppSettings and add all related apps into the set
111
107
  for (const sKey in oRelatedAppsSettings) {
112
108
  if (oRelatedAppsSettings.hasOwnProperty(sKey)) {
113
109
  const sSemanticObject = oRelatedAppsSettings[sKey].semanticObject;
114
- oSemanticObjectSet.add(sSemanticObject); // Set will handle duplicates
110
+ aSemanticObjects.push(sSemanticObject);
115
111
  }
116
112
  }
117
-
118
- // Create an array from the set
119
- let aSemanticObjects = Array.from(oSemanticObjectSet);
120
-
121
- // Use the map method to convert the array of strings into an array of objects
122
- aSemanticObjects = aSemanticObjects.map(sSemObj => ({ semanticObject: sSemObj }));
123
-
124
- // aSemanticObjects now contains the desired format
125
- oLinksPromise = oNavigationService.getLinks(aSemanticObjects);
126
- } else {
127
- var oAppComponent = oController.getOwnerComponent().getAppComponent();
128
- oLinksPromise = oNavigationService.getLinks([{
129
- semanticObject: sCurrentSemObj,
113
+ }
114
+ // Remove duplicates
115
+ aSemanticObjects = Array.from(new Set(aSemanticObjects));
116
+ // Add parameters to semantic objects
117
+ var aSemanticObjectsWithParams = aSemanticObjects.map(sSemanticObject => {
118
+ return {
119
+ semanticObject: sSemanticObject,
130
120
  params: oParam,
131
121
  ui5Component: oAppComponent
132
- }]);
133
- }
134
- oLinksPromise.then(function (aResult) {
122
+ };
123
+ });
124
+
125
+ oNavigationService.getLinks(aSemanticObjectsWithParams).then(function (aResult) {
135
126
  // Convert the response into a single dimension array by flattening it
136
127
  var aLinks = aResult.flat(Infinity);
137
128
  // Get structured links
@@ -192,7 +192,7 @@ NAVIGATE_FORWARD_KEYBOARD_SHORTCUT_DESC=Navigate Forward
192
192
  #XTIT, 50: Description for the Navigate Backward keyboard shortcut
193
193
  NAVIGATE_BACKWARD_KEYBOARD_SHORTCUT_DESC=Navigate Backward
194
194
 
195
- #XBUT, 30: Description for the Message Popover keyboard shortcut
195
+ #XBUT, 50: Description for the Message Popover keyboard shortcut
196
196
  OPEN_MESSAGE_BUTTON_MENU_KEYBOARD_SHORTCUT_DESC=Open Details in Message Box
197
197
 
198
198
  #------------template controller reuse texts---------------------
@@ -6,7 +6,7 @@
6
6
  "type": "component",
7
7
  "i18n": "i18n/i18n.properties",
8
8
  "applicationVersion": {
9
- "version": "1.136.3"
9
+ "version": "1.138.1"
10
10
  },
11
11
  "title": "{{TITLE}}",
12
12
  "description": "{{DESCRIPTION}}",
@@ -1,4 +1,4 @@
1
- <core:FragmentDefinition xmlns="sap.m" xmlns:core="sap.ui.core" xmlns:uxap="sap.uxap" xmlns:dt="sap.ui.dt"
1
+ <core:FragmentDefinition xmlns="sap.m" xmlns:core="sap.ui.core" xmlns:uxap="sap.uxap"
2
2
  xmlns:fesr="http://schemas.sap.com/sapui5/extension/sap.ui.core.FESR/1"
3
3
  xmlns:template="http://schemas.sap.com/sapui5/extension/sap.ui.core.template/1"
4
4
  template:require="{
@@ -130,7 +130,6 @@
130
130
  ariaHasPopup="Dialog"
131
131
  fesr:press="fe:sum:summarize"
132
132
  type="Ghost"
133
- dt:designtime="not-adaptable"
134
133
  visible="{_templPrivGlobal>/generic/fioriAI/isSummarizationEnabled}" />
135
134
 
136
135
  <template:if test="{parameter>/settings/showRelatedApps}">
@@ -6,7 +6,7 @@
6
6
  "type": "component",
7
7
  "i18n": "i18n/i18n.properties",
8
8
  "applicationVersion": {
9
- "version": "1.136.3"
9
+ "version": "1.138.1"
10
10
  },
11
11
  "title": "{{TITLE}}",
12
12
  "description": "{{DESCRIPTION}}",
@@ -6,7 +6,7 @@
6
6
  "type": "component",
7
7
  "i18n": "i18n/i18n.properties",
8
8
  "applicationVersion": {
9
- "version": "1.136.3"
9
+ "version": "1.138.1"
10
10
  },
11
11
  "title": "{{TITLE}}",
12
12
  "description": "{{DESCRIPTION}}",
@@ -331,7 +331,7 @@ sap.ui.define([ "sap/suite/ui/generic/template/genericUtilities/FeLogger", "sap/
331
331
  sAncestorsTitle += sSeperator;
332
332
  }
333
333
  sHeaderText = `${sObjectTitle} ${sObjectSubtitle} ${sAncestorsTitle} ${sTitle}`;
334
- return { headerText: sHeaderText };
334
+ return {headerText : sHeaderText};
335
335
  }
336
336
 
337
337
  return {
@@ -339,4 +339,5 @@ sap.ui.define([ "sap/suite/ui/generic/template/genericUtilities/FeLogger", "sap/
339
339
  getControllerBase: getControllerBase,
340
340
  fnConstructTitleAdditionalInfo: fnConstructTitleAdditionalInfo
341
341
  };
342
+
342
343
  });
@@ -3017,7 +3017,7 @@ sap.ui.define(["sap/ui/model/odata/AnnotationHelper",
3017
3017
  };
3018
3018
  }
3019
3019
  },
3020
- getTextArrangement: function (oEntityType, oField) {
3020
+ getTextArrangementFromAnnotations: function (oEntityType, oField) {
3021
3021
  var sTextArrangement;
3022
3022
  // 1. check TextArrangement definition for property directly - has prio 1
3023
3023
  if (oField["com.sap.vocabularies.UI.v1.TextArrangement"] && oField["com.sap.vocabularies.UI.v1.TextArrangement"].EnumMember) {
@@ -3036,11 +3036,19 @@ sap.ui.define(["sap/ui/model/odata/AnnotationHelper",
3036
3036
  sTextArrangement = oAnnotationHelper._mapTextArrangement4smartControl(oEntityType["com.sap.vocabularies.UI.v1.TextArrangement"].EnumMember);
3037
3037
  }
3038
3038
  }
3039
+ return sTextArrangement;
3040
+ },
3041
+ getTextArrangement: function(oEntityType, oField) {
3042
+ var sTextArrangement = this.getTextArrangementFromAnnotations(oEntityType, oField);
3039
3043
  if (!sTextArrangement) { //coming from the title should get a readable description and underneath is the id - the default
3040
3044
  sTextArrangement = "descriptionAndId";
3041
3045
  }
3042
3046
  return sTextArrangement;
3043
3047
  },
3048
+ getTextArrangementForEasyFilter: function (oEntityType, oField) {
3049
+ var sTextArrangement = this.getTextArrangementFromAnnotations(oEntityType, oField) || "idAndDescription";
3050
+ return sTextArrangement;
3051
+ },
3044
3052
  getTextArrangementPath: function (oField) {
3045
3053
  return oField["com.sap.vocabularies.Common.v1.Text"] && oField["com.sap.vocabularies.Common.v1.Text"].Path;
3046
3054
  },
@@ -126,13 +126,16 @@ sap.ui.define([
126
126
 
127
127
  // funtion return the controlling binding path form by annotation/metadata/fieldcontrol path
128
128
  getControlPath: function(oEntitySet, oFieldControl) {
129
+ var sPath = "";
129
130
  var sAnnotationUpdatablePath = oEntitySet && oEntitySet["Org.OData.Capabilities.V1.UpdateRestrictions"] && oEntitySet["Org.OData.Capabilities.V1.UpdateRestrictions"]["Updatable"] && oEntitySet["Org.OData.Capabilities.V1.UpdateRestrictions"]["Updatable"].Path;
130
131
  var sMetadataUpdatable = oEntitySet && (oEntitySet["sap:updatable"] || oEntitySet["sap:updatable-path"]);
131
132
  if (sAnnotationUpdatablePath || sMetadataUpdatable) {
132
- return '${' + (sAnnotationUpdatablePath || sMetadataUpdatable) + '} !== false';
133
- } else if (oFieldControl) {
134
- return '${' + oFieldControl && oFieldControl.Path + '} > "1"';
133
+ sPath = '${' + (sAnnotationUpdatablePath || sMetadataUpdatable) + '} !== false';
135
134
  }
135
+ if (oFieldControl) {
136
+ sPath += '&& ${' + oFieldControl && oFieldControl.Path + '} > "1"';
137
+ }
138
+ return sPath;
136
139
  },
137
140
 
138
141
  getDeleteStreamVisibility: function(oInterface, oMediaType, bIsDraftEnabled, oEntitySet){
@@ -32,7 +32,6 @@ sap.ui.define([
32
32
  "sap/ui/model/json/JSONModel",
33
33
  "sap/ui/model/odata/MessageScope",
34
34
  "sap/ui/model/resource/ResourceModel",
35
- "sap/ui/rta/RuntimeAuthoring",
36
35
  "sap/ui/generic/app/ApplicationController",
37
36
  "sap/suite/ui/generic/template/genericUtilities/ProcessObserver",
38
37
  "sap/suite/ui/generic/template/designtime/utils/DesigntimeHandler",
@@ -76,7 +75,6 @@ sap.ui.define([
76
75
  JSONModel,
77
76
  MessageScope,
78
77
  ResourceModel,
79
- RuntimeAuthoring,
80
78
  ApplicationController,
81
79
  ProcessObserver,
82
80
  DesigntimeHandler,
@@ -421,10 +419,6 @@ sap.ui.define([
421
419
  oLogger.info("Init called for AppComponent " + sAppComponentId);
422
420
  var oDesigntimeHandler = new DesigntimeHandler(oTemplateContract);
423
421
  mDesigntimeHandlers[sAppComponentId] = oDesigntimeHandler;
424
- if (RuntimeAuthoring.willRTAStartAfterReload()){
425
- oLogger.info("AppComponent " + sAppComponentId + " has been restarted for RTA");
426
- oDesigntimeHandler.start(true);
427
- }
428
422
  var oAppRegistryEntry = {
429
423
  appComponent: oAppComponent,
430
424
  oTemplateContract: oTemplateContract,
@@ -950,7 +944,7 @@ sap.ui.define([
950
944
  * @public
951
945
  * @extends sap.ui.core.UIComponent
952
946
  * @author SAP SE
953
- * @version 1.136.3
947
+ * @version 1.138.1
954
948
  * @name sap.suite.ui.generic.template.lib.AppComponent
955
949
  */
956
950
  var oAppComponent = UIComponent.extend("sap.suite.ui.generic.template.lib.AppComponent", {
@@ -1073,10 +1067,16 @@ sap.ui.define([
1073
1067
  designtime: {
1074
1068
  tool : {
1075
1069
  start: function(oAppComponent) {
1070
+ var RuntimeAuthoring = sap.ui.require("sap/ui/rta/RuntimeAuthoring");
1076
1071
  var sAppComponentId = oAppComponent.getId();
1077
1072
  oLogger.info("Ui Adaptation started for AppComponent " + sAppComponentId);
1078
1073
  var oDesigntimeHandler = mDesigntimeHandlers[sAppComponentId];
1079
- oDesigntimeHandler.start();
1074
+ if (RuntimeAuthoring && RuntimeAuthoring.willRTAStartAfterReload()){
1075
+ oLogger.info("AppComponent " + sAppComponentId + " has been restarted for RTA");
1076
+ oDesigntimeHandler.start(true);
1077
+ } else {
1078
+ oDesigntimeHandler.start();
1079
+ }
1080
1080
  },
1081
1081
  stop: function(oAppComponent) {
1082
1082
  var sAppComponentId = oAppComponent.getId();
@@ -91,6 +91,7 @@
91
91
  oRet.close();
92
92
  },
93
93
  onReject: function(){
94
+ MessageUtils.clearWarningCache();
94
95
  (fnNo || Function.prototype)();
95
96
  oRet.close();
96
97
  },
@@ -760,6 +760,14 @@ sap.ui.define(["sap/ui/base/Object",
760
760
  aSuccess = aSuccess.concat(mapToArray(oParsedResult.mSuccess));
761
761
  aWarningIndex = Object.keys(oParsedResult.mWarning);
762
762
  aWarning = mapToArray(oParsedResult.mWarning);
763
+ aWarning.forEach((oWarning) => {
764
+ // Check if the response has a status code 412 (Precondition Failed)
765
+ if (oWarning?.response?.statusCode === "412"){
766
+ const oErrorReponse = JSON.parse(oWarning?.response?.responseText);
767
+ // Cache the error message to avoid duplicate display later
768
+ MessageUtils.cacheWarningMessage(oErrorReponse.error);
769
+ }
770
+ });
763
771
  fnShowWarningPopupIfRequired(oParsedResult.aMessagesForUserDecision, fnDone.bind(null, aResponse));
764
772
  };
765
773
  var fnDone = function(aResponses){
@@ -811,6 +819,8 @@ sap.ui.define(["sap/ui/base/Object",
811
819
 
812
820
  if (oResponseContext && oResponseContext !== oActionContext && oResponseContext.getPath() !== "/undefined"){
813
821
  oServices.oApplication.setNextFocus(function(oBeforeData, fnFallback){
822
+ // Clear any cached error messages since the action has completed
823
+ MessageUtils.clearWarningCache();
814
824
  fnFallback({
815
825
  ignorePersistence: true
816
826
  });
@@ -819,6 +829,8 @@ sap.ui.define(["sap/ui/base/Object",
819
829
  } else {
820
830
  // Restore focus, because we don't navigate out
821
831
  oServices.oApplication.setNextFocus(function(oBeforeData, fnFallback){
832
+ // Clear any cached error messages since the action has completed
833
+ MessageUtils.clearWarningCache();
822
834
  fnFallback();
823
835
  });
824
836
  }
@@ -1103,7 +1103,7 @@ sap.ui.define(["sap/ui/base/Object",
1103
1103
  var vValue = oControl.getBinding("text").getValue(); // could be array or string
1104
1104
  if (Array.isArray(vValue)){
1105
1105
  var oTexts = FormatUtil.getTextsFromDisplayBehaviour(sTextArrangement, vValue[0], vValue[1]);
1106
- if (!oField["sap:unit"] && oMainNavigation) {
1106
+ if (oMainNavigation) {
1107
1107
  oMainNavigation.setDescription(oTexts.secondText);
1108
1108
  }
1109
1109
  sTitle = oTexts.firstText;
@@ -26,6 +26,7 @@ sap.ui.define([
26
26
  */
27
27
  var oLogger = new FeLogger("lib.MessageUtils").getLogger();
28
28
  var oMessageManager = sap.ui.getCore().getMessageManager();
29
+ const aWarningCache = [];
29
30
 
30
31
  /**
31
32
  * Handles errors for all of Smart Templates.
@@ -400,14 +401,14 @@ sap.ui.define([
400
401
  */
401
402
  function fnHandleTransientMessages(oTemplateContract, sActionLabel, oActionButtonConfig) {
402
403
  var fnFilter = oTemplateContract.oApplicationProxy.isTransientMessageNoCustomMessage;
404
+ var sState; // Only one message which is a success (or info/None) message -> show as message toast
405
+ // Remove transient messages that already exist in the error cache
406
+ fnRemoveTransientMessages(isDuplicateMessage.bind(this));
403
407
  var aTransientMessages = fnGetTransientMessages(false, fnFilter);
404
408
  if (aTransientMessages.length === 0) { // no transient messages -> immediate return
405
409
  return Promise.resolve();
406
410
  }
407
411
  fnRemoveTransientMessages(fnFilter); // remove transient messages from the message model. We can use aTransientMessages now.
408
-
409
- var sState;
410
- // Only one message which is a success (or info/None) message -> show as message toast
411
412
  if (aTransientMessages.length === 1) {
412
413
  sState = aTransientMessages[0].type;
413
414
  if (sState === ValueState.Success || sState === ValueState.Information || sState === ValueState.None) {
@@ -418,7 +419,6 @@ sap.ui.define([
418
419
 
419
420
  var oMsgDialogHeaderInfo = getMessageDialogTitleAndSeverity(aTransientMessages, oTemplateContract);
420
421
  sState = oMsgDialogHeaderInfo.sSeverity;
421
-
422
422
  // Now we know that we need to send a popup -> return a Promise that is resolved when the popup is closed
423
423
  return new Promise(function(fnResolve){
424
424
  // Now we prepare the controller of the dialog which will display the messages. However, we have to be careful.
@@ -604,6 +604,73 @@ sap.ui.define([
604
604
  oMessageManager.removeMessages(aMessagesToBeDeleted);
605
605
  }
606
606
 
607
+ /**
608
+ * Caches the error detail from a warning message, if available.
609
+ * This helps in tracking previously shown warnings to avoid duplicates.
610
+ *
611
+ * @param {object} oWarning - The warning object possibly containing error details.
612
+ */
613
+ function cacheWarningMessage(oWarning){
614
+ const oError = oWarning?.innererror?.errordetails?.[0];
615
+ if (oError){
616
+ aWarningCache.push(oError);
617
+ }
618
+ }
619
+
620
+ /**
621
+ * Compares two message objects to check if they are equivalent.
622
+ * Only considers specific parameters in the comparison.
623
+ *
624
+ * @param {object} oMessageDetailsOld - The first error message object
625
+ * @param {object} oMessageDetailsNew - The second error message object.
626
+ * @returns {boolean} - True if both errors are the same, false otherwise.
627
+ */
628
+ function areMessagesSame (oMessageDetailsOld, oMessageDetailsNew) {
629
+ // These are the properties used for comparison
630
+ // We have removed properties numericSeverity, additionalTargets, longtextUrl since they are only relevant for V4
631
+ const aParameters = ["code", "message", "severity", "target", "transition"];
632
+ for (const sParam of aParameters){
633
+ const bIsParamInOldMessage = sParam in oMessageDetailsOld;
634
+ const bIsParamInNewMessage = sParam in oMessageDetailsNew;
635
+ if (bIsParamInOldMessage && bIsParamInNewMessage) {
636
+ // Compare values if property exists in both objects
637
+ if (oMessageDetailsOld[sParam] !== oMessageDetailsNew[sParam]) {
638
+ return false;
639
+ }
640
+ } else if (bIsParamInOldMessage || bIsParamInNewMessage) {
641
+ // Property exists in only one object, not equal
642
+ return false;
643
+ }
644
+ }
645
+ return true;
646
+ }
647
+
648
+ /**
649
+ * Checks whether the given transient message is a duplicate of any cached error message.
650
+ *
651
+ * @param {object} oTransientMessage - The transient message containing technical details.
652
+ * @returns {boolean} - True if it's a duplicate, false otherwise.
653
+ */
654
+ function isDuplicateMessage (oTransientMessage) {
655
+ const rawMessage = oTransientMessage?.technicalDetails?.headers?.["sap-message"];
656
+ if (!rawMessage) {
657
+ return false;
658
+ }
659
+ let oError;
660
+ oError = JSON.parse(rawMessage);
661
+ // Check if any cached error matches the parsed error
662
+ return aWarningCache.some((oCachedError) => this.areMessagesSame(oCachedError, oError));
663
+ }
664
+
665
+ /**
666
+ * Clears the stored cache of warning messages.
667
+ * Should be called when a fresh state is needed (e.g.,action completion).
668
+ */
669
+ function clearWarningCache() {
670
+ // Empty the cache array in-place
671
+ aWarningCache.length = 0;
672
+ }
673
+
607
674
  return {
608
675
  operations: GenericMessageUtil.operations,
609
676
  handleTransientMessages: fnHandleTransientMessages,
@@ -620,6 +687,10 @@ sap.ui.define([
620
687
  getSeverityIconFromIconPool: getSeverityIconFromIconPool,
621
688
  getIconColor: getIconColor,
622
689
  getMessageDialogTitleAndSeverity: getMessageDialogTitleAndSeverity,
623
- deleteMessages: deleteMessages
690
+ deleteMessages: deleteMessages,
691
+ cacheWarningMessage: cacheWarningMessage,
692
+ areMessagesSame: areMessagesSame,
693
+ isDuplicateMessage: isDuplicateMessage,
694
+ clearWarningCache: clearWarningCache
624
695
  };
625
696
  });
@@ -137,12 +137,22 @@ sap.ui.define([
137
137
  });
138
138
  });
139
139
  } else if (oDefaultFilterValue) { // In cases where the default value is coming from the FLP user defaults and does not have ranges and the value is a single value
140
- aValues = [
141
- {
142
- operator: FilterOperator.EQ,
143
- selectedValues: [oDefaultFilterValue]
144
- }
145
- ];
140
+ if (oFilterItemForQuery.dataType === "Edm.Boolean") {
141
+ var boolFilterValue = JSON.parse(oDefaultFilterValue);
142
+ aValues = [
143
+ {
144
+ operator: FilterOperator.EQ,
145
+ selectedValues: [{ value: boolFilterValue, description: boolFilterValue }]
146
+ }
147
+ ];
148
+ } else {
149
+ aValues = [
150
+ {
151
+ operator: FilterOperator.EQ,
152
+ selectedValues: [oDefaultFilterValue]
153
+ }
154
+ ];
155
+ }
146
156
  }
147
157
  oFilterItemForQuery.defaultValue = aValues;
148
158
  }
@@ -574,7 +584,7 @@ sap.ui.define([
574
584
  var oValueHelpProperty = oSFBMetaModel.getODataProperty(oValueHelpEntity, key);
575
585
  var aResults = oResponse.results;
576
586
  var sTextArrangementPath = AnnotationHelper.getTextArrangementPath(oValueHelpProperty);
577
- var sTextArrangement = AnnotationHelper.getTextArrangement(oValueHelpEntity,oValueHelpProperty) || "idOnly";
587
+ var sTextArrangement = AnnotationHelper.getTextArrangementForEasyFilter(oValueHelpEntity,oValueHelpProperty);
578
588
  var navigationProperty = null;
579
589
  var sEntityForTextDescription = null;
580
590
 
@@ -257,9 +257,7 @@ DRAFT_LOCK_EXPIRED=\u206A\u206A\u206A\u200D\u200C\u200B\u200B\u200C\u200C\u200C\
257
257
 
258
258
  ST_NAV_ERROR_NOT_AUTHORIZED_DESC=\u206A\u206A\u206A\u200C\u200B\u200C\u200D\u200C\u200C\u200D\u200B\u200C\u200D\u200C\u200B\u200D\u200C\u200C\u200D\u200B\u200B\u200D\u200B\u200B\u200D\u200C\u200D\u200B\u200B\u200D\u200B\u200B\u200C\u200D\u200C\u200C\u200C\u200B\u200B\u200B\u200B\u200D\u200D\u200B\u206ANavigation to this application is not supported.\u206A\u206A
259
259
 
260
- NEW_OBJECT=\u206A\u206A\u206A\u200C\u200C\u200B\u200C\u200B\u200C\u200B\u200B\u200D\u200D\u200D\u200B\u200B\u200D\u200D\u200C\u200C\u200C\u200D\u200B\u200D\u200D\u200C\u200B\u200B\u200D\u200B\u200D\u200C\u200C\u200C\u200B\u200B\u200C\u200C\u200D\u200B\u200D\u200C\u200C\u200B\u206ANew Object\u206A\u206A
261
-
262
- UNNAMED_OBJECT=\u206A\u206A\u206A\u200D\u200D\u200D\u200B\u200D\u200B\u200B\u200D\u200B\u200C\u200B\u200D\u200D\u200C\u200B\u200C\u200B\u200D\u200D\u200D\u200B\u200D\u200D\u200B\u200D\u200B\u200B\u200C\u200D\u200D\u200B\u200B\u200D\u200D\u200C\u200C\u200D\u200C\u200B\u200B\u206AUnnamed Object\u206A\u206A
260
+ NEW_OBJECT=\u206A\u206A\u206A\u200C\u200C\u200B\u200C\u200B\u200C\u200B\u200B\u200D\u200D\u200D\u200B\u200B\u200D\u200D\u200C\u200C\u200C\u200D\u200B\u200D\u200D\u200C\u200B\u200B\u200D\u200B\u200D\u200C\u200C\u200C\u200B\u200B\u200C\u200C\u200D\u200B\u200D\u200C\u200C\u200B\u206AUnnamed Object\u206A\u206A
263
261
 
264
262
  NOITEMS_SMARTTABLE=\u206A\u206A\u206A\u200C\u200B\u200C\u200C\u200C\u200C\u200D\u200C\u200C\u200B\u200C\u200C\u200D\u200D\u200B\u200C\u200B\u200B\u200B\u200B\u200D\u200B\u200D\u200B\u200D\u200C\u200D\u200B\u200B\u200B\u200C\u200D\u200B\u200D\u200B\u200B\u200D\u200D\u200B\u206ANo items available.\u206A\u206A
265
263
 
@@ -350,108 +348,3 @@ RTA_CONFIGURATION_CANCEL=\u206A\u206A\u206A\u200C\u200B\u200B\u200D\u200B\u200C\
350
348
 
351
349
  RTA_CONFIGURATION_APPLY=\u206A\u206A\u206A\u200C\u200C\u200B\u200B\u200B\u200D\u200C\u200D\u200C\u200C\u200C\u200B\u200C\u200B\u200B\u200D\u200B\u200D\u200C\u200B\u200B\u200D\u200D\u200D\u200D\u200C\u200D\u200D\u200C\u200D\u200D\u200B\u200C\u200D\u200B\u200C\u200D\u200C\u200C\u200D\u200B\u206AApply\u206A\u206A
352
350
 
353
- RTA_CONDENSED_TABLE_LAYOUT=\u206A\u206A\u206A\u200D\u200C\u200D\u200B\u200B\u200D\u200D\u200B\u200B\u200C\u200B\u200C\u200C\u200B\u200C\u200B\u200C\u200D\u200B\u200C\u200D\u200D\u200D\u200C\u200D\u200C\u200C\u200D\u200C\u200D\u200B\u200D\u200D\u200D\u200C\u200B\u200B\u200B\u200B\u200C\u206ACondensed Table Layout\u206A\u206A
354
-
355
- RTA_CONDENSED_TABLE_LAYOUT_DESC=\u206A\u206A\u206A\u200C\u200B\u200D\u200D\u200B\u200C\u200D\u200D\u200C\u200B\u200D\u200B\u200B\u200D\u200D\u200D\u200C\u200C\u200D\u200B\u200B\u200B\u200D\u200D\u200B\u200C\u200B\u200D\u200C\u200B\u200D\u200C\u200C\u200B\u200D\u200B\u200C\u200B\u200B\u200B\u200B\u206ADefine if the table has a condensed layout\u206A\u206A
356
-
357
- RTA_WIDTH_INCLUDING_COLUMN_HEADER=\u206A\u206A\u206A\u200C\u200B\u200D\u200D\u200B\u200B\u200B\u200D\u200C\u200D\u200C\u200D\u200D\u200C\u200B\u200B\u200D\u200C\u200C\u200D\u200D\u200B\u200D\u200C\u200D\u200B\u200C\u200C\u200D\u200C\u200D\u200D\u200D\u200D\u200B\u200D\u200B\u200B\u200C\u200D\u200C\u206AWidth Including Column Header\u206A\u206A
358
-
359
- RTA_WIDTH_INCLUDING_COLUMN_HEADER_DESC=\u206A\u206A\u206A\u200D\u200D\u200C\u200D\u200C\u200C\u200D\u200D\u200C\u200B\u200C\u200D\u200C\u200D\u200D\u200B\u200C\u200C\u200C\u200B\u200B\u200B\u200C\u200D\u200B\u200D\u200B\u200D\u200C\u200C\u200B\u200D\u200C\u200D\u200B\u200C\u200D\u200C\u200C\u200B\u206ADefine if the table has width included in the column header\u206A\u206A
360
-
361
- RTA_SELECT_ALL=\u206A\u206A\u206A\u200C\u200C\u200C\u200D\u200C\u200C\u200D\u200C\u200B\u200C\u200C\u200D\u200C\u200D\u200B\u200B\u200D\u200C\u200C\u200D\u200C\u200B\u200C\u200D\u200B\u200D\u200C\u200C\u200C\u200C\u200D\u200C\u200B\u200D\u200C\u200B\u200B\u200C\u200B\u206AEnable Select All\u206A\u206A
362
-
363
- RTA_SELECT_ALL_DESC=\u206A\u206A\u206A\u200C\u200D\u200D\u200C\u200D\u200D\u200D\u200B\u200B\u200D\u200B\u200D\u200C\u200C\u200D\u200C\u200B\u200C\u200C\u200B\u200B\u200C\u200D\u200B\u200D\u200D\u200C\u200C\u200B\u200B\u200B\u200C\u200C\u200C\u200D\u200D\u200B\u200D\u200C\u200B\u206ADefine if the table should support select all\u206A\u206A
364
-
365
- RTA_CREATE_MODE=\u206A\u206A\u206A\u200C\u200B\u200C\u200D\u200B\u200D\u200B\u200B\u200D\u200D\u200B\u200C\u200D\u200C\u200C\u200C\u200B\u200C\u200D\u200C\u200D\u200D\u200C\u200B\u200C\u200D\u200D\u200C\u200C\u200C\u200C\u200B\u200D\u200C\u200C\u200B\u200C\u200C\u200D\u200B\u200D\u206ACreate Mode\u206A\u206A
366
-
367
- RTA_CREATE_MODE_DESC=\u206A\u206A\u206A\u200C\u200C\u200B\u200B\u200D\u200B\u200B\u200D\u200C\u200D\u200D\u200C\u200B\u200B\u200C\u200B\u200D\u200D\u200D\u200D\u200D\u200D\u200B\u200D\u200B\u200B\u200D\u200B\u200D\u200D\u200C\u200D\u200B\u200C\u200D\u200C\u200B\u200B\u200D\u200B\u200C\u206ADefine the create mode\u206A\u206A
368
-
369
- RTA_SELECTION_LIMIT=\u206A\u206A\u206A\u200C\u200C\u200C\u200B\u200D\u200B\u200B\u200D\u200B\u200B\u200D\u200D\u200C\u200B\u200D\u200B\u200D\u200B\u200C\u200C\u200C\u200D\u200C\u200B\u200B\u200C\u200B\u200B\u200C\u200D\u200D\u200D\u200D\u200B\u200C\u200D\u200D\u200C\u200D\u200D\u200C\u206ASelection Limit\u206A\u206A
370
-
371
- RTA_SELECTION_LIMIT_DESC=\u206A\u206A\u206A\u200C\u200D\u200C\u200C\u200C\u200B\u200B\u200D\u200B\u200D\u200B\u200B\u200C\u200C\u200C\u200D\u200D\u200B\u200B\u200C\u200B\u200B\u200C\u200D\u200B\u200C\u200B\u200D\u200D\u200D\u200D\u200C\u200B\u200B\u200D\u200D\u200D\u200C\u200C\u206ADefine the selection limit\u206A\u206A
372
-
373
- RTA_ENABLE_ADD_CARD_TO_INSIGHTS=\u206A\u206A\u206A\u200D\u200D\u200B\u200B\u200D\u200B\u200C\u200C\u200D\u200B\u200C\u200D\u200D\u200D\u200D\u200B\u200B\u200D\u200D\u200B\u200B\u200D\u200D\u200B\u200D\u200D\u200B\u200D\u200B\u200D\u200D\u200D\u200B\u200B\u200C\u200D\u200D\u200D\u200D\u200D\u206AEnable "Add Card to Insights"\u206A\u206A
374
-
375
- RTA_DISABLE_ADD_CARD_TO_INSIGHTS=\u206A\u206A\u206A\u200C\u200B\u200C\u200B\u200C\u200D\u200B\u200C\u200C\u200C\u200B\u200B\u200D\u200B\u200D\u200C\u200D\u200D\u200D\u200C\u200C\u200B\u200B\u200C\u200C\u200D\u200D\u200C\u200D\u200C\u200D\u200C\u200C\u200C\u200C\u200C\u200D\u200C\u200C\u200D\u200C\u206AHide "Add Card to Insights"\u206A\u206A
376
-
377
- RTA_DISABLE_ADD_CARD_TO_INSIGHTS_DESC=\u206A\u206A\u206A\u200D\u200B\u200B\u200B\u200C\u200C\u200C\u200D\u200C\u200B\u200B\u200D\u200D\u200D\u200B\u200C\u200C\u200B\u200D\u200D\u200C\u200B\u200C\u200C\u200B\u200B\u200B\u200D\u200C\u200C\u200C\u200B\u200B\u200C\u200D\u200B\u200C\u200D\u200D\u200B\u206ADefine if the table should have an Insights button\u206A\u206A
378
-
379
- RTA_OP_VARIANT_MANAGEMENT_TABLE=\u206A\u206A\u206A\u200C\u200B\u200B\u200C\u200B\u200D\u200D\u200B\u200D\u200D\u200D\u200C\u200C\u200B\u200B\u200D\u200D\u200B\u200C\u200B\u200B\u200C\u200D\u200D\u200B\u200D\u200B\u200C\u200B\u200C\u200B\u200D\u200D\u200C\u200C\u200C\u200D\u200B\u200B\u206ATable Variant Management\u206A\u206A
380
-
381
- RTA_OP_VARIANT_MANAGEMENT_TABLE_DESC=\u206A\u206A\u206A\u200C\u200B\u200D\u200B\u200C\u200D\u200C\u200B\u200D\u200D\u200D\u200C\u200C\u200C\u200C\u200D\u200D\u200C\u200C\u200C\u200C\u200C\u200B\u200D\u200B\u200D\u200C\u200D\u200D\u200C\u200B\u200D\u200C\u200C\u200B\u200B\u200C\u200D\u200B\u200B\u206ATable Variant Management\u206A\u206A
382
-
383
- RTA_OP_VARIANT_MANAGEMENT_CHART=\u206A\u206A\u206A\u200C\u200B\u200D\u200C\u200B\u200C\u200C\u200B\u200B\u200D\u200D\u200C\u200C\u200C\u200C\u200B\u200C\u200B\u200D\u200C\u200D\u200B\u200B\u200D\u200C\u200B\u200C\u200B\u200C\u200C\u200C\u200B\u200B\u200D\u200C\u200D\u200C\u200C\u200B\u200D\u206AChart Variant Management\u206A\u206A
384
-
385
- RTA_OP_VARIANT_MANAGEMENT_CHART_DESC=\u206A\u206A\u206A\u200C\u200B\u200D\u200D\u200C\u200C\u200D\u200D\u200D\u200C\u200B\u200D\u200C\u200B\u200C\u200B\u200C\u200D\u200B\u200B\u200B\u200C\u200C\u200C\u200C\u200B\u200B\u200D\u200B\u200B\u200B\u200D\u200C\u200D\u200D\u200C\u200D\u200C\u200C\u200B\u206AChart Variant Management\u206A\u206A
386
-
387
- RTA_INITIAL_LOAD=\u206A\u206A\u206A\u200D\u200D\u200B\u200C\u200B\u200D\u200B\u200D\u200B\u200C\u200C\u200C\u200B\u200C\u200D\u200B\u200D\u200D\u200D\u200C\u200D\u200C\u200B\u200B\u200B\u200C\u200D\u200D\u200D\u200D\u200C\u200D\u200C\u200D\u200B\u200B\u200C\u200D\u200B\u200C\u206AInitial Load\u206A\u206A
388
-
389
- RTA_INITIAL_LOAD_DESC=\u206A\u206A\u206A\u200C\u200B\u200D\u200C\u200C\u200D\u200D\u200D\u200C\u200C\u200C\u200D\u200B\u200B\u200B\u200D\u200C\u200B\u200B\u200D\u200B\u200D\u200D\u200B\u200D\u200B\u200B\u200D\u200D\u200B\u200C\u200D\u200C\u200B\u200C\u200D\u200B\u200C\u200D\u200C\u206AInitial Load\u206A\u206A
390
-
391
- RTA_SMART_VARIANT_MANAGEMENT=\u206A\u206A\u206A\u200C\u200B\u200B\u200C\u200C\u200B\u200C\u200C\u200C\u200C\u200D\u200B\u200B\u200C\u200B\u200B\u200C\u200B\u200D\u200D\u200B\u200D\u200C\u200C\u200C\u200B\u200B\u200C\u200D\u200B\u200C\u200D\u200D\u200C\u200C\u200B\u200D\u200B\u200B\u200B\u200B\u206AVariant Management\u206A\u206A
392
-
393
- RTA_SMART_VARIANT_MANAGEMENT_DESC=\u206A\u206A\u206A\u200D\u200C\u200D\u200B\u200D\u200B\u200C\u200D\u200D\u200C\u200D\u200B\u200C\u200C\u200C\u200B\u200D\u200C\u200D\u200D\u200D\u200B\u200C\u200C\u200D\u200C\u200B\u200D\u200C\u200B\u200C\u200D\u200D\u200C\u200C\u200D\u200B\u200D\u200D\u200D\u206AEnable Smart Variant Management\u206A\u206A
394
-
395
- RTA_HIDE_VARIANT_MANAGEMENT=\u206A\u206A\u206A\u200D\u200D\u200B\u200C\u200B\u200C\u200D\u200C\u200C\u200D\u200B\u200D\u200C\u200C\u200C\u200D\u200C\u200D\u200B\u200C\u200D\u200C\u200D\u200D\u200C\u200B\u200B\u200C\u200C\u200B\u200D\u200B\u200D\u200D\u200D\u200D\u200D\u200C\u206AHide Variant Management\u206A\u206A
396
-
397
- RTA_HIDE_VARIANT_MANAGEMENT_DESC=\u206A\u206A\u206A\u200C\u200B\u200B\u200D\u200B\u200C\u200B\u200C\u200B\u200C\u200B\u200B\u200C\u200B\u200C\u200D\u200C\u200D\u200C\u200C\u200D\u200B\u200D\u200C\u200C\u200B\u200B\u200B\u200D\u200D\u200C\u200C\u200C\u200D\u200C\u200B\u200B\u200C\u200C\u200C\u206AHide Variant Management\u206A\u206A
398
-
399
- RTA_OPEN_IN_EDIT_MODE=\u206A\u206A\u206A\u200D\u200D\u200C\u200B\u200B\u200D\u200D\u200C\u200D\u200B\u200B\u200D\u200C\u200D\u200C\u200D\u200C\u200D\u200D\u200C\u200B\u200D\u200B\u200C\u200C\u200D\u200B\u200D\u200B\u200D\u200C\u200C\u200D\u200B\u200B\u200B\u200B\u200D\u200D\u206AOpen in Edit Mode\u206A\u206A
400
-
401
- RTA_OPEN_IN_EDIT_MODE_DESC=\u206A\u206A\u206A\u200D\u200D\u200C\u200C\u200C\u200B\u200B\u200C\u200D\u200D\u200D\u200D\u200B\u200D\u200C\u200B\u200B\u200B\u200D\u200D\u200C\u200B\u200C\u200C\u200B\u200B\u200C\u200D\u200C\u200C\u200C\u200D\u200B\u200B\u200D\u200B\u200B\u200B\u200B\u200D\u206ADefine the selection limit\u206A\u206A
402
-
403
- RTA_DEFAULT_CONTENT_VIEW=\u206A\u206A\u206A\u200C\u200C\u200D\u200D\u200D\u200C\u200B\u200C\u200C\u200D\u200C\u200B\u200C\u200B\u200B\u200B\u200C\u200B\u200B\u200D\u200B\u200B\u200B\u200D\u200C\u200C\u200C\u200C\u200C\u200B\u200C\u200B\u200B\u200C\u200D\u200B\u200C\u200D\u206ADefault Content View\u206A\u206A
404
-
405
- RTA_DEFAULT_CONTENT_VIEW_DESC=\u206A\u206A\u206A\u200C\u200C\u200B\u200C\u200B\u200B\u200D\u200D\u200C\u200C\u200D\u200C\u200D\u200D\u200B\u200C\u200C\u200D\u200C\u200C\u200B\u200B\u200D\u200D\u200D\u200B\u200B\u200B\u200B\u200B\u200B\u200B\u200C\u200D\u200B\u200B\u200B\u200D\u200D\u200C\u200C\u206ADefault Content View\u206A\u206A
406
-
407
- RTA_ENABLE_TABLE_FILTER_IN_PAGE_VARIANT=\u206A\u206A\u206A\u200D\u200C\u200C\u200C\u200D\u200B\u200C\u200D\u200C\u200D\u200C\u200C\u200D\u200C\u200D\u200D\u200C\u200D\u200D\u200D\u200B\u200C\u200C\u200C\u200C\u200C\u200C\u200B\u200D\u200B\u200D\u200B\u200C\u200C\u200C\u200D\u200D\u200B\u206AEnable Table Filter in Page Variant\u206A\u206A
408
-
409
- RTA_ENABLE_TABLE_FILTER_IN_PAGE_VARIANT_DESC=\u206A\u206A\u206A\u200D\u200D\u200C\u200B\u200B\u200C\u200B\u200C\u200B\u200D\u200C\u200B\u200B\u200B\u200C\u200C\u200B\u200D\u200C\u200B\u200D\u200D\u200B\u200C\u200D\u200B\u200B\u200B\u200D\u200D\u200B\u200C\u200B\u200B\u200C\u200B\u200D\u200D\u200C\u200B\u206AEnable Table Filter in Page Variant\u206A\u206A
410
-
411
- RTA_NAVIGATION_PROPERTIES_LIST_REPORT_FILTER=\u206A\u206A\u206A\u200C\u200B\u200C\u200B\u200D\u200B\u200B\u200B\u200D\u200C\u200D\u200C\u200B\u200B\u200B\u200B\u200D\u200D\u200C\u200C\u200B\u200C\u200D\u200D\u200C\u200C\u200B\u200B\u200C\u200D\u200C\u200B\u200D\u200B\u200C\u200D\u200C\u200D\u200C\u200C\u200D\u206ANavigation Properties\u206A\u206A
412
-
413
- RTA_NAVIGATION_PROPERTIES_LIST_REPORT_FILTER_DESC=\u206A\u206A\u206A\u200C\u200B\u200B\u200B\u200B\u200C\u200C\u200D\u200B\u200C\u200B\u200C\u200C\u200D\u200C\u200B\u200C\u200B\u200C\u200B\u200C\u200C\u200B\u200B\u200C\u200C\u200D\u200B\u200D\u200B\u200B\u200B\u200C\u200C\u200C\u200D\u200B\u200C\u200B\u200C\u200C\u206ANavigation Properties\u206A\u206A
414
-
415
- RTA_SHOW_GO_BUTTON_ON_FILTER_BAR_ANALYTICAL_PAGE=\u206A\u206A\u206A\u200C\u200C\u200B\u200C\u200B\u200B\u200C\u200D\u200B\u200D\u200D\u200B\u200C\u200B\u200C\u200D\u200B\u200D\u200D\u200B\u200D\u200C\u200B\u200D\u200D\u200C\u200C\u200D\u200C\u200D\u200D\u200B\u200D\u200B\u200C\u200C\u200C\u200C\u200B\u200C\u200B\u206AShow Go Button on Filter Bar\u206A\u206A
416
-
417
- RTA_SHOW_GO_BUTTON_ON_FILTER_BAR_DESC_ANALYTICAL_PAGE_DESC=\u206A\u206A\u206A\u200C\u200B\u200C\u200B\u200B\u200C\u200C\u200B\u200D\u200C\u200B\u200C\u200C\u200D\u200B\u200B\u200B\u200D\u200B\u200C\u200C\u200C\u200D\u200D\u200C\u200B\u200D\u200B\u200C\u200D\u200C\u200C\u200C\u200D\u200B\u200D\u200B\u200B\u200C\u206AShow Go Button on Filter Bar\u206A\u206A
418
-
419
- RTA_HIDE_VISUAL_FILTER=\u206A\u206A\u206A\u200C\u200C\u200C\u200C\u200B\u200D\u200D\u200C\u200C\u200B\u200C\u200D\u200C\u200D\u200D\u200D\u200D\u200D\u200C\u200B\u200C\u200D\u200D\u200C\u200B\u200B\u200C\u200D\u200C\u200C\u200C\u200C\u200D\u200B\u200D\u200B\u200D\u206AHide Visual Filter\u206A\u206A
420
-
421
- RTA_HIDE_VISUAL_FILTER_DESC=\u206A\u206A\u206A\u200C\u200B\u200D\u200C\u200D\u200C\u200D\u200C\u200B\u200D\u200D\u200D\u200C\u200C\u200B\u200C\u200B\u200C\u200B\u200B\u200D\u200B\u200C\u200D\u200B\u200D\u200B\u200C\u200C\u200D\u200B\u200C\u200C\u200D\u200D\u200B\u200C\u200C\u200C\u206AHide Visual Filter\u206A\u206A
422
-
423
- RTA_DEFAULT_FILTER_MODE=\u206A\u206A\u206A\u200C\u200B\u200C\u200B\u200D\u200C\u200B\u200B\u200C\u200D\u200B\u200B\u200D\u200D\u200D\u200C\u200B\u200C\u200C\u200C\u200C\u200D\u200D\u200D\u200C\u200B\u200D\u200B\u200B\u200D\u200C\u200C\u200C\u200D\u200B\u200C\u200C\u200B\u200B\u200B\u206ADefault Filter Mode\u206A\u206A
424
-
425
- RTA_DEFAULT_FILTER_MODE_DESC=\u206A\u206A\u206A\u200C\u200C\u200B\u200B\u200B\u200B\u200D\u200D\u200D\u200B\u200D\u200C\u200B\u200C\u200D\u200D\u200C\u200B\u200B\u200B\u200C\u200B\u200D\u200B\u200D\u200C\u200D\u200C\u200C\u200C\u200D\u200B\u200C\u200B\u200B\u200D\u200B\u200B\u200B\u200D\u206ADefault Filter Mode\u206A\u206A
426
-
427
- RTA_SELECTION_MODE=\u206A\u206A\u206A\u200C\u200C\u200D\u200D\u200D\u200C\u200C\u200B\u200D\u200B\u200C\u200D\u200D\u200C\u200D\u200B\u200D\u200B\u200D\u200B\u200D\u200B\u200C\u200D\u200C\u200B\u200D\u200D\u200B\u200C\u200B\u200B\u200B\u200B\u200C\u200B\u200D\u200C\u200D\u200B\u206ASelection Mode\u206A\u206A
428
-
429
- RTA_SELECTION_MODE_DESC=\u206A\u206A\u206A\u200D\u200D\u200D\u200D\u200C\u200C\u200D\u200B\u200C\u200B\u200C\u200B\u200B\u200B\u200D\u200D\u200D\u200B\u200D\u200D\u200D\u200C\u200D\u200D\u200D\u200B\u200B\u200C\u200C\u200B\u200D\u200B\u200B\u200B\u200D\u200D\u200C\u200B\u200B\u200B\u206ADefine the selection mode\u206A\u206A
430
-
431
- RTA_OP_EDITABLE_HEADER_CONTENT=\u206A\u206A\u206A\u200D\u200D\u200B\u200C\u200B\u200D\u200C\u200B\u200B\u200C\u200D\u200D\u200B\u200D\u200C\u200C\u200D\u200C\u200B\u200B\u200C\u200D\u200C\u200C\u200D\u200C\u200D\u200D\u200C\u200C\u200B\u200B\u200C\u200B\u200C\u206AEditable Header Content\u206A\u206A
432
-
433
- RTA_OP_EDITABLE_HEADER_CONTENT_DESC=\u206A\u206A\u206A\u200C\u200C\u200D\u200B\u200D\u200D\u200B\u200C\u200B\u200C\u200B\u200C\u200B\u200C\u200C\u200C\u200D\u200C\u200D\u200D\u200D\u200B\u200C\u200C\u200D\u200C\u200B\u200D\u200B\u200D\u200C\u200C\u200B\u200B\u200D\u200C\u200C\u200B\u200C\u206AEditable Header Content\u206A\u206A
434
-
435
- RTA_OP_SHOW_RELATED_APPS=\u206A\u206A\u206A\u200C\u200B\u200D\u200D\u200C\u200C\u200D\u200B\u200D\u200C\u200C\u200C\u200C\u200B\u200D\u200D\u200B\u200B\u200B\u200D\u200D\u200D\u200C\u200D\u200C\u200C\u200D\u200C\u200D\u200B\u200C\u200D\u200B\u200B\u200D\u200B\u200D\u200B\u200D\u200D\u200C\u206AShow Related Apps\u206A\u206A
436
-
437
- RTA_OP_SHOW_RELATED_APPS_DESC=\u206A\u206A\u206A\u200C\u200B\u200D\u200C\u200D\u200B\u200C\u200D\u200D\u200D\u200D\u200D\u200B\u200B\u200D\u200C\u200B\u200C\u200B\u200B\u200D\u200C\u200D\u200D\u200B\u200D\u200D\u200D\u200C\u200B\u200B\u200C\u200C\u200D\u200C\u200D\u200C\u200D\u200C\u200C\u200B\u206AShow Related Apps\u206A\u206A
438
-
439
- RTA_SCOPE_OF_THE_CHANGES=\u206A\u206A\u206A\u200D\u200B\u200C\u200C\u200D\u200B\u200D\u200D\u200B\u200C\u200D\u200B\u200C\u200B\u200C\u200C\u200D\u200D\u200C\u200C\u200C\u200B\u200D\u200C\u200C\u200B\u200C\u200B\u200D\u200D\u200D\u200D\u200C\u200B\u200B\u200B\u200C\u200D\u200D\u206AScope of the Changes\u206A\u206A
440
-
441
- RTA_SCOPE_OF_THE_CHANGES_TOOLTIP=\u206A\u206A\u206A\u200C\u200B\u200B\u200D\u200D\u200B\u200D\u200B\u200C\u200C\u200D\u200D\u200C\u200C\u200B\u200B\u200D\u200D\u200B\u200B\u200C\u200B\u200C\u200C\u200B\u200B\u200D\u200D\u200D\u200B\u200C\u200B\u200D\u200C\u200D\u200B\u200D\u200B\u200C\u200C\u200C\u206AScope of the Changes\u206A\u206A
442
-
443
- RTA_SCROLLTHRESHOLD_FOR_TABLE_CONFIG=\u206A\u206A\u206A\u200C\u200C\u200D\u200D\u200C\u200C\u200C\u200B\u200D\u200C\u200C\u200D\u200D\u200B\u200C\u200D\u200B\u200D\u200C\u200B\u200B\u200C\u200C\u200D\u200C\u200B\u200D\u200D\u200D\u200D\u200D\u200B\u200B\u200C\u200C\u200B\u200B\u200C\u200C\u200B\u206AScroll Threshold\u206A\u206A
444
-
445
- RTA_SCROLLTHRESHOLD_DESC_FOR_TABLE_CONFIG=\u206A\u206A\u206A\u200C\u200C\u200D\u200C\u200B\u200C\u200C\u200B\u200D\u200B\u200D\u200C\u200D\u200D\u200B\u200C\u200C\u200B\u200C\u200C\u200C\u200D\u200C\u200B\u200B\u200D\u200D\u200C\u200B\u200C\u200D\u200C\u200C\u200D\u200D\u200C\u200B\u200D\u200C\u206ADefine the Scroll Threshold\u206A\u206A
446
-
447
- RTA_THRESHOLD_FOR_TABLE_CONFIG=\u206A\u206A\u206A\u200C\u200D\u200D\u200B\u200D\u200B\u200D\u200C\u200B\u200C\u200C\u200B\u200C\u200C\u200D\u200B\u200D\u200D\u200C\u200B\u200D\u200C\u200B\u200C\u200D\u200D\u200C\u200C\u200B\u200C\u200B\u200B\u200C\u200C\u200B\u200D\u200C\u200B\u200B\u200D\u206AThreshold\u206A\u206A
448
-
449
- RTA_THRESHOLD_DESC_FOR_TABLE_CONFIG=\u206A\u206A\u206A\u200C\u200B\u200B\u200C\u200D\u200B\u200C\u200C\u200C\u200C\u200C\u200C\u200C\u200C\u200C\u200D\u200C\u200D\u200B\u200D\u200B\u200B\u200C\u200C\u200C\u200C\u200B\u200D\u200C\u200D\u200B\u200D\u200C\u200B\u200C\u200C\u200B\u200D\u200B\u206ADefine the Threshold\u206A\u206A
450
-
451
- RTA_TABLE_TYPE_CONFIG=\u206A\u206A\u206A\u200C\u200C\u200C\u200B\u200B\u200C\u200D\u200D\u200B\u200B\u200C\u200C\u200D\u200D\u200B\u200D\u200C\u200D\u200C\u200C\u200C\u200D\u200B\u200D\u200C\u200C\u200C\u200C\u200C\u200D\u200D\u200C\u200B\u200D\u200D\u200B\u200D\u200B\u200B\u200B\u200B\u206ATable Type\u206A\u206A
452
-
453
- RTA_TABLE_TYPE_DESC_CONFIG=\u206A\u206A\u206A\u200C\u200B\u200B\u200B\u200D\u200C\u200C\u200C\u200C\u200B\u200D\u200B\u200C\u200B\u200C\u200D\u200B\u200B\u200C\u200C\u200D\u200B\u200D\u200D\u200D\u200C\u200B\u200B\u200B\u200C\u200C\u200B\u200C\u200C\u200D\u200D\u200D\u200D\u200C\u200D\u200B\u206ADefine which table type should be used\u206A\u206A
454
-
455
- RTA_ENABLE_DATE_RANGE_FILTER=\u206A\u206A\u206A\u200D\u200B\u200D\u200C\u200D\u200C\u200D\u200B\u200B\u200C\u200D\u200C\u200B\u200C\u200C\u200B\u200B\u200C\u200D\u200B\u200B\u200D\u200D\u200D\u200D\u200C\u200B\u200B\u200B\u200B\u200C\u200B\u200C\u200D\u200C\u200B\u200D\u200C\u200B\u200B\u206AEnable Date Range\u206A\u206A
456
-
457
- RTA_ENABLE_DATE_RANGE_FILTER_DESC=\u206A\u206A\u206A\u200C\u200C\u200C\u200C\u200D\u200C\u200C\u200C\u200C\u200D\u200B\u200B\u200D\u200C\u200B\u200D\u200C\u200B\u200C\u200D\u200C\u200B\u200D\u200D\u200C\u200B\u200C\u200B\u200C\u200D\u200C\u200D\u200D\u200D\u200D\u200B\u200C\u200C\u200B\u200C\u200D\u206AEnable Date Range\u206A\u206A
@@ -444,7 +444,7 @@ RTA_SCROLLTHRESHOLD_FOR_TABLE_CONFIG=Ambang Batas Gulir
444
444
 
445
445
  RTA_SCROLLTHRESHOLD_DESC_FOR_TABLE_CONFIG=Tentukan Ambang Batas Gulir
446
446
 
447
- RTA_THRESHOLD_FOR_TABLE_CONFIG=Ambang
447
+ RTA_THRESHOLD_FOR_TABLE_CONFIG=Ambang Batas
448
448
 
449
449
  RTA_THRESHOLD_DESC_FOR_TABLE_CONFIG=Tentukan Ambang Batas
450
450
 
@@ -3216,7 +3216,7 @@ sap.ui.define(["sap/ui/base/Object",
3216
3216
  * @param {sap.suite.ui.generic.template.lib.AppComponent} oAppComponent The AppComponent instance
3217
3217
  * @public
3218
3218
  * @extends sap.ui.base.Object
3219
- * @version 1.136.3
3219
+ * @version 1.138.1
3220
3220
  * @since 1.30.0
3221
3221
  * @alias sap.suite.ui.generic.template.lib.NavigationController
3222
3222
  */
@@ -588,18 +588,18 @@ sap.ui.define([
588
588
  const filterIgnoredFields = function (sField) {
589
589
  return !aIgnoreFields.has(sField);
590
590
  };
591
- const hasUIHidden = function(sField) {
592
- return !!mPropertyByFieldName[sField]["com.sap.vocabularies.UI.v1.Hidden"];
591
+ const hasUIHiddenOrUndefined = function(sField) {
592
+ return !!mPropertyByFieldName[sField]["com.sap.vocabularies.UI.v1.Hidden"] || oItemContext.getProperty(sField) === undefined;
593
593
  };
594
594
  for (const oProperty of aProperties){
595
595
  mPropertyByFieldName[oProperty.name] = oProperty;
596
596
  }
597
597
  //Filter unwanted fields ("IsActiveEntity", "DraftUUID") from technical keys
598
598
  aTechnicalKeys = aTechnicalKeys.filter(key => filterIgnoredFields(key.name));
599
- //Check for UI.Hidden fields, even if one of the field is UI.hidden we discard all the keys
600
- aSemanticKeys = aSemanticKeys.some(key => hasUIHidden(key.PropertyPath)) ? [] : aSemanticKeys;
601
- aTechnicalKeys = aTechnicalKeys.some(key => hasUIHidden(key.name)) ? [] : aTechnicalKeys;
602
- if (oHeaderInfoField && oHeaderInfoField?.Title?.Value?.Path && !hasUIHidden(oHeaderInfoField.Title.Value.Path)) { //HeaderInfoField is available
599
+ //Check for UI.Hidden fields or undefined fields, even if one of the field satisfies these conditions we discard all the keys
600
+ aSemanticKeys = aSemanticKeys.some(key => hasUIHiddenOrUndefined(key.PropertyPath)) ? [] : aSemanticKeys;
601
+ aTechnicalKeys = aTechnicalKeys.some(key => hasUIHiddenOrUndefined(key.name)) ? [] : aTechnicalKeys;
602
+ if (oHeaderInfoField && oHeaderInfoField?.Title?.Value?.Path && !hasUIHiddenOrUndefined(oHeaderInfoField.Title.Value.Path)) { //HeaderInfoField is available
603
603
  aRelevantColumns.push(getFieldProps(oHeaderInfoField.Title.Value.Path));
604
604
  } else if (aSemanticKeys.length > 0){ //HeaderInfoField is not available, but SemanticKey is available
605
605
  aRelevantColumns = aSemanticKeys.map(key => getFieldProps(key.PropertyPath));
@@ -66,7 +66,7 @@ sap.ui.define([
66
66
  interfaces: [],
67
67
  controls: [],
68
68
  elements: [],
69
- version: "1.136.3",
69
+ version: "1.138.1",
70
70
  extensions: {
71
71
  //Configuration used for rule loading of Support Assistant
72
72
  "sap.ui.support": {