DXP21.10.0005 Changelog

January 07, 2022

Live application load. Launchpad logon page design. Islamic calendar customizing support. Smaller Tile Sizes. Disable Frontend Client Cache. Autocompletion for UI5 models in script editor. AppSync with Reference Models. AppSyncStart in apps loaded in background. Send/receive in applications with AJAX Extension. Azure AD logon in mobile client. Client Certificate Plugin. Inaccessible model in AppCache.removeAllCache. RFC destination in App Designer. Azure AD logon in mobile client. Client certificate plugin. Okta authentication added support for MFA options. sap.m.Table sorting in dialogs. Language files on iOS mobile clients. Cockpit Media Pack Resource files. Launchpad notification title display. Scroll behavior in App Designer transport dialog. Context aware help icon conflict with required icon. Active application title in App Designer. Left side menu in Internet Explorer. Forgot password link in custom logon screen. Missing JSONH conversion in Ajax success handler. RSS Feed Tile improvements. sap.m.Dialog escapeHandler. Application JS View Content Type. JS Application View Loading. Not possible to remove Server Exit. Master Client Adjustments. PWA with neptune-ui-debug=true loads minified files. Hidden main menu JS error. App Designer Preview. Launchpad Favorite Button. PWA with debug files. Async property in the neptune.Ajax object. Content aware help. Cockpit Policy Service dialog not closeable. Long text in launchpad desktop notifications. Neptune F4 Help in Fiori Launchpad. Decimal notation translation. Server logoff. Loading of binding in stateful apps. Field order after inserting a building block. Running applications with ICF node from Web App Designer. AppCache.Load in standalone applications using ICF node.


Load of Launchpad live applications (16602)

It’s possible to have Neptune applications running inside a tile or a tilegroup in the Neptune Launchpad. This is set up in the cockpit tile & tilegroup cockpit configuration. It’s also possible to have just one live application running in the launchpad and not use any tilegroups or tiles. This configuration is done in the cockpit launchpad/mobile client configuration.

When these live applications change in the backend, the functionality that reloaded the live application, would cause the applications to be loaded twice! Now the loading of the live applications will wait until the backend has served the updated applications to the frontend ⇒ AppCache.AfterUpdate.

Launchpad logon page design (16685)

You can now create a specific design for the logon pages and areas totally decoupled from the design applied to the rest of the launchpad. As a default the background colors and images from the applied layout will be used, so backward compatibility is maintained. TODO: Documentation with video…​

Islamic calendar customizing support (16614)

The Islamic calendar is based on Moon cycles, but throughout the arabic world the methods to determine when a new moon cycle start and how long it lasts varies. Out of the box SAPUI5 is using a method based on astronomical calculation. If this astronomical calculation is not suited for a country or region, it’s possible to add each month start in relation to the Gregorian calendar and the month length using report I18N_MAINTAIN_TISLCAL. Neptune DXP21 now supports the customization done in this report. Applications running standalone or in the Neptune launchpad, will read the islamic calendar customizing and display values in date pickers, formatters and other places where dates are used.

The Neptune Formatter Framework will also use the islamic calendar customizing when calculating an islamic date ⇒ neptune.Formatter.getArabicDate.

Smaller Tile Sizes

The Neptune launchpad creates tiles in a pure CSS Grid. The cell size have been reduced and the number of grid cells have been increased. It’s now possible to create much smaller tiles than before.

Disable Frontend Client Cache

The "Disable Frontend Client Cache" setting introduced in DXP21 Patch4, has been refined a little. If an application has disabled frontend client cache activated, the Neptune launchpad will still try to load the application from cache if the Launchpad is offline when application is loaded.

Enhancement of autocompletion for UI5 models in Script Editor

The autocompletion of the Script Editor in the Application Designer now also includes the UI5 models available in the application. By starting to enter "mo…​" all available models will be listed:

21 10 5 patch main 0

All properties of a UI5 JSON model will also be listed, with the most popular OData on top of the list. Finally, the data structure bound to the model will be analyzed to list all properties available in OData:

21 10 5 patch main 1

In case the autocompletion list doesn’t show as expected, press Ctrl+Space to call it up.

AppSync with Reference Models in extension Apps throws error (16672 )

When you were using a neptune.offline.database in an extension app the app was throwing an error when you would try to open a tile with that extension app.

AppSyncStart in apps loaded in background

If applications loaded with AppCache.Load have load=init set and the application calls AppSyncStart to initiate the AppSync framework synchronize in background, the process would fail due to a missing application ID. Before the workaround would be to set AppCache.CurrentApp=localAppID before calling AppCache.Load. Now you can deal with the issue directly in the application. Add the application ID as a parameter to AppSyncStart if the synchronization is done in the background.

    applid: localAppID,
    numPackage: 5
Send/receive in applications with AJAX Extension (16626)

