Lesson 4 of 6
Billing parallel runs and comparison
10 min
Listen to this lesson
The billing comparison is the heart of this course. The question is simple to state: given the same customers, devices, readings and rates, does SAP S/4HANA Utilities produce the same bills as IS-U did? The answer is never "identical" for every bill, because some differences are intended (a fixed defect, a changed rounding rule) and some are noise. So the comparison works with tolerances and classified differences, like any parallel run whose outputs are not identical by design.
Designing the comparison
- Freeze inputsSame meter reading results, master data and rates in the source and the converted copy
- Bill in bothLegacy ECC copy and converted S/4HANA system bill the same portions, ideally with simulation
- ExtractBilling and print document lines per contract: operands, quantities, prices, amounts, taxes
- CompareMatch per contract and line; apply tolerances
- ClassifyEach difference: defect, intended change, legacy exception or noise
- SignBilling owner signs results per portion and rate category
Simulation is the tester's friend. Billing simulation and mass simulation (for example EA39 for mass billing simulation, or the simulation option in EA00) create simulated billing documents with their own number range, without deleting billing orders, changing meter reading results or master data. That means the same portion can be simulated repeatedly in both systems while the comparison is tuned, without consuming the billing orders. SAP's learning material also describes mass simulation for rate reforms and price changes, which is the same capability used here.
Tolerances
| Level | Tolerance (illustrative) | Why |
|---|---|---|
| Bill total per contract | USD 0.00 for 99.9% of contracts; up to USD 0.05 for the rest | Rounding differences on many lines |
| Line amount | Exact match, except documented rounding changes | Lines expose where differences come from |
| Quantities | Exact match | Consumption must never differ |
| Taxes | Exact match per jurisdiction | Regulated; differences are defects |
| Count of bills and outsorts | Same number of bills; outsorts explained | Missing or held bills are defects |
An illustrative tolerance policy. Agree it with the billing owner and, where required, the regulator, before Mock 1.
Coverage: which bills to compare
Comparing every bill of a portion is possible and desirable for counts and totals. For line-level investigation, coverage matters more than volume. Northwind's coverage matrix lists every rate category and every situation that changes billing logic, and the comparison must include bills for each combination that exists in production.
- Move-in and move-out within the period, including final bills.
- Estimated reads followed by actual reads (backbilling and adjustments).
- Rate or price changes within the billing period (proration).
- Budget billing plans and their settlement on the annual bill.
- Device replacements mid-period and register changes.
- Reversals and rebilling after a corrected read.
What would you do?
In Mock 1's comparison, 2,140 residential bills in portion 07 differ by exactly USD 1.25. All are customers with a mid-period price change. What is the most likely cause, and what next?
How many bills to compare
For counts and totals, compare everything: every bill in every simulated portion. Automated comparison of totals per contract is cheap once the extraction exists. For line-level analysis of matching bills, a sample is enough; the effort goes into the differences. Northwind (illustrative) compared all 30,500 bills of each of three portions in Mock 1: 99.2% matched exactly, 0.6% differed within tolerance (rounding), and 0.2%, about 60 bills per portion, differed beyond tolerance. Those 60 or so were triaged and classified individually, and they became the defect list.
| Mock 1 result per portion (illustrative) | Bills | Share |
|---|---|---|
| Exact match | 30,256 | 99.2% |
| Within tolerance (rounding) | 183 | 0.6% |
| Beyond tolerance, triaged | 61 | 0.2% |
| Total | 30,500 | 100% |
A portion-level comparison summary. Beyond-tolerance bills are triaged one by one.
What goes wrong in testing
| Pitfall | Effect | Prevention |
|---|---|---|
| Inputs not frozen | Differences caused by different reads or rates | Copy both systems from the same point and lock rate changes |
| Comparing totals only | Offsetting line errors hidden | Compare lines for every beyond-tolerance bill and a sample of matches |
| Tolerances set after results | Defects accepted to meet a date | Tolerances signed before Mock 1 |
| Missing situations in coverage | Logic paths untested until production | Coverage matrix checked against production frequencies |
Comparison pitfalls in utilities parallel runs.
- Compare bills from frozen, identical inputs in both systems; simulation lets you repeat it safely.
- Agree tolerances per level before Mock 1; quantities and taxes match exactly.
- Cover every rate category and every situation that changes billing logic.
- Triage differences: quantities, then prices and operands, then invoicing and print.
Check your understanding · not graded
Lesson check
1. Why is billing simulation useful for comparison?
2. Which values should match exactly in a billing comparison?
3. A constant difference appears on all bills with a mid-period price change. Where do you look?
4. What blocks a mock's billing exit?