Enterprise Resource Planning Blogs by SAP
Get insights and updates about cloud ERP and RISE with SAP, SAP S/4HANA and SAP S/4HANA Cloud, and more enterprise management capabilities with SAP blog posts.
cancel
Showing results for 
Search instead for 
Did you mean: 
Wei
Product and Topic Expert
Product and Topic Expert

Introduction

This blog helps you understand how the system calculates prices for service contracts at the billing request line level according to various configuration settings.
A service contract is a long-term agreement with your customer. To invoice the customer based on scheduled settlement periods, you can use the periodic billing plans.
Billing plans of service contracts are integrated with the Price Management in the Sales area. Note that the price calculation is based on dates only: The price engine does not use timestamps. The following key factors control the price calculation:

    • Master data in pricing
    • Control data of billing plan
    • Settlement start and end dates

In this blog, we also provide several configuration settings to explain the system behaviors:

  1. When you use a Monthly Price and set 30 Days in Month
  2. When you use a Monthly Price and set <empty> Days in Month
  3. When you use a Yearly Price and set 360 Days in Year
  4. When you use a Yearly Price and set <empty> Days in Year

Master Data in Pricing

With the scope item 3MO (Service Contract Management), SAP delivers the condition type PSI1 for Service Contract. Your key user or configuration expert can also configure your own condition types according to your business requirements, such as a yearly price, and add it into the pricing procedure that can be used for service contracts.

The following diagram shows the details of the monthly price condition type PSI1 in the configuration activity Set Condition Types for Pricing in Sales. The calculation type M determines that the condition value is calculated monthly.

Condition Type PSI1

Control Data for Creating Dates in Billing Plan (Days in Month and Days in Year)

You use periodic billing plans to schedule individual dates for the billing of service contracts, independent of the provisioning of the service. Your key user or configuration expert can define "Days in Month" and "Days in Year" to control the pricing calculation using the configuration activity Define Billing Plan Types. "Days in month" is used for monthly price and "days in year" for yearly price. The SAP predelivered setting is 30 Days in Month and 360 Days in Year for the condition type PSI1 (monthly price). See the following diagram:

Control Data for Billing Plan


In a service contract, the system uses this configuration to calculate a daily price along with the pricing master data. We also recommend another two ways of setting up the control data:

    • Case 1: When you use a yearly price condition and expect the same price for the yearly billing of both normal years and leap years, apply empty to both settings.

    • Case 2: When you use a yearly price condition but want prices calculated according to the days contained in the year, use 365 for days in year.

In this blog, we're going to dive into the settings of the control data to see how system calculates prices for billing plans in service contracts.

When you use a Monthly Price and set 30 Days in Month

The system calculates the price and sets the billing value according to the logic described below (the slash / means division and the asterisk * means multiplication):

DatePrice on the DateHow to Calculate Billing Value
31st of the month0With this configuration, the system only considers 30 days for every month, no matter how many days the month actually has. Therefore, the system applies 0 price to the 31st of the months that have 31 days so that the price for every month is the same regardless how many days the month has.
Feb 28th (Normal Year)(Monthly Price / 30) * 3February in a normal year contains only 28 days, which is less than 30 days. Therefore, the billing value for Feb 28th in normal year is calculated as a 3-day price so that the billing value of this month is the same as the monthly price.
Feb 29th (Leap Year)(Monthly Price / 30) * 2February in a leap year contains only 29 days, which is less than 30 days. Therefore, the billing value for Feb 29th in a leap year is calculated as a 2-day price so that the billing value of this month is the same as the monthly price.
Any other datesMonthly Price / 30Daily billing value equals to Monthly Price / 30. For example: when a monthly price is 30 USD, the daily billing value is 30USD divided by 30 days, making 1 USD per day.

The following examples (with monthly price 100 USD) can demonstrate the system behavior in some special cases:



Settlement Start Date

DD/MM/YYYY


Settlement End Date