The send/receive information in model bindings was not evaluated correctly for extended Ajax nodes in extension applications.

Inaccessible model in AppCache.removeAllCache (16641)

In order to use some of the AppCache functions in standalone applications not running in the Neptune launchpad, we have created an external AppCache script with some of the functions in DXP21. The RemoveAllCache function was defined in this external AppCache script where not all of the launchpad objects are accessible. It makes no sense to clear all cache if the application is not running in the Neptune launchpad, so the function has been moved to the internal AppCache script.

RFC destination in App Designer (16607)

A new RFC Destination type, "Reference Entry (Refers to Other Destination)" (Technical type=L), is now added to the allowed type of RFC destinations in the Cockpit App Designer.

Azure AD logon in mobile client - no Redirect URI (16656)

In Neptune DXP21, there are more dynamic variables in mobile clients, so changes made in the Neptune Cockpit are loaded during runtime without the need for rebuilding and distributing new versions of the mobile clients. This however introduced a bug with Azure AD authentication in the case where no Redirect URI has been set. The symptom will be that authentication works the first time, but after locking and unlocking the authentication will fail with this error message: "The reply URL specified in the request does not match the reply URLs configured for the application".

Mobile client - client certificate plugin (16664)

During the build process, the config.xml file is now updated to include the plugin for client certificate correctly.

Okta authentication - added support for MFA options (16430)

In mobile clients using Okta authentication, there has now been added support for the MFA options: otp token, sms and call.

sap.m.Table sorting in dialogs (16687)

Using the Neptune Sort Framework on a sap.m.Table object gives you automatic no-code sorting out of the box. When running the sap.m.Table in a dialog, the sorting would only work the first time the dialog was opened. Now the column click events are registered using the UI5 event delegate framework, so that the events will survive in the hostile dialog environment where the UI5 objects are written and deleted from the DOM each time the dialog is shown.

Language files on iOS mobile clients (16599)

Some language files were not loaded correct on mobile clients running on iOS 15.

Cockpit Media Pack Resource files (16688)

When uploading media pack files generated with the cordova resources tool a second time, the existing files were not deleted properly. Now the deletion is committed to the database, before the new files are added to the MIME repository.

Launchpad notification title display (16617)

The title in the notification popup in the Neptune launchpad had a margin to the left. Some title translations would be too long and the title would be displayed on multiple lines.

Scroll behavior in App Designer transport dialog (16622)

The treelist in the App Designer transport dialog did not have a proper scroll container, causing the scrollbar to turn on and off in an annoying way.

Context aware help icon conflict with required icon (16619)

If and application has documentation attached to a field, this attachment is displayed with a little help icon next to the field. In phone view, the context aware help icon would take over the required icon in the Neptune Launchpad. Now both the required icon and the context aware help icon is displayed.

Active application title in App Designer (16596)

When an application is opened in the Neptune Cockpit App Designer, the browser tab title will now show the application ID + system ID, making it easier to navigate between open tabs.

Left side menu in Internet Explorer (16608)

The left side menu would not open properly on Internet Explorer if the window was below 1024px. Now the left side menu will never overflow on IE, it will always take up the 300px width on the left side of the screen, no matter how small the IE window is.

Forgot password link in custom logon screen (16645)

The "Forgot Password" link in a custom launchpad logon screen was mal formatted.

Missing JSONH conversion in Ajax success handler (16677, 16747)

The sap.ui.unified.CalendarLegend and the special Neptune model-version of the sap.m.Combobox did not have the necessary JSONH conversion in the Ajax success handler.

RSS Feed Tile improvements (12017)

The RSS Feed Tile will now show the feed thumbnail and the feed description in addition to the feed title. We added a few new configuration options in the Cockpit Tile Service Configuration:

  • Display description

  • Display thumbnail

  • Feed item display time

    We’ve also added two new enhancement spots:

  • RSS Feed Data

  • RSS Feed Item

sap.m.Dialog escapeHandler (16553, 3497)

The implementation of the sap.m.Dialog escapehandler attribute has been improved. For some reason the escapeHandler is not defined as a proper UI5 event in SAPUI5. Neptune will now add the escape handler code directly in the event script just like a normal event handler. The escapeHandler will receive a promise object, call either resolve or reject on the promise object to handle the escape.

Existing implementation in the property field will still work, but new escape button handling must be added in the event handler.

Application JS View Content Type (16740)

When running a Neptune application in the Neptune launchpad, the application Javascript view was send the frontend with content-type = text/html. Now content-type = application/javascript.

JS Application View Loading (16734)

If the Neptune launchpad loaded an application with Javascript errors, further loading of applications would be blocked.

Not possible to remove Server Exit (16748)

It was not possible to remove the Server Exit Class in the Cockpit Settings service. Now, a clear button in the search dialog has been added.

Master Client Adjustments (16738, 16739, 16749, 16761)

