Neptune DXP 23.10.0009 Changelog

January 16, 2025

General

/NEPTUNE/ABAP_REPORT busy indicator & variant size limit (39-22415)

When using the tile open action "ABAP Report (Beta)" then it might have happened that the result table was shown when the report is executed but the busy indicator would be kept active. This could have happened when the resulting ALV list has colored cells. Additionally, there was a size limit of 100 variants that would have shown in the "Variants" dialog. This has now been increased to 1000.

/NEPTUNE/ABAP_REPORT running a SAP query limits result list to 100 (39-22445)

When using an SAP query with the tile open action "ABAP Report (Beta)" the resulting list would only contain 100 entries, even though the query should select a bigger result list.

The set of invalid characters for JSON serialization is updated

The default set of invalid characters that are removed at JSON serialization has changed to the control characters codes 00 through 1F, except 08, 09, 0A, 0C, and 0D. It’s possible to modify this set live by updating the /NEPTUNE/CL_JSON_PARSER⇒MV_NONPRINT_CHARACTERS_SER attribute in your code.

Timeline component in Fiori Launchpad 3.0 (03-21972)

A Neptune DXP app containing a Timeline component would not load in a Fiori Launchpad 3.0, even though it loads in previous versions of Fiori Launchpad. Now, when an app contains sap.suite.ui.commons.Timeline, a library dependency for sap.suite.ui.commons is added in the Component.js to make the app load correctly.

/neptune/native/neptune_login_ping response contains unnecessary content (08-22042)

The HTTP response body of /neptune/native/neptune_login_ping.html might have contained unnecessary HTML code other than the expected <div id="ping"></div>.

"Remote Debug" with console.log not properly working (13-22072)

The Remote Debug feature would override the console.log function to be able to send logs to the SAP system. This was not working.

Enhancement Spot to change a Rest API URl (14-22018)

When a restAPI getOnline…​ JavaScript function is generated in a view, it would always statically add the icf subnode that might be defined within the API Designer for that API. However, there are use cases where you would like to decide if the getOnline…​ call should be done via the icf subnode or not. One use case is to have an "external-facing" and "internal-facing" launchpad that would need to call the API either with the icf subnode or without it. With the new enhancement-point /NEPTUNE/ES_GET_RESTAPI_URL in spot /NEPTUNE/ES_NAD_SERVER that you can find in /NEPTUNE/CL_NAD_SERVER→SERVER_GET_RESTAPI_URL, you can implement your custom logic how the API url should be constructed.

Tile Open Action Type "Mobile Client Installation" produced JavaScript error (22-22137)

Choosing the tile open action type "Mobile Client Installation" was producing a JavaScript error that wouldn’t allow to configure that action type properly.

Neptune AppSync framework removes double quotes from result fields (33-22282)

When using the neptune AppSync framework (neptune.offline), double quote characters within the fields of the data to be returned were removed.

API Designer

Large number of operations hides details (09-22051)

Detail view now displays consistently, regardless of the number of operations.

Additional validation for operations (9)

Blank path, method, or data provider class not allowed. Duplicate path/method combinations are not allowed.

Add new operation dialog (9)

A dialog is used to add new operations and navigation to the newly added operation is performed. Also, sorting of the operations list is updated consistently.

Swagger/OpenAPI definition might contain wrong protocol or hostname (27)

When requesting a Swagger/OpenAPI definition from an API that has been defined with the API Designer, the definition might have contained a wrong protocol (http instead of https) as well as a wrong hostname. This happened especially when using a reverse proxy for connecting to the SAP system.

Large number of class attributes (36-22334)

The tables showing attributes from the Data Provider Class are no longer limited to display only the first 100 entries.

Influence API Designer HTTP Response Codes in Swagger/OpenAPI (47-22611)

When defining an API endpoint within our API Designer and the corresponding method is using exception classes, you are able to influence the http status codes that should be returned when the exception is raised during run-time of the API by implementing interface /NEPTUNE/IF_HTTP_STATUS_CODE~GET_STATUS in the exception class. However, there was no way to reflect this run-time behavior within the OpenAPI 3.0 specification at design-time. We now introduced a new method /NEPTUNE/IF_HTTP_STATUS_CODE~ENHANCE_EXCEPTION that allows you to set the status code of the exception that is represented in the Swagger specification.

Example:

method /neptune/if_http_status_code~enhance_exception.
" This would show as status code 400 instead of the default 500 Internal Server Error
      io_exception->set_http_status_code( iv_status_code = '400' ).
endmethod.

App Designer

Send/Receive for sap.f.Gridlist (01-21922)