DD/MM/YYYY
Billing ValueCalculation Logic
31/01/202331/01/20230 USD0 USD * 1 day = 0 USD
01/01/202331/01/2023100 USDApply the monthly price
01/01/202330/01/2023100 USD100 USD / 30 day * 30 days = 100 USD
01/02/202328/02/2023100 USDApply the monthly price
01/02/202327/02/202390 USD100 USD / 30 days * 27 days = 90 USD
01/02/202429/02/2024100 USDApply the monthly price
01/02/202428/02/202493,3 USD100 USD / 30 days * 28 days = 93,3 USD
10/01/202309/02/2023100 USDApply the monthly price
10/02/202309/03/2023100 USDApply the monthly price

When you use a Monthly Price and set <empty> Days in Month

In this case, the system gets a daily billing value by dividing the monthly price by the actual days contained in the month. The calculation logic can be expressed as the following:

    • Daily billing value = monthly price / days contained in the month
    • Billing value of the billing request line = daily billing value * days defined by settlement start and end dates

The following examples (still monthly price 100 USD) can demonstrate the system behavior:



Settlement Start Date

DD/MM/YYYY


Settlement End Date

DD/MM/YYYY
Billing ValueCalculation Logic
31/01/202331/01/20233,23 USD100 USD / 31 days * 1 day = 3,23 USD
01/01/202331/01/2023100 USDApply the monthly price
01/01/202330/01/202396,77 USD100 USD / 31 days * 30 days = 96,77 USD
01/02/202328/02/2023100 USDApply the monthly price
01/02/202327/02/202396,43 USD100 USD / 28 days * 27 days = 96,43 USD
01/02/202429/02/2024100 USDApply the monthly price
01/02/202428/02/202496,55 USD100 USD / 30 days * 28 days = 96,55 USD
10/01/202309/02/2023100 USDApply the monthly price
10/02/202309/03/2023100 USDApply the monthly price

When you use a Yearly Price and set 360 Days in Year

Similarly like the case when you set 30 days in month, when you set 360 days in year, the system calculates the price and sets the billing value according to the logic described below (the slash / means division and the asterisk * means multiplication):

DatePrice on the DateHow to Calculate Billing Value
Last 5 days in December of a  normal year0In a normal year, there're 365 days in total. With the configuration 360 days in year, the system regards the extra dates not involved in the price calculation. Therefore, the system applies 0 price to these dates (total 5): Dec. 27th, 28th, 29th, 30th and 31st.
Last 6 days in December of a leap year0Similarly in a leap year, since there're 6 days more than the configure 360 days in year, the system applies 0 price to these days (total 6): Dec. 26th, 27th, 28th, 29th, 30th and 31st.
Any other datesYearly Price / 360 days

Daily billing value = Yearly price / 360 days.

For example: if a yearly price is 360 USD, the daily billing value is 360 USD / 360 days, that is 1 USD.

The following examples (yearly price 1200 USD) can demonstrate the system behavior in this case:



Settlement Start Date

DD/MM/YYYY


Settlement End Date

DD/MM/YYYY
Billing ValueCalculation Logic
01/01/202326/12/20231200 USD1200 USD / 360 days * 360 days = 1200 USD
01/01/202331/12/20231200 USDApply the yearly price for the normal year
01/01/202431/12/20241200 USDApply the yearly price for the leap year
01/04/202331/03/20241203,33 USDThis settlement period spans more than one year and it contains a Feb 29th. Therefore, the billing value of this period is calculated as the sum of two parts:
  1. From 01/04/2023 to 31/12/2023: 1200 USD/ 360 days * 270 days + 0 * 5 days
  2. From 01/01/2024 to 31/03/2024: 1200 USD / 360 days * 91 days
The billing value is the total sum 1203,33 USD.
01/04/202431/03/20251197,67 USDThis settlement period spans more than one year and it contains a Feb 29th. Therefore, the billing value of this period is calculated as the sum of two parts:
  1. From 01/04/2024 to 31/12/2024: 1200 USD/ 360 days * 269 days + 0 * 6 days
  2. From 01/01/2025 to 31/03/2025: 1200 USD / 360 days * 90 days
The billing value is the total sum 1197,67 USD.

