Lesson 2 of 6
Equivalence partitioning and boundaries on SAP rules
9 min
Listen to this lesson
Contoso buys rotors CMC-RTR-200 from Lakeside Components at a purchase order net price of $40.00 each. Finance process owner Dan wants supplier invoices that come in noticeably above the agreed price stopped before payment. In SAP S/4HANA this is done with tolerance limits for logistics invoice verification, maintained per company code and tolerance key in the Customizing activity Set Tolerance Limits (OMR6). Key PP covers price variances.
SAP's own training describes three outcomes. If the variance is inside the limits, the invoice posts without a message. If it falls below the lower limit, the user sees a message but the invoice posts and is not blocked. If it exceeds the upper limit, the invoice can still be posted but it is blocked for payment, and the block applies to the whole invoice until someone releases it. For each limit you also choose whether the system checks it at all, and limits can be defined as absolute amounts or as percentages.
Equivalence partitions
An equivalence partition is a set of inputs the rule treats the same way. If one value from a partition behaves correctly, the others are assumed to behave the same, so you need one test per partition, not one per value. Partitions come from the specification: every place the rule draws a line, a new partition starts. Inputs the system should refuse outright (a negative quantity, a non-numeric price) form invalid partitions and get tests of their own, one at a time, so one rejection cannot hide another.
Contoso configured PP for company code 1710 with a percentage lower limit of 10% and an upper limit of 5%, both set to be checked. For an invoice line of 100 rotors, the expected amount is $4,000.00.
| Partition | Invoice amount for 100 rotors | Expected result | Sample value |
|---|---|---|---|
| P1: more than 10% under the PO price | Below $3,600.00 | Message shown; invoice posts; no payment block | $3,400.00 |
| P2: inside the limits | $3,600.00 to $4,200.00 | No message; invoice posts; no block | $4,000.00 |
| P3: more than 5% over the PO price | Above $4,200.00 | Invoice posts with a payment block | $4,500.00 |
Partitions for tolerance key PP at Contoso. Three partitions, three tests for full partition coverage.
Boundary value analysis: two-value and three-value
Partitions tell you where the rule changes behavior. Boundary value analysis tests exactly where it changes, because that is where configuration and code most often go wrong: a limit entered as 50 instead of 5, a "greater than" that should be "greater than or equal", a percentage applied to the wrong base. A boundary value is the smallest or largest value in an ordered partition.
The ISTQB syllabus describes two variants. In two-value boundary analysis you test each boundary value and its closest neighbor in the adjacent partition. In three-value analysis you test the boundary and the neighbors on both sides. "Closest neighbor" depends on the precision of the field: for a USD amount it is one cent, for a quantity in pieces it is one piece, for a date it is one day. Get the increment from the field, not from habit.
| Boundary | Two-value tests | Three-value tests |
|---|---|---|
| Upper limit, +5% ($4,200.00) | $4,200.00 and $4,200.01 | $4,199.99, $4,200.00 and $4,200.01 |
| Lower limit, -10% ($3,600.00) | $3,600.00 and $3,599.99 | $3,599.99, $3,600.00 and $3,600.01 |
| Coverage items | 4 boundary values | 6 boundary values |
Notice what the boundary tests reveal that the partition tests cannot. Is an invoice at exactly +5.00% blocked or not? The tolerance text says "more than 5%", but the only way to know what the configured system does is to post $4,200.00 and look. Record the actual behavior in the test result; if it differs from what Dan expects, that is a requirements conversation, not a judgment call for the tester. Three-value analysis adds a value just inside each boundary, which catches the off-by-one in the other direction, at the cost of two extra tests. Use it when the rule is financially sensitive, as this one is.
The same reasoning applies across the business. Great Lakes Fleet Services has a credit limit of $250,000 in SAP Credit Management and a current exposure of $240,000. When a sales order pushes exposure above the limit, the automatic credit check blocks the order and a credit case appears for the analyst in the Manage Documented Credit Decisions app. The partitions are "exposure after the order stays within the limit" and "exposure exceeds the limit"; the boundary tests are an order worth exactly $10,000.00 and one worth $10,000.01. Which side of the line "exactly at the limit" falls on is, again, something to observe and confirm with the process owner.
Quantities work the same way. If Contoso's purchasing info record for the rotor carries a minimum order quantity of 50, the partitions are 1 to 49 (below minimum) and 50 or more, plus the invalid partition of zero. Whether a quantity below the minimum produces a warning or an error depends on how the message is configured in your system, so check the expected result with the procurement lead before you write it down.
| Rule | Partitions | Boundary tests (two-value) | Increment |
|---|---|---|---|
| Price tolerance PP, 100 rotors | Under, inside, over | $3,599.99 and $3,600.00; $4,200.00 and $4,200.01 | One cent |
| Credit limit, Great Lakes Fleet Services | Within limit, over limit | Orders of $10,000.00 and $10,000.01 at $240,000 exposure | One cent |
| Minimum order quantity 50, rotor info record | Zero (invalid), 1 to 49, 50 or more | 49 and 50 pieces | One piece |
What would you do?
Maria, the order-to-cash key user, is helping with procurement tests and proposes two cases for the PP tolerance: an invoice at 4% over the PO price and one at 6% over. "That covers below and above the limit," she says. What do you advise?
- An equivalence partition is a set of inputs the rule treats the same; test one value per partition, and invalid partitions one at a time.
- Tolerance key PP gives three partitions: under the lower limit (message), inside (silent), over the upper limit (payment block).
- Two-value boundary analysis tests each boundary and its closest neighbor across the line; three-value adds the neighbor inside.
- The closest neighbor is set by field precision: one cent, one piece, one day.
- Boundary tests consume data such as credit exposure, so control the starting state for each test.
Check your understanding · not graded
Lesson check
1. What happens to an invoice whose price variance exceeds the PP upper limit?
2. Using two-value boundary analysis on a USD upper limit of $4,200.00, where values above the limit are blocked, which pair do you test?
3. How many tests give full partition coverage for a rule with three valid partitions and one invalid partition?
4. Why can a credit limit boundary test fail for reasons unrelated to the rule?