The select statements in /NEPTUNE/CL_NAD_APPCACHE→AUTH_POLICY_LIST did not select client specified, so that policies was not being read from the master client in a multi client launchpad. If a Server Exit Class is used in Neptune, the class was not being created in a multi client environment.
Some files read from the Neptune Media Library was not read from the master client. Master client not used to read documentation in /NEPTUNE/CL_NAD_DOCUMENTATION→GET_DATA When using a Master Client Setup in a Launchpad, the data for an API Factory Class (like Entity Sets), was not read from the configured Master Client. CLIENT SPECIFIED was missing.

PWA with neptune-ui-debug=true loads minified files (16769)

When calling a PWA enabled launchpad with query parameter "neptune-ui-debug=true", the debug files was loaded initially. However, if you would then log in to the launchpad and reload it twice, the minified versions would be loaded. Now debug files will continue to be loaded.

Hidden main menu JS error (16733)

When opening applications from tiles, a Javascript error would be triggered, if the main menu button was set to hidden in the launchpad configuration.

App Designer Preview (16606)

The application preview inside the Web App Designer will now preview different screen sizes better. Content will overflow instead of scaling, making the display more intuitive.

Launchpad Favorite Button (16737)

The button to manage favorites was active and visible on launchpad pages that does not have a tilegroup that includes favorites.

PWA with debug files (16769)

When running a Neptune PWA Launchpad with debug files, the URL parameter neptune-ui-debug=true was not passed along with all HTTP calls, resulting in the load of minified files.

Async property in the neptune.Ajax object (16770)

In some usecases it can be advantageous to call the ABAP backend through synchronously Ajax calls and not generate a lot of Ajax request at the same time that can overload the ABAP Server. You can now set the async flag to false in the App Designer on the neptune.Ajax object to achieve this.

Content aware help (16776)

When an application was documented, and documentation assistance was enabled on the tile, the documentation would not be displayed, unless an onInit event handler was present in the application. Now the content aware help will be displayed in any case.

Cockpit Policy Service dialog not closeable (16775)

When opening a policy from a connected service, the dialog could not be closed.

Long text in launchpad desktop notifications (16779)

You can enable notifications in the Neptune desktop launchpad and send notifications using the function module /NEPTUNE/NOTIF_SEND. When a user clicks on a desktop notification item in the Neptune launchpad, the Neptune application associated with the notification item will be opened. Eiter using the application ID or a semantic hash navigation object, depending on what is provided. If an application ID or semantic object is not present, a dialog will now be opened when the user clicks on an item. You can add a long text to launchpad notifications, this long text will be used in the dialog . The long text can be in HTML format.

Neptune F4 Help in Fiori Launchpad (16778)

Running an application that uses the neptune F4 Search Help object, would crash if the application was run in the Fiori Launchpad. The reference to sap.n.currentView has been replaced with a call to the proper JS view created when running a Neptune application in both the Neptune Launchpad and in the Fiori Launchpad.

Decimal notation translation (16781)

When setting decimal notation values (SU3) in the Neptune launchpad, the dropdown values was translated. It makes no sense to translate these values that should reflect what is stored in the ABAP backend.

Server logoff (16660)

In older releases of SAP NetWeaver, the method IF_HTTP_SERVER→LOGOFF is not available. The enhancement spot Server Logoff was added so that customers and partners could implement IF_HTTP_SERVER→LOGOFF on newer SAP installations themselves. Now IF_HTTP_SERVER→LOGOFF will be called dynamically inside a try-and-catch statement, it is ignored when not available. The enhancement spot Server Logoff is no longer called, and it has been removed from the list of enhancement spots in the cockpit.

Loading of binding in stateful apps (16754)

The various load-methods of class /NEPTUNE/CL_NAD_APP_PERS have been corrected. This class was introduced in DXP21 to serve as a persistency class for reducing the database accesses during runtime for ajax calls.

Field order after inserting an application building block (16611)

Under certain circumstances the field order of an application was mixed up after inserting an application building block. Now the field order is kept stable.

Running applications with ICF node from Web App Designer

When running an application from the Web App Designer. The generated URL will now include the ICF node if a such is configured on the application.

AppCache.Load in standalone applications using ICF node

If an application standalone in a dedicated ICF. The applications loaded with AppCache.Load will be also be running in the same ICF node.


  • Jurijs Pasedko

  • Stanley Wong

  • Robert Bitschnau

  • Guillaume Garcia

  • Nicolay Aarstad Wildhagen

  • Ralf Killmayer

  • Sushant Ranade

  • Lars Stockmann

  • Sebastian Sauer

  • Dharma Subramanian

  • Dominik Robioneck

  • Dominik Beffar

  • Andreas Reichert

  • Andreas Demuth

  • Mathias Lück

  • Soeren Baek

  • Thomas Klaus

  • Miquel Jardí Baños

  • Serdar Kabasakal

  • Silvia Sá