
The 2505 release of SAP Variant Configuration and Pricing is planned to be deployed to BTP customer tenants on May 07, 2025:
Administration UI and Administration service:
Release | Test/Non-Productive & Productive Upgrades |
2505 | May 7, 2025 |
Variant Configuration service & Pricing service:
Release | Test/Non-productive Upgrade | Productive Upgrade |
2505 | May 7, 2025 | May 21, 2025 |
This blog covers the following planned innovations:
It also includes a call to act regarding the following change:
Please check the updated roadmap and release notes after the release date to see which of these features were delivered as planned.
Disclaimer
The information in this presentation is confidential and proprietary to SAP and may not be disclosed without the permission of SAP.
Except for your obligation to protect confidential information, this presentation is not subject to your license agreement or any other service or subscription agreement with SAP. SAP has no obligation to pursue any course of business outlined in this presentation or any related document, or to develop or release any functionality mentioned therein.
This presentation, or any related document and SAP's strategy and possible future developments, products and or platforms directions and functionality are all subject to change and may be changed by SAP at any time for any reason without notice. The information in this presentation is not a commitment, promise or legal obligation to deliver any material, code or functionality. This presentation is provided without a warranty of any kind, either express or implied, including but not limited to, the implied warranties of merchantability, fitness for a particular purpose, or non-infringement. This presentation is for informational purposes and may not be incorporated into a contract. SAP assumes no responsibility for errors or omissions in this presentation, except if such damages were caused by SAP’s intentional or gross negligence.
All forward-looking statements are subject to various risks and uncertainties that could cause actual results to differ materially from expectations. Readers are cautioned not to place undue reliance on these forward-looking statements, which speak only as of their dates,
and they should not be relied upon in making purchasing decisions.
The requirement was to lock certain configurations or pricing documents against changes.
A new endpoint, PATCH /pricing/documents/{documentId}/lock. will be introduced to flag a pricing document as locked or not locked. The default setting is not locked. If a pricing document is locked, it cannot be deleted, nor changed, that means, for example adding or removing an item or adding or removing a manual condition is not possible.
Lock Pricing Document
The existing endpoint GET /pricing/documents/{documentId} will be enhanced to return the locked flag for a document. The existing endpoint GET /pricing/documents will be enhanced to allow searching for locked documents.
On the configuration side, a new endpoint, PATCH /configurations/{configurationId}/lock, will be introduced analogously to flag a configuration as locked or not locked. The default setting is not locked. If a configuration is locked, it cannot be deleted, nor can it be changed, this means that neither adding, nor removing a characteristic value or resetting the configuration is possible.
The existing endpoints such as GET /configurations/{configurationId} will be enhanced to return the locked flag for a configuration. The existing endpoint GET /externalConfigurations will be enhanced to allow searching for locked configurations.
Only pricing documents and configurations that were created with autoCleanup=false can be locked against changes.
Copying locked pricing documents via POST pricing/documents/{documentId}/copy and copying locked configurations via POST /externalConfigurations will always result in unlocked copies.
More information will be published with the May release in the API Definition of the Pricing service and the Variant Configuration service and in the Development Guide (Pre-Production).
The endpoints POST /closeSession of the configuration and pricing services used to be used to remove configurations and pricing documents from the HTTP session. This is no longer required, because of improved resource management.
The endpoints are set to be deprecated and will be removed with release 2605.
Action: If called from your application, remove those calls before the May release next year (2026).
More information will be published with the 2025 May release in the API Definition of the Pricing service and the Variant Configuration service and in the Development Guide (Pre-Production).
The sap.db() API to read table content from local extensions will support wildcards with LIKE operator in WHERE clauses of SELECT statements. The wildcard characters ‘%’ and ‘_’ can be used. The percentage sign (%) wildcard matches zero or more characters. The underscore (_) wildcard matches exactly one character.
Examples:
var db = sap.db();
var selectCityLondon = db.select()
.columns("*")
.from("ZMYCUSTOMERS")
.where(
db.like("CITY", db.string("_ondon"))
).build();
var selectCustomersStartingWithA = db.select()
.columns("*")
.from("ZMYCUSTOMERS")
.where(
db.like("NAME", db.string("A%"))
).build();
This functionality is only supported for DDIC tables, not for variant tables.
More information will be published in the Extension Guide (Pre-Production) with the May release.
The new endpoint POST /currencyConversion/currencies/{fromCurrencyUnit}/convert/{toCurrencyUnit} will receive the exchange rate that is needed to convert a source currency to a target currency.
With that, the calling application can convert currencies analogously to how the Pricing service does it during price calculation.
The new endpoint also does the currency conversion and returns an output value converted into the target currency if an input value was given.
Example request:
Currency Conversion
Example response:
{
"fromCurrency": {
"value": "10000",
"unit": "INR"
},
"toCurrency": {
"value": "163.93",
"unit": "USD"
},
"exchangeRate": {
"fromFactor": 1,
"toFactor": 1,
"derivedType": "M",
"value": "-61.00000000000",
"validFromDate": "1900-01-01",
"directConversion": true,
"input": {
"type": "M",
"date": "2025-04-01"
}
}
}
To support the above, an additional new endpoint, GET /currencyConversion/currencies, will be introduced to read the settings of currency codes, like ISO code, SAP-internal code, language-dependent description, number of decimals, etc., as maintained in the back end and replicated from the back end.
Currencies Settings
Example call:
GET /currencyConversion/currencies?$filter=unit IN (‘EUR’,’USD’,’INR’)'
Response:
{
"currencies": [
{
"unit": "EUR",
"internalUnit": "EUR",
"primary": true,
"numberOfDecimals": 2,
"name": "Euro",
"description": "Euro (EMU currency as of 01/01/1999)"
},
{
"unit": "EUR",
"internalUnit": "EUR3",
"primary": false,
"numberOfDecimals": 2,
"name": "Euro",
"description": "Euro (EMU currency as of 01/01/1999)"
},
{
"unit": "INR",
"internalUnit": "INR",
"primary": false,
"numberOfDecimals": 2,
"name": "Rupee",
"description": "Indian Rupee"
},
{
"unit": "USD",
"internalUnit": "USD",
"primary": true,
"numberOfDecimals": 2,
"name": "US Dollar",
"description": "American Dollar"
}
]
}
More information will be published in the API Definition and in the Development Guide (Pre-Production) with the May release.
We will enhance stateless pricing and document pricing endpoints as follows: For item conditions, we will return for each condition exactly those pricing attribute values that were used to find the condition record. For that, we will add the new response structure successfulAccess to item conditions as depicted below.
To get this additional information returned, it must be requested through the $select parameter:
Used Pricing Attributes
Example item condition response snippet:
"conditions": [
{
"id": "a06de2ae-2779-46a7-af37-60bb1bd31f57",
"stepNumber": 11,
"counter": 1,
"conditionTypeId": "PR00",
"conditionTypeName": "Price",
"base": "1.000",
"rate": {
"value": "1.00",
"unit": "EUR"
},
"rateQuantity": {
"value": 1,
"unit": "PCE"
},
"value": "1.00",
"recordId": "00000441069999123123595901000000",
"table": "A304",
"successfulAccess": {
"counter": 40,
"attributes": [
{
"name": "KOMK-VKORG",
"value": "0001"
},
{
"name": "KOMK-VTWEG",
"value": "01"
},
{
"name": "KFRST",
"value": ""
},
{
"name": "KOMP-PMATN",
"value": "CPS_SOFTDRINK"
}
]
}
},
In the above example, the response tells you that for condition type PR00 the access number 40 found an entry in condition table A304 using the following pricing attributes:
KOMK-VKORG (Sales Org) | 0001 |
KOMK-VTWEG (Distribution Channel) | 01 |
KFRST (Release Status) | (Released) |
KOMP-PMATN (Price Material Number) | CPS_SOFTDRINK |
Such information used to be found only in the engine trace. The engine trace is still required to find out why which accesses were not successful.
More information will be published in the API Definition and in the Development Guide (Pre-Production) with the May release.
We will introduce a new query parameter conflictsTop for endpoints like GET /configurations/{configurationId}. You can use this new query parameter to specify the maximum number of conflicts that should be calculated and returned.
Limit Conflicts
Recommended: Set conflictsTop=0 to suppress conflicts calculation and improve performance if conflicts are of no interest for your consuming application.
More information will be published in the API Definition and in the Development Guide (Pre-Production) with the May release.
A requirement from consultants and support teams was to also return which dependencies caused a conflict in the configuration results.
We will enhance the conflicts response structure of endpoint GET /configurations/{configurationId} to include the new response structure dependencyId, which is a list of dependencies, for example constraints, that caused the conflict.
Example conflicts response in configuration results:
"conflicts": [
{
"id": "49a3ce9b",
"type": -1,
"name": "Constraint conflict",
"itemIds": [
"1"
],
"variables": [
{
"itemId": "1",
"characteristicId": "CPS_GARNISH1"
},
{
"itemId": "1",
"characteristicId": "CPS_OPTION_M"
}
],
"explanation": " You need to choose a garnish for burger menu sizes larger than small (S).",
"nogoods": [
{
"id": "0",
"choices": [
{
"itemId": "1",
"characteristicId": "CPS_GARNISH1",
"value": {
"value": "N",
"author": "Default"
}
},
{
"itemId": "1",
"characteristicId": "CPS_OPTION_M",
"value": {
"value": "L",
"author": "User"
}
}
]
}
],
"dependencyId": [
"CPS_GARNISH_MENU"
]
}
]
More information will be published in the API Definition and in the Development Guide (Pre-Production) with the May release.
When creating a new configuration, the context for the reference characteristics and the source of the configuration can be specified. Both, context and source, can also be overwritten using the corresponding PATCH endpoint.
Context and source used to be missing in the configuration results. Both can soon be requested as part of the configuration results by listing them in the $select query parameter like this: $select=context,source.
Request Context & Source Data
Response with Context & Source Data
More information will be published in the API Definition and in the Development Guide (Pre-Production) with the May release.
We will introduce a new filter value bomApplication for endpoint GET /kbdetermination, which enables the search for knowledge bases by the BOM application, for example SD01 or PP01.
Search for Plant and BOM Application
More information will be published in the API Definition and in the Development Guide (Pre-Production) with the May release.
The delta replication monitoring UI will be restructured to better support the use-case of two remote sources.
There will be a new table on the top, which will list the relevant information per remote source.
Delta Replication
More information will be published in the Administration Guide (Pre-Production) with the February release.
A new UI will be added to display the details of the Data Provisioning Agent that is connected to the tenant.
Prerequisite: A remote source must exist for the Data Provisioning Agent.
More information will be published in the Administration Guide (Pre-Production) with the February release.
With that, you have a good overview of what innovations are planned for the May release. Please check the updated roadmap and release notes after the release date to see which of these features were delivered as planned.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
2 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 |