Minor correction for making it possible to specify Send/Receive for Ajax ID for object of type sap.f.Gridlist.

New UI5 control visibility (6)

UI5 controls added in the same UI5 version used in the App Designer would not be displayed.

Extension Apps Syntax Error for deleted neptune.ValueHelpField (12-22013)

When you have an extension app that would delete a neptune.ValueHelpField with the "Extend→Delete" option you would have gotten a syntax error in the App Designer, and thus were not able to activate the extension app.

Copy/Paste on systems with \n as End-Of-Line might not store all code (15-22066)

On Mac or Linux, or any system using \n as end-of-line indicator, creating a new TypeScript or JavaScript object and copy/paste code from another TypeScript or JavaScript object would sometimes lead to the incorrect internal end-of-line indicator being used, resulting in the pasted code not being correctly saved.

SAP GUI App Designer, Monaco Editor: CTRL + LeftMouseClick does not navigate to element in application hierarchy (23)

When pressing CTRL + LeftMouseClick on a known element variable, the navigation to the corresponding node in the application hierarchy did not work in the SAP GUI App Designer.

Disabled Stylesheet button (28-22224)

Application code that may still have stored in the tables the end of line character would cause the Stylesheet button to stay disabled, preventing the edition of the CSS of the application.

Binding buttons when adding new object in UI tree

The buttons to access the binding dialog were available for too many attributes, where binding was not relevant, when adding a new object from the library tree to the UI tree.

Object Default Values (32-22287)

The default values for the object are no longer saved in the runtime tables. They are still loaded and displayed when working with the objects, but only values different from the default ones will be saved.

Translated attribute values including bindings (37-22358)

Attribute texts that included bindings could be translated but the translations where never used. Available translations are now consistently used and it is possible to translate attribute texts starting with a binding. Additionally, when changing an attribute value from a translated text to a pure binding any existing translations are removed.

Extension Applications Escape texts (44-22554)

If properties in an app would have text in quotes, such as "My Text" during creation and extension of this application, this text would cause the application to break because the text quotes would not be escaped. This has now been fixed.

Mobile Client

SQLite plugin for Android (05-21988)

With Google’s removal of WebSQL, the plugin cordova-sqlite-evcore-extbuild-free is still needed for Android mobile clients. When building for Android in the Cockpit there was a warning dialog when this plugin was included, which led to a bug where UI5 files were included even when selecting "Build Cordova w/o UI5". This dialog has now been completely removed as it is no longer relevant.

Mobile Client Locking might not work with OAuth (17-22064)

When an OAuth Access token is expired or revoked and the Logoff Service is called by triggering the lock function in the mobile client, the user might not have been forwarded to the pincode screen but kept in the main mobile client screen.

iOS Mobile Client doesn’t consider ajaxTimeout value of "0" (19-21979)

If the timeout parameter that can be configured for an Ajax call is set to the value "0", the request timeout should be unlimited. However, on iOS mobile clients this was not considered and the default timeout of 60 seconds was considered.

Auto Update for Android mobile clients (18-22017)

TL;DR

For a smooth out-of-the-box experience with Auto Update for Android:

  • Upgrade to the latest LTS patch.

  • Make sure to activate Auto Update before generating the build in the Cockpit.

    Explanation:

    In the newest version of the fileopener plugin, the install packages permission has been removed for compatibility with Google Play policies. This means, while the newest plugin version must be used when needed for cases where the app should be published in Google Play, an older version must be used for the scenario of Neptune Catalog and Auto Update. It is now possible to enable Auto Update before generating the first build, as the Catalog no longer needs to be activated first to change this setting. There is now information for the Auto Update setting in the Cockpit about this setting being considered during the build phase even if the Catalog has not been activated yet. A metadata file is now also added in the build/zip (se-meta.json), to facilitate Neptune MBS with the build process. To support other build tools like cordova cli, the plugin cordova-plugin-fileopener2 is included automatically from the Cockpit (and set to version 3.0.5 for Android) when Auto Update is active.

CORS setting for not using ios-xhr plugin (20)

There is now an additional setting in the Cockpit for mobile clients for CORS under authentication: "Do not use ios-xhr plugin". With proper CORS settings (scheme and hostname) it is no longer necessary to include the plugin @castana/cordova-plugin-ios-xhr. Information about the plugin can be found here: https://www.npmjs.com/package/@castana/cordova-plugin-ios-xhr

Please see the documentation for more details about CORS settings: CORS/Security

CORS settings for mobile client (31)

Default shemes are now always allowed. The defaults are "app" for iOS, and "https" for Android. This means, it is no longer required to add an entry in "Settings" - "System" - "Security" - "CORS" when building a mobile client for both platforms.

