### Start Legacy Grunt Setup Source: https://github.com/ui5/openui5/blob/master/docs/developing.md Use this command to start the legacy Grunt-based development server. This setup is being phased out in favor of the standard setup. ```bash npm run start-grunt ``` -------------------------------- ### Static Table Initialization Example Source: https://github.com/ui5/openui5/blob/master/src/sap.m/test/sap/m/TableContexualWidth.html Demonstrates the basic setup of a sap.m.Table with a 'popinLayout' and column definitions. This example is presented as a static use case, potentially for comparison or simpler scenarios. ```javascript var table1 = new sap.m.Table({ popinLayout: "GridSmall", headerText : "Team Members", columns : [ new sap.m.Column({ width : "2rem", hAlign : "Center", mergeFunctionName : "getSrc" }), new sap.m.Column({ header : new sap.m.Label({ text : "First Name" }) }), new sap.m.Column({ header : new sap.m.Label({ text : "Last Name" }), demandPopin: true }), new sap.m.Column({ hAlign : "Right", minScreenWidth : "Phone", demandPopin : true, popinDisplay : "Inline", header : new sap.m.Label({ text : "Birth Date" }) }), new sap.m.Column({ hAlign : "Right", width : "4rem", demandPopin : true, minScreenWidth : "Tablet", popinDisplay : "Inline", header : new sap.m.Label({ text : "Gender" }) }) ] }); ``` -------------------------------- ### Basic UI5 Application Setup with Calendar Source: https://github.com/ui5/openui5/blob/master/src/sap.ui.unified/test/sap/ui/unified/CalendarMultipleMonths.html Sets up a basic OpenUI5 application structure with an App and Page control, and includes buttons to trigger different calendar configurations. This serves as the main entry point for the calendar examples. ```javascript sap.ui.getCore().attachInit(function() { sap.ui.require([ "sap/ui/core/Core", "sap/ui/unified/library", "sap/m/App", "sap/m/Page", "sap/ui/unified/Calendar", "sap/ui/unified/DateRange", "sap/ui/unified/DateTypeRange", "sap/m/Button", "sap/ui/core/date/UI5Date" ], function(Core, unifiedLibrary, App, Page, Calendar, DateRange, DateTypeRange, Button, UI5Date) { "use strict"; var CalendarDayType = unifiedLibrary.CalendarDayType, oCalendar1; var oButton6 = new Button("B6", { text: "4 Months", press: function() { Core.getConfiguration().setLanguage("en-US"); oCalendar1 && oCalendar1.destroy(); oCalendar1 = fnCalendarFactory(); oCalendar1.setIntervalSelection(false); oCalendar1.setSingleSelection(true); oCalendar1.setWidth("100%"); oCalendar1.setMonths(4); oPage.insertContent(oCalendar1, 0); Core.applyChanges(); oCalendar1.focusDate(UI5Date.getInstance(2015, 0, 31)); } }); var oButton70 = new Button("B70", { text: "Chinese calendar", press: function() { Core.getConfiguration().setLanguage("zh-CN"); oCalendar1 && oCalendar1.destroy(); oCalendar1 = fnCalendarFactory(); oCalendar1.setLocale("zh_CN"); oCalendar1.destroySelectedDates(); oPage.insertContent(oCalendar1, 0); Core.applyChanges(); oCalendar1.focusDate(UI5Date.getInstance(2015, 0, 2)); } }); var oButton7 = new Button("B7", { text: "2 Months Chinese calendar", press: function() { Core.getConfiguration().setLanguage("zh-CN"); oCalendar1 && oCalendar1.destroy(); oCalendar1 = fnCalendarFactory(); oCalendar1.setLocale("zh_CN"); oCalendar1.destroySelectedDates(); oCalendar1.setMonths(2); oPage.insertContent(oCalendar1, 0); Core.applyChanges(); oCalendar1.focusDate(UI5Date.getInstance(2015, 0, 2)); } }); var oButton8 = new Button("B8", { text: "2 Months Gregorian calendar", press: function() { Core.getConfiguration().setLanguage("en-US"); oCalendar1 && oCalendar1.destroy(); oCalendar1 = fnCalendarFactory(); oCalendar1.destroySelectedDates(); oCalendar1.setMonths(2); oCalendar1.setMaxDate(UI5Date.getInstance(2015, 7, 24)); oPage.insertContent(oCalendar1, 0); Core.applyChanges(); oCalendar1.focusDate(UI5Date.getInstance(2015, 0, 2)); } }); var oApp = new App("myApp").placeAt("body"); var oPage = new Page({ title: "Calendar", content: [ oButton6, oButton70, oButton7, oButton8 ] }); function fnCalendarFactory() { return new Calendar("Cal1", { selectedDates: [new DateRange("DR1",{startDate: UI5Date.getInstance(2015, 0, 2)}) ], specialDates: [ new DateTypeRange("SDR01",{startDate: UI5Date.getInstance(2015, 1, 2), type: CalendarDayType.Type01}), new DateTypeRange("SDR02",{startDate: UI5Date.getInstance(2015, 1, 3), type: CalendarDayType.Type02}), new DateTypeRange("SDR03",{startDate: UI5Date.getInstance(2015, 1, 4), type: CalendarDayType.Type03}), new DateTypeRange("SDR04",{startDate: UI5Date.getInstance(2015, 1, 5), type: CalendarDayType.Type04}), new DateTypeRange("SDR05",{startDate: UI5Date.getInstance(2015, 1, 6), type: CalendarDayType.Type05}), new DateTypeRange("SDR06",{startDate: UI5Date.getInstance(2015, 1, 7), type: CalendarDayType.Type06}), new DateTypeRange("SDR07",{startDate: UI5Date.getInstance(2015, 1, 8), type: CalendarDayType.Type07}), new DateTypeRange("SDR08",{startDate: UI5Date.getInstance(2015, 1, 9), type: CalendarDayType.Type08}), new DateTypeRange("SDR09",{startDate: UI5Date.getInstance(2015, 1, 10), type: CalendarDayType.Type09}), new DateTypeRange("SDR10",{startDate: UI5Date.getInstance(2015, 1, 11), type: CalendarDayType.Type10}), new DateTypeRange("SDR11",{startDate: UI5Date.getInstance(2015, 1, 12), type: CalendarDayType.Type10, color:"#ffffff"}), new DateTypeRange("SDR12",{startDate: UI5Date.getInstance(2015, 1, 13), type: CalendarDayType.Type10, color:"#ffff66"}), new DateTypeRange("SDR13",{startDate: UI5Date.getInstance(2015, 1, 14), endDate: UI5Date.getInstance(2015, 1, 16), type: CalendarDayType.Type10}) ] }); } oApp.addPage(oPage); }); }); ``` -------------------------------- ### Start UI5 Server and Open TestSuite Source: https://github.com/ui5/openui5/blob/master/docs/developing_legacy_tooling.md Navigate to the TestSuite project directory and start the UI5 server to open the TestSuite in your browser. ```sh cd src/testsuite ui5 serve --open index.html ``` -------------------------------- ### Start OpenUI5 Development Server Source: https://github.com/ui5/openui5/blob/master/docs/developing.md This command starts the development server for the OpenUI5 project. The TestSuite will be available at http://localhost:8080/test-resources/testsuite/testframe.html. ```sh npm start ``` -------------------------------- ### Install npm Dependencies Source: https://github.com/ui5/openui5/blob/master/docs/developing.md After cloning the repository, navigate into the project directory and install all necessary npm dependencies. ```sh cd openui5 npm install ``` -------------------------------- ### Start UI5 Development Server Source: https://github.com/ui5/openui5/blob/master/src/sap.m/test/sap/m/demokit/sample/IllustratedMessageInAppCustom/README.md Starts the development server for the UI5 application. Access the application at http://localhost:8080. ```bash npm run start ``` -------------------------------- ### Load and Start Customized Application Source: https://github.com/ui5/openui5/blob/master/src/sap.ui.core/test/sap/ui/core/ComponentExtensibility_legacyAPIs.html Loads and starts a customized application component. Ensure the component name is correctly specified. ```javascript sap.ui.localResources("samples"); // handles both, SAP and customer content, in this example // load and start the customized application var oComp = sap.ui.component({ name: "samples.components.ext_legacyAPIs.customer" }); var oCompCont = new sap.ui.core.ComponentContainer({ component: oComp }); oCompCont.placeAt("content"); ``` -------------------------------- ### Instantiate sap.m.List Source: https://github.com/ui5/openui5/blob/master/src/sap.ui.core/test/sap/ui/core/InvisibleControls.html Example of creating a List with StandardListItem controls. ```javascript new sap.m.List({ items: [new sap.m.StandardListItem({title: "A"}), new sap.m.StandardListItem({title: "B"})] }) ``` -------------------------------- ### Start UI5 Development Server Source: https://github.com/ui5/openui5/blob/master/docs/developing_legacy_grunt.md Start the Grunt-based development server for UI5. This command enables the build-free development process. ```bash grunt serve ``` -------------------------------- ### Instantiate sap.ui.ux3.ExactBrowser Source: https://github.com/ui5/openui5/blob/master/src/sap.ui.core/test/sap/ui/core/InvisibleControls.html Example of creating an ExactBrowser with ExactAttribute items. ```javascript new sap.ui.ux3.ExactBrowser({ attributes: [new sap.ui.ux3.ExactAttribute({text: "A"}), new sap.ui.ux3.ExactAttribute({text: "B"})] }) ``` -------------------------------- ### Initialize Application and Page Source: https://github.com/ui5/openui5/blob/master/src/sap.m/test/sap/m/TimePickerVisualPart2.html Sets up the main application and the initial page, including models and content. ```javascript var UI5Date = sap.ui.require("sap/ui/core/date/UI5Date"); var app = new sap.m.App("myApp", { initialPage:"page1" }); app.placeAt("body"); var oModel = new sap.ui.model.json.JSONModel(); oModel.setData({ timeValue: UI5Date.getInstance() }); app.setModel(oModel); var page = new sap.m.Page("page1", { title: "TimePicker", content: [ new sap.m.HBox({ alignItems: sap.m.FlexAlignItems.Center, items: [ new sap.m.Text({ text: "MaskInput is:" }), // Mask mode switch new sap.m.Text({ text: "Mobile simulation is:" }), // Mobile simulation switch ] }), generateTimePickers(), new sap.ui.core.HTML({ id: "eventsDiv", content: "
Some Events:
" }) ] }); app.addPage(page); ``` -------------------------------- ### Get Start Date of a Date Range Source: https://github.com/ui5/openui5/blob/master/src/sap.ui.integration/test/sap/ui/integration/demokit/cardExplorer/webapp/topics/learn/features/dateRanges.html Use `dateRange.start` to get the start date of a specified range. The `type` parameter is mandatory, and `value` is optional for some types. ```javascript {= dateRange.start("lastYears", 5)} ``` -------------------------------- ### Serve OpenUI5 SDK (Demo Kit) Source: https://github.com/ui5/openui5/blob/master/docs/developing.md Start a local HTTP server for the built SDK located in the `src/testsuite/dist` directory. ```sh npm run serve-sdk ``` -------------------------------- ### Application Setup and Rendering Source: https://github.com/ui5/openui5/blob/master/src/sap.m/test/sap/m/SelectionDetails.html Sets up the main application with a page containing the SelectionDetails control and buttons for adding/removing items. Applies theme-specific styling if needed. ```javascript var oApp = new sap.m.App({ pages: new sap.m.Page({ title: "Selection Details", content: [ new sap.m.HBox({ items: [ oSelectionDetails, new sap.m.Button({ text: "Add Item", icon: "sap-icon://add", press: function() { oSelectionDetails.addItem(new sap.m.SelectionDetailsItem({ lines: { path: "/lines/0", factory: fnCreateLine }, actions: [ new sap.ui.core.Item({ key: "1", text: "item action 1" }) ], enableNav: true })); } }), new sap.m.Button({ text: "Remove Item", icon: "sap-icon://delete", press: function() { var aItems = oSelectionDetails.getItems(); if (aItems.length > 0) { aItems.pop().destroy(); } } }) ] }) ] }), models: oModel }); oApp.placeAt("content"); //set the contrast class for belize plus if (sap.ui.getCore().getConfiguration().getTheme() === "sap_belize_plus") { oApp.addStyleClass("sapContrastPlus"); } ``` -------------------------------- ### Get Start Date for 'yesterday' Source: https://github.com/ui5/openui5/blob/master/src/sap.ui.integration/test/sap/ui/integration/demokit/cardExplorer/webapp/topics/learn/features/dateRanges.html Retrieves the start of yesterday's date using `dateRange.start('yesterday')`. No additional value parameter is needed for this type. ```javascript {= dateRange.start('yesterday')} ``` -------------------------------- ### ResponsiveFlowLayout Simple Example Source: https://github.com/ui5/openui5/blob/master/src/sap.ui.layout/test/sap/ui/layout/ResponsiveFlowLayout.html Illustrates a ResponsiveFlowLayout where one button is twice the size of another. No specific setup or imports are shown, focus is on layout behavior. ```XML ``` -------------------------------- ### Build and Serve OpenUI5 SDK (Demo Kit) Source: https://github.com/ui5/openui5/blob/master/docs/developing.md A shortcut command to both build and serve the OpenUI5 SDK. ```sh npm run sdk ``` -------------------------------- ### Add Column with sap.m.Select and Items Source: https://github.com/ui5/openui5/blob/master/src/sap.ui.table/test/sap/ui/table/Table.html Defines a column using sap.m.Select with predefined items. This snippet is incomplete, showing only the setup of the Select control and the start of the Column definition. ```javascript // sap.m.Select oControl = new sap.m.Select({ items: [ new sap.ui.core.Item({key: "v1", text: "Value 1"}), new sap.ui.core.Item({key: "v2", text: "Value 2"}), new sap.ui.core.Item({key: "v3", text: "Value 3"}), new sap.ui.core.Item({key: "v4", text: "Value 4"}) ] }); oColumn = new sap.ui.table.Column({label: new sap.m.Label({text: "m.Select"}), template: oControl, width: "150px"}); oColumn.setCreationTemplate((new sap.m.Sel ``` -------------------------------- ### Initialize Card with Host Actions Source: https://github.com/ui5/openui5/blob/master/src/sap.ui.integration/test/sap/ui/integration/demokit/cardExplorer/webapp/topics/integrate/hostActions.html This example demonstrates how to initialize a UI5 card with custom and navigation host actions. It requires importing necessary modules like FlexBox, Card, Host, and MessageToast. ```javascript function init() { sap.ui.require([ "sap/m/FlexBox", "sap/ui/integration/widgets/Card", "sap/ui/integration/Host", "sap/m/MessageToast" ], function (FlexBox, Card, Host, MessageToast) { const oHost = new Host({ actions: [ { type: 'Navigation', icon: 'sap-icon://world', text: 'Open SAP website', tooltip: 'Open www.sap.com', url: 'https://www.sap.com', target: '_blank' }, { type: 'Custom', icon: 'sap-icon://add', text: 'Add to mobile', tooltip: 'Add card to your mobile', action: function (oCard, oButton) { MessageToast.show("Added to mobile: " + oCard.getManifestEntry("/sap.app/title")); } } ] }); const oCard = new Card({ id: "quickLinksCardExample", manifest: "./manifests/quickLinksCard.manifest.json", width: "352px", host: oHost }).addStyleClass("sapUiSmallMargin"); const oFlexBoxCardExample = new FlexBox({ direction: "Row", wrap: "Wrap", justifyContent: "Start", alignItems: "Stretch", width: "100%", items: [oCard] }); oFlexBoxCardExample.placeAt("cardContainer"); }); }; ``` -------------------------------- ### Populate Menu with Items (Menu Eventing) Source: https://github.com/ui5/openui5/blob/master/src/sap.ui.commons/test/sap/ui/commons/Menu.html Populates several menus with items, similar to the item eventing example, but configured for menu-level event handling. This setup is for menu-level event handling. ```javascript //Menus with menu eventing var oMenu1a = createMenu(5); var oMenu2a = createMenu(6); var oMenu3a = createMenu(7); var oMenu4a = createMenu(8); createAndAddMenuItem(oMenu1a, 51, "This is an item with a very long text", "images/icon.gif"); createAndAddMenuItem(oMenu1a, 52, "This is another item with an even longer text", "images/save-icon.png"); createAndAddMenuItem(oMenu1a, 53, "E-Test Item1-3").setEnabled(false); createAndAddMenuItem(oMenu1a, 54, "P-Test Item1-4").setSubmenu(oMenu2a); var item5 = createAndAddMenuItem(oMenu1a, 55, "Item5"); item5.setEnabled(false); item5.setSubmenu(oMenu4a); createAndAddMenuItem(oMenu2a, 61, "Item2-1", "icon.gif").setEnabled(false); createAndAddMenuItem(oMenu2a, 62, "Item2-2", null); createAndAddMenuItem(oMenu2a, 63, "Item2-3", null); createAndAddMenuItem(oMenu2a, 64, "Item2-4", null).setSubmenu(oMenu3a); createAndAddMenuItem(oMenu3a, 71, "Item3-1", null); oMenu1a.attachItemSelect(function(oEvent){ var oItem = oEvent.getParameter("item"); if(!oItem.getSubmenu()){ alertSelected(oItem.getId()); } }); ``` -------------------------------- ### Full ViewSettingsDialog with Event Handling Source: https://github.com/ui5/openui5/blob/master/src/sap.m/test/sap/m/ViewSettingsDialog.html Demonstrates a comprehensive ViewSettingsDialog setup with event handling for sorting, grouping, and filtering based on item keys. This example processes selections in the 'confirm' event. ```javascript var vsd2 = new sap.m.ViewSettingsDialog("vsd2", { confirm: function (oEvent) { var p = oEvent.getParameters(), sSortPath = null, oSorter, sGroupPath = null, oGroupFunction = null, oGrouper, aFilters = null, oCallback = null, aTableSorters = [], aTableFilters = [], i = 0; // 1) create grouper based on key if (p.groupItem) { // decide based on id switch (p.groupItem.getKey()) { case "myNameGrouper": sGroupPath = "name"; oGroupFunction = util.Grouper.name; break; case "myStatusGrouper": sGroupPath = "status"; break; case "myValueGrouper": sGroupPath = "limit"; oGroupFunction = util.Grouper.value; break; case "myPriceGrouper": sGroupPath = "price"; oGroupFunction = util.Grouper.price; break; } // create grouper if (sGroupPath) { oGrouper = new sap.ui.model.Sorter(sGroupPath, p.groupDescending, (oGroupFunction ? oGroupFunction : true)); // true is default sorter aTableSorters.push(oGrouper); } } // 2) create sorter based on key if (p.sortItem) { // decide based on id switch (p.sortItem.getKey()) { case "myNameSorter": sSortPath = "name"; break; case "myStatusSorter": sSortPath = "status"; break; case "myValueSorter": sSortPath = "limit"; break; case "myPriceSorter": sSortPath = "price"; break; } // create sorter if (sSortPath) { oSorter = new sap.ui.model.Sorter(sSortPath, p.sortDescending); aTableSorters.push(oSorter); } } // 3) filtering (either preset filters or standard/custom filters) if (p.presetFilterItem) { // decide based on id switch (p.presetFilterItem.getKey()) { case "myPresetFilter1": aFilters = presetFilters1; break; case "myPresetFilter2": aFilters = presetFilters2; break; case "myPresetFilter3": aFilters = presetFilters3; break; } // add filters if (aFilters) { // the filter could be an array of filters or a single filter so we transform it to an array if (!Array.isArray(aFilters)) { aFilters = [aFilters]; } aTableFilters = aTableFilters.concat(aFilters); } } else { // standard/custom filters for (; i < p.filterItems.length; i++) { if (p.filterItems[i] instanceof sap.m.ViewSettingsCustomItem) { // custom control filter // decide based on id switch (p.filterItems[i].getKey()) { case "myPriceFilter": oCallback = customPriceCallback; break; } // call callback and add filters if (oCallback) { aFilters = oCallback.apply(this, [p.filterItems[i].getCustomControl()]); if (aFilters) { // the filter could be an array of filters or a single filter so we transform it to an array if (!Array.isArray(aFilters)) { aFilters = [aFilters]; } aTableFilters = aTableFilters.concat(aFilters); } } } else if (p.filterItems[i] instanceof sap.m.ViewSettingsItem) { // standard filter // decide based on id switch (p.filterItems[i].getKey()) { case "name1": aFilters = new sap.ui.model.Filter("name", sap.ui.model.FilterOperator.EQ, "Headphone"); break; case "name2": aFilters = new sap.ui.model.Filter("name", sap.ui.model.FilterOperator.EQ, "Mouse Pad"); break; case "name3": aFilters = new sap.ui.model.Filter("name", sap.ui.model.FilterOperator.EQ, "Monitor"); break; case "name4": aFilters = new sap.ui.model.Filter("name", sap.ui.model.FilterOperator.EQ, "Backpack"); break; case "name5": aFilters = new sap.ui.model.Filter("name", sap.ui.model.FilterOperator.EQ, "Printer"); break; case "name6": aFilters = new sap.ui.model.Filter("name", sap.ui.model.FilterOperator.EQ, "Optic Mouse"); break; } // add filters if (aFilters) { // the filter could be an array of filters or a single filter so we transform it to an array if (!Array.isArray(aFilters)) { aFilters = [aFilters]; } aTableFilters = aTableFilters.concat(aFilters); } } } } // apply sorters and filters to the table // this.getView().byId("productsTable").getBinding("items").sort(aTableSorters); // this.getView().byId("productsTable").getBinding("items").filter(aTableFilters); } }); ``` -------------------------------- ### Setup Application and Model Source: https://github.com/ui5/openui5/blob/master/src/sap.m/test/sap/m/PlanningCalendarWidth.html Initializes the main application and sets up a JSON model with header content binding data. This is boilerplate for a SAPUI5 application. ```javascript var app = new sap.m.App("myApp"); var oEventLabel = new sap.m.Label({text: "Events log"}); var oModel = new sap.ui.model.json.JSONModel(); oModel.setData({ headerContentBinding: [{ name: "Edward II", text: "headerContent aggregation with binding" }] }); app.setModel(oModel); ``` -------------------------------- ### Setup Mock Server and OData Model for sap.m.Tree Source: https://github.com/ui5/openui5/blob/master/src/sap.m/test/sap/m/Treeodata.html Configures and starts a mock server to simulate OData responses. Initializes an OData v2 model with the mock server's URI. ```javascript jQuery.sap.require("sap.ui.core.util.MockServer"); jQuery.sap.require("sap.ui.model.odata.v2.ODataModel"); var sServiceURI = "/odataFake/"; var sMetaDataURI = "mockdata/"; // configure respond to requests delay sap.ui.core.util.MockServer.config({ autoRespond : true, autoRespondAfter : 1000 }); // create mockserver var oMockServer = new sap.ui.core.util.MockServer({ rootUri : sServiceURI }); // start mockserver oMockServer.simulate(sMetaDataURI + "treemetadata.xml", sMetaDataURI); oMockServer.start(); var oModel = new sap.ui.model.odata.v2.ODataModel(sServiceURI); ``` -------------------------------- ### Create and Configure ExactBrowser Source: https://github.com/ui5/openui5/blob/master/src/sap.ui.ux3/test/sap/ui/ux3/ExactBrowser.html Demonstrates creating an ExactBrowser instance with various settings and attaching event handlers. Use this for basic setup and interaction. ```JavaScript function createBrowserTest(oSettings, iExactBrowserNo, bInitAttributes) { var oExactBrowser = new sap.ui.ux3.ExactBrowser("EB"+iExactBrowserNo, oSettings); if(bInitAttributes){ exactTestData.initAttributes(oExactBrowser); //attributes defined in ExactData.js } var iExactBrowserUIAreaNo = 3*iExactBrowserNo - 2; var oInput = new sap.ui.commons.TextField(); oInput.placeAt("uiArea"+(iExactBrowserUIAreaNo-1)); oInput = new sap.ui.commons.TextField(); oInput.placeAt("uiArea"+(iExactBrowserUIAreaNo+1)); oExactBrowser.setFollowUpControl(oInput); oExactBrowser.placeAt("uiArea"+iExactBrowserUIAreaNo); oExactBrowser.attachAttributeSelected(function(oEvent) { var aSelectedAttributes = oEvent.getParameter("allAttributes"); var aSelectedAttributeNames = []; for(var idx=0; idx * " + aSelectedAttributeNames.join("
* ")); }); return oExactBrowser; } // Example 1: Basic setup with options and event handlers var oExactBrowser = createBrowserTest({showHeader: true, enableSave: true/*, enableListClose: true*/}, 1, true); oExactBrowser.setOptionsMenu( new sap.ui.commons.Menu({ items : [new sap.ui.commons.MenuItem("i1", {text: "This menu comes from"}), new sap.ui.commons.MenuItem("i2", {text: "the application."})]}) ); oExactBrowser.attachSave(function(){alert("Saved!");}); // Example 2: With list closing enabled and fixed order oExactBrowser = createBrowserTest({showHeader: true, enableListClose: true, topListOrder: sap.ui.ux3.ExactOrder.Fixed}, 2, true); function setFixedListOrder(oAttribute){ oAttribute.setListOrder(sap.ui.ux3.ExactOrder.Fixed); var aAttributes = oAttribute.getAttributes(); for(var i=0; i