DXP22.10.0003 Changelog

December 15, 2022

Reduced payload in Neptune AJAX calls. multipart/form-data for APIs built with API Designer. Update dynamic tiles with the number 0. Flow App in GUI App Designer. Tile Long Text. App Designer code overflow. PWA/Mobile Client Global Style. Launchpad Sidebar app with Shell object. ModelData console.error. Multiple OData controls in one app. Global UI5 no longer used for Cockpit. Session timeout in mobile clients (Okta and Azure). Maintenance Views. Binding Browser issues of non SAPUI5 Objects in SAPGUI Designer. Import from file bug. Dump when Importing XML without a file. Dump when calling an App in a Server Split Scenario.

Details

Reduced payload in Neptune AJAX calls

When executing an AJAX call in any Neptune application, structures and tables are transferred from the Javascript frontend to the ABAP backend in the form of JSON data. It is common to use ABAP structures with a lot of fields, in some cases most of the fields will contain initial data.

It does not make sense to send all these initial data fields to the ABAP backend, so Neptune will now reduce all structures, arrays and deep nested structures. All initial fields will be stripped out of the data objects before converting the data to JSON.

This will speed up the executing of all AJAX calls. Depending on the data structures in the request, we’ve seen that request will be executed ~4 times faster. Open the App Designer and you will experience the speed improvement when saving and activating Neptune applications.

Our guess is that you also have some AJAX calls that will now run much faster as before ;)

However. Just to be on the save side, this feature is not turned on for existing applications. You have to manually enable this for each application in the App Designer. New applications will have the field reduction enabled.

For the enthusiasts. We would have preferred to utilize the Object.entries method as opposed to the combination of Objects.keys and Array.map. However, the selection of the reduce function must adhere to the standards set forth by ES6.

neptune.JSON.reduce = function(data) {
    if (typeof data !== "object") return data;
    if (Array.isArray(data)) return data.map(obj => neptune.JSON.reduce(obj));
    return Object
        .keys(data)
        .map(key => [key, data[key]])
        .filter(([key, value]) => value === 0 || !!value)
        .reduce(function(acc, [key, value]) {
            if (Array.isArray(value)) {
                acc[key] = value.map(neptune.JSON.reduce);
            } else if (typeof value === "object") {
                acc[key] = neptune.JSON.reduce(value);
            } else {
                acc[key] = value;
            }
            return acc;
        }, {});
};
multipart/form-data for APIs built with API Designer
  • Now it’s possible to specify the Request Payload MIME Type in the API Designer.

  • Default is "application/json" but you can now also use "multipart/form-data". An example for this would be to upload a file in binary format (non base64 encoded) as well as a JSON payload. The following example uses an MV_FILE public attribute which is of type XSTRING as well as a normal structure that contains additional data for the file (you also can find this example in API /NEPTUNE/UNIT_TEST_API that is part of our release and thus available in your system).

Update dynamic tiles with the number 0 (18349)

When updating a dynamic tile with a number = 0, the tile update function sap.n.Launchpad.UpdateTileInfo, would treat the value as initial and skip the update.

Flow App in GUI App Designer (18407,18407)

The flow application would use default UI5 version which is now 1.108, which is not compatible with Internet Explorer. Everyone should change to use Edge as the browser control in SAP GUI, but a lots of customers are still using SAP GUI versions where it’s not possible to use Edge as the browser control. So, the few simple Neptune UI5 applications running inside the GUI App Designer still needs to be comapitble with the ancient Internet Explorer.

Tile Long Text

Tile long text have been migrated from table /NEPTUNE/MENUTXT to /NEPTUNE/MENU.

App Designer code overflow (18425)

The last line of script code in the Web App Designer would be hidden, and it was not possible to scroll into it.

PWA/Mobile Client Global Style (18427)

Global style added to launchpads and mobile clients will be injected dynamically into the HTML code at runtime, so that the style will cascade properly. The global style was first injected when the user logs in, so that the logon screen did not get the CSS applied.

Launchpad Sidebar app with Shell object

You can now use application that have an sap.m.Shell object with addWidthLimited set to true in the Neptune Launchpad Sidebar. The application will now be limited to the withh of the sidebar container.

ModelData console.error (18445)

The ModelData Compare functions would output an error if the key used for comparing was not a field in the model data. Now the compare functions will just return false in normal operation. With debugging turned on, using the URL parameter debug=true, errors will be logged as a warning in the console.

Multiple OData controls in one app (18428)

Using more than one OData source in an application would lead to a duplication of the modules added to the AppCache.UI5Modules array.

Global UI5 no longer used for Cockpit (18443)

A global UI5 path set in the Cockpit settings service, will not be used when running Neptune Cockpit and App Designer. The cockpit applications will first try to use UI5 1.108 and then fall back to UI5 1.71 if UI5 1.108 is not installed in the system. This will prevent the cockpit from not being accesible after an upgrade due to a globally set UI5 path.

Session timeout in mobile clients (Okta and Microsoft Azure)

When the MYSAPSSO2 cookie or session was no longer valid, there could be situations where the app would be stuck when attempting to perform new ajax calls. As long as the user is already authenticated in the mobile client, there will now be performed an automatic reauthentication which will issue a new session/MYSAPSSO2 cookie.

Maintenance Views (18443)

Two new transactions will allow you to make changes to the tables that control UI5 versions and system settings for the Neptune cockpit. These transactions are a last resort if you can not access the Neptune cockpit for some reason.

  1. /NEPTUNE/GLOBAL

  2. /NEPTUNE/LIB_001

Binding Browser issues of non SAPUI5 Objects in SAPGUI Designer (18395)

The Binding Browser Popup in SAPGUI Designer was not allowing to bind to non SAPUI5 Objects in all cases. This has now been resolved.

Import from file bug

When "importing from file" while already inside an application, it would cause the creation of an application without an APPLID. This has now been fixed and the APPLID of the file will be correctly overwritten with the APPLID of the current app.

Dump when Importing XML without a file

When you were uploading an XML file (for example with the "Import" function inside the Cockpit) and the XML file was missing (possibily due to a firewall blocking it) you could get a dump in the system.

Dump when calling an App in a Server Split Scenario (18378)

When having a split setup (Frontend / Backend System) you could be getting a dump when opening an extension app under certain conditions.

Contributors
  • Maximilian Schaufler

  • Andreas Reichert

  • Rabi Brunsvik