For more information, see CORS/Security.

Android Splash Screen (25)

When setting the Cordova Android version to 11 or higher in the Cockpit there was a bug that would cause the icon of the Media Pack to be used as the splash screen. Now the default splash image is used for the preference AndroidWindowSplashScreenAnimatedIcon.

Users might be forced to do a full login again in OAuth Mobile Clients (34-22064)

In an OAuth Mobile Client the following situation could occur: When the user has an expired OAuth access token and tried to open a tile that has not yet been loaded, thus the view is not available in cache, the user would have been redirected back to the login screen and the pincode would not work anymore. Thus, the user was required to log off and log in again from scratch. Now, the access token will automatically be refreshed when the view loading fails due to missing authentication.

Launchpad

Non-default SAP client (07-21942)

When running a launchpad in an SAP client that was not the default client, the login after logging out would be made towards the default client. The background for this was that the url parameter sap-client was removed after a successful login. As long as being logged in, the client would still be correct, but after logging out the information about which client should be used was lost, and the default client of the SAP system would be used.

Launchpad configuration hardcoded in view get/setCache (16-22073)

Generated application views would have the launchpad configuration ID hardcoded in the get/setCache functions, causing applications running in a launchpad that uses global cached data to read cached data set in other launchpads.

Timezones (26-22205)

The list of timezones did not scroll past 200 timezones.

AppCache.Back call in close tile (29-22235)

The sap.n.Shell.attachBeforeBack event handler has been deprecated, but is still supported. The deprecated back event handler would be called if the tile was closed as part of the new suspend event handler framework.

Support for Vietnamese Language (40-22452)

Added support in the launchpad for Vietnamese language.

Tiles in Launchpad Search cannot be opened if they are added as a Tile Group Link (48-22519)

When a user wants to open a tile via the launchpad search on top within a launchpad and that tile is added via a tile group that is added as an action type "Tile Group" from another tile (nested tile group that is added as a tile group link) then this tile was not opened when clicking on the corresponding search result item.

User locked when entering incorrect credentials in PWA (49-22595)

When a user would enter incorrect credentials on the logon screen of a PWA-enabled launchpad, a pop-up prompt would show asking for username and password. Even if the correct credentials were entered in this pop-up, it would count as an incorrect password attempt, because the credentials entered in the first attempt would still be considered. Due to this, users could get locked even when entering correct credentials. This has now been changed, so there is no pop-up and further attempts are handled properly.

Cockpit

Open mode of App Designer (21-22112)

When no setting is saved for the user on how to open the Web App Designer from the Cockpit, a pop-up will appear for the user to choose how to open the Web App Designer, either in a "new tab" or in a "new window". This choice was not saved from the Cockpit.

Packages Overview

Old names were displayed for some artifacts (41)

The names displayed will always be the most recent for each artifact.

abapGit Extension

These changes are valid from abapGit Extension version 1.0.4

Artifacts not added to transport on deletion (43)

New parameter added to the method DELETE_ARTIFACT of interface /NEPTUNE/IF_ARTIFACT_TYPE. With this, artifacts that are transportable will now be added to the transport request when being deleted.

New method to exclude MIME files from the list (43)

A new method /NEPTUNE/CL_ABAPGIT_USER_EXIT⇒DELETE_TADIR is now available to be able to exclude the MIME files related to applications. This method can be added to the abapGit exit CHANGE_TADIR. Full documentation on how to implement the exit here.

Here is an example:

// Change supported object types to recognize Neptune DXP Artifacts
  method zif_abapgit_exit~change_tadir.

    data: lt_neptune_tadir type /neptune/cl_abapgit_user_exit=>ty_tadir_tt,
          ls_neptune_tadir like line of lt_neptune_tadir,
          ls_options       type /neptune/cl_abapgit_user_exit=>ty_options.

    data ls_tadir like line of ct_tadir.

    lt_neptune_tadir = /neptune/cl_abapgit_user_exit=>change_tadir( iv_package = iv_package
                                                                    iv_ignore_subpackages = iv_ignore_subpackages ).

    loop at lt_neptune_tadir into ls_neptune_tadir.
      move-corresponding ls_neptune_tadir to ls_tadir.
      append ls_tadir to ct_tadir.
    endloop.

    ls_options-del_nep_app_mimes = abap_true.

    /neptune/cl_abapgit_user_exit=>delete_tadir(
      exporting
        is_options = ls_options
      changing
        ct_tadir   = ct_tadir ).

  endmethod.

Licensing

Performance improvement (38-22383)

Some improvements were done regarding the performance of the licensing logic.