CRM and CX Blog Posts by SAP
Stay up-to-date on the latest developments and product news about intelligent customer experience and CRM technologies through blog posts from SAP experts.
cancel
Showing results for 
Search instead for 
Did you mean: 
Michael_W
Product and Topic Expert
Product and Topic Expert
0 Kudos
859

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:

  • Configuration and Pricing Services – Locks Against Changes
  • Configuration and Pricing Services – Deprecation of /closeSession
  • Configuration and Pricing Services – WHERE LIKE Database Selects in Local Extensions
  • Pricing service – New APIs For Currency Conversion
  • Pricing service – Return Used Pricing Attributes
  • Variant Configuration service – Limit the Number of Conflicts
  • Variant Configuration service – Return Dependency Id in a Conflict
  • Variant Configuration service – Return Context and Source
  • Variant Configuration service – Search By BOM Application
  • Administration – Delta Replication Monitoring Details
  • Administration – SDI Agent Details

 

It also includes a call to act regarding the following change:

  • Configuration and Pricing Services – Deprecation of /closeSession

 

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.

 

Configuration and Pricing Services – Locks Against Changes

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 DocumentLock 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).

 

Configuration and Pricing Services – Deprecation of /closeSession

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).

 

Configuration and Pricing Services – WHERE LIKE Database Selects in Local Extensions

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:

  1. Select all customers from a city that starts with any character followed by “ondon”:
   var db = sap.db();
   var selectCityLondon = db.select()
    .columns("*")
    .from("ZMYCUSTOMERS")
    .where(
        db.like("CITY", db.string("_ondon"))
    ).build();
  1. Select all customers with a name that starts with character “A”:
   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.

 

Pricing service – New APIs For Currency Conversion

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 ConversionCurrency 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 SettingsCurrencies 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.

 

Pricing service – Return Used Pricing Attributes

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 AttributesUsed 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.

 

Variant Configuration service – Limit the Number of Conflicts

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 ConflictsLimit 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.

 

Variant Configuration service – Return Dependency Id in a Conflict

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.

 

Variant Configuration service – Return Context and Source

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 DataRequest Context & Source Data

Response with Context & Source DataResponse with Context & Source Data

More information will be published in the API Definition and in the Development Guide (Pre-Production) with the May release.

 

Variant Configuration service – Search by BOM Application

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 ApplicationSearch 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.

 

Administration – Delta Replication Monitoring Details

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 ReplicationDelta Replication

More information will be published in the Administration Guide (Pre-Production) with the February release.

 

Administration – SDI Agent Details

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.

Michael_W_19-1744880078228.png

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.