Neptune DXP21 and DXP22 Issue with true/false (Boolean) values
Gregory Hyson
started a topic
over 1 year ago
Overview
The Neptune platform converts data from the JavaScript true/false format to the ABAP "X"/" " format. We recently discovered an issue with this conversion that impacts BlueWorx. The impact is that data can be incorrectly changed when being transferred between SAP and the Neptune application.
The issue affects all releases of DXP21 (including the current release of 21.10.0020) and all releases of DXP22 (including the current release 22.10.0009). Neptune has provided a fix for DXP21 (21.10.0020) and DXP22 (22.10.0009) which we've included with this post. Our internal testing shows that DXP6 (6.0.025) is not affected.
Details
The issue is in the Neptune data parser which converts JSON data (from/to the app) into the ABAP data format used in the SAP system.
For true/false (Boolean) values the data parser looks for Data Elements in the current transaction (network request) with the DDBOOL data type and complies a list of them in a large string of Boolean Data Elements. When working out whether to convert the JavaScript value true to "X' and vice-versa it looks for the field's Data Element in the large string of DDBOOL data types. It does this by searching for the Data Element within the string. This means that there can be invalid matches, for example:
Data Element /SOLTIUS/PM_E_COND_ISNEW is a DDBOOL type and is added to the large string of Boolean Data Elements,
A value "Excellent" with Data Element definition of /SOLTIUS/PM_E_COND is processed by the data parser:
The parser checks the large string of Boolean Data Elements and finds a match on "/SOLTIUS/PM_E_COND" as it is contained within "/SOLTIUS/PM_E_COND_ISNEW"
The parser then converts the value "Excellent" to "X" believing that it is Boolean.
For this issue to occur:
A non-Boolean field's Data Element must be contained within a Boolean fields Data Element, AND
Both fields must be part of the same Network (ajax) request.
Resolution The issue was resolved by Neptune by adding a name separator character whenever we concatenate type names within the /NEPTUNE/CL_JSON_PARSER class. Neptune have provided fix transports for DXP21 (DXP 21.10.0020) and DXP22 (22.10.0009). They are attached to this post.
Test and Transport to Production Follow your normal SAP change management procedures to test the update and ultimately transport to production.
Licensed Download of Software All software, content and other intellectual property available on this site is proprietary to Accenture (or Accenture's partners or third party licensors). Unauthorized or inappropriate use, access, download, transfer, distribution, reverse engineering, interference, modifying, copying or disabling without appropriate license will be considered breach of use and we reserve the right to bring appropriate action as a result.
Gregory Hyson
Overview
The Neptune platform converts data from the JavaScript true/false format to the ABAP "X"/" " format. We recently discovered an issue with this conversion that impacts BlueWorx. The impact is that data can be incorrectly changed when being transferred between SAP and the Neptune application.
The issue affects all releases of DXP21 (including the current release of 21.10.0020) and all releases of DXP22 (including the current release 22.10.0009). Neptune has provided a fix for DXP21 (21.10.0020) and DXP22 (22.10.0009) which we've included with this post. Our internal testing shows that DXP6 (6.0.025) is not affected.
Details
The issue is in the Neptune data parser which converts JSON data (from/to the app) into the ABAP data format used in the SAP system.
For true/false (Boolean) values the data parser looks for Data Elements in the current transaction (network request) with the DDBOOL data type and complies a list of them in a large string of Boolean Data Elements. When working out whether to convert the JavaScript value true to "X' and vice-versa it looks for the field's Data Element in the large string of DDBOOL data types. It does this by searching for the Data Element within the string. This means that there can be invalid matches, for example:
For this issue to occur:
Resolution
The issue was resolved by Neptune by adding a name separator character whenever we concatenate type names within the /NEPTUNE/CL_JSON_PARSER class.
Neptune have provided fix transports for DXP21 (DXP 21.10.0020) and DXP22 (22.10.0009). They are attached to this post.
Contact Neptune via https://support.neptune-software.com for advice and fixes for other versions.
Test and Transport to Production
Follow your normal SAP change management procedures to test the update and ultimately transport to production.
Licensed Download of Software
All software, content and other intellectual property available on this site is proprietary to Accenture (or Accenture's partners or third party licensors). Unauthorized or inappropriate use, access, download, transfer, distribution, reverse engineering, interference, modifying, copying or disabling without appropriate license will be considered breach of use and we reserve the right to bring appropriate action as a result.