When you use a Yearly Price and set <empty> Days in Year

In this case, the system automatically takes 365 days for normal years and 366 days for leap years. Therefore, daily the billing value equals the yearly price divided by 365 days for normal years and by 366 days for leap years.
The following examples (yearly price 1200 USD) can demonstrate the system behavior in this case:



Settlement Start Date

DD/MM/YYYY


Settlement End Date

DD/MM/YYYY
Billing ValueCalculation Logic
01/01/202327/12/20231186,85 USD1200 USD / 365 days * 361 days = 1186,85 USD
01/01/202331/12/20231200 USDApply the yearly price 1200 USD for the normal year
01/01/202427/12/20241186.89 USD1200 USD / 366 days * 362 days = 1186,89 USD
01/01/202431/12/20241200 USDApply the yearly price 1200 USD for the leap year
01/04/202331/03/20241200 USDApply the yearly price 1200 USD for the leap year
01/04/202431/03/20251200 USDApply the yearly price 1200 USD for the normal year

Settlement Start and End Dates

According to the explanation above, you might have already understood how the system uses the settlement start and end dates during the price calculation of billing plans. Here is a summary:

  • For monthly price, the system firstly calculates whether the billing request line is a whole month based on the settlement start and end dates.
    • If it is less than a month, the billing value is the sum based on the daily price.
    • If it is a full month, the billing value equals to the monthly price.
  • For yearly price, the system firstly calculates whether the billing request line is a full year based on the settlement start and end dates.
    • If it is a full year, the billing value equals to the yearly price.
    • If it is less than a year, the billing value is the sum based on the daily price.

Conclusion

In this blog, you have learnt the key factors that influence the price calculation of billing plans in service contracts. We explained the configuration settings that your system can use. With the examples that we provided, you can understand how the system gets the billing value in each billing request line, based on the configuration settings and the settlement start and end dates.

If you have any question, please comment under this blog. We will get back to you soon with our answers. If you have any other questions about service contracts, you can find Q&A and post your questions in the community.

Additional Information

How Periodic Billing Plan is Generated for Service Contract Items
Price Management
 

5 Comments
justin_zhao01
Employee
Employee
0 Kudos
Very helpful article! Thanks for sharing!
Siraj_Saibudeen
Contributor
0 Kudos
Great Article!! Thanks for sharing.

I was struggling with understanding how the prices are calculated for each billing plan item in the service contract, but it is clearly articulated and explained in this blog. Brilliant!!

 
HanaLankova
Explorer
0 Kudos
Hi,

Thank you for this article. Unfortunately I could not find there our configuration settings so not sure what Control Date to be used accordingly.

May you please also confirm what is the calculation behind when configuration is for:

  • Condition type PPR0

  • Condition Class: 'B' Prices

  • Calculation type is 'C' = Quantity (instead of M or N)


Basically pricing is taken from other system via integration (Time is always as 00:00:00).

Furthermore Billing Plan details are as following:

  • Settlement rule is always as 'Contract Start' (CONT006).

  • There is always only 1 row even the period is for 3 years contract sometimes, so Settlement Start & End date (e.g. 01.01.2023 - 31.12.2026) should be always equal to Contract Start & End Date (e.g. 01.01.2023 - 31.12.2026).


Regarding the Control Data: Create Dates Configuration, by default setting is:

  • Days in Month: 30

  • Days in Year: 360


Is the calculation influenced and could system confirm different Settlement Start & End Dates with above configuration and needs to be changed to 'Empty' value for both Control Data Fields or system ignores this setting and it can be kept as it is?

 

Your response is much appreciated in advance. Please let me know if further details are required.

Thank you,

Hana
Hi Hana,

The condition type with Calculation type is 'C' = Quantity is not impacted by duration, but by the quantity, for example, when condition record is 100 USD, an 1-year service contract and 2-year service contract of same quantity have the same value. The Days in Month and Days in Year values are ignored in this case.

Best regards,

Jingle
HanaLankova
Explorer
0 Kudos
Thank you Jingle 🙂