Lesson 4 of 6
The sales data model and your reports
7 min
Most users never look at tables, so why does a business course cover the data model? Because custom reports, interfaces and extracts do look at tables, and when the tables change those reports can return wrong numbers without throwing an error. A report that quietly shows every Contoso order as "not delivered" is worse than one that crashes.
What changed underneath sales documents
| Change | Before (ECC) | After (SAP S/4HANA) |
|---|---|---|
| Status tables removed | Header and item status in VBUK and VBUP | Status fields moved to the document tables: VBAK/VBAP (sales), LIKP/LIPS (delivery), VBRK (billing) |
| Document flow simplified | VBFA with many redundant entries | Simplified VBFA; a Process Overview combines flow and status |
| Document category widened | VBTYP, one character | VBTYPL, four characters |
| Index tables dropped | VAKPA, VAPMA, VLKPA, VLPMA, VRKPA, VRPMA | No longer used; searches read the document tables |
| Rebate index dropped | VBOX | Not used (see lesson 3) |
| Pricing conditions | Document conditions in KONV | Document conditions in PRCD_ELEMENTS, with some longer fields |
The sales data model changes behind the scenes.
The status change is the one with the widest reach. In ECC, a report asking "which orders are fully delivered but not billed?" typically joined the order header with VBUK. In SAP S/4HANA, VBUK and VBUP still exist in the ABAP Dictionary for typing, but they are not filled. A program that selects from them directly gets nothing back.
| Question the report asks | ECC source | S/4HANA source |
|---|---|---|
| Overall delivery status of an order | VBUK | Status field on VBAK |
| Item billing status of a delivery | VBUP | Status field on LIPS |
| Orders for a given customer | Index table VAKPA | Select from the sales document tables (or a CDS view) |
| Condition values on an invoice | KONV | PRCD_ELEMENTS |
Finding the reports that are affected
SAP's custom code checks flag code that uses removed or changed objects, including deprecated SD transactions and BAPIs and direct access to the old tables. SAP's guidance is to replace direct selects with the new fields, read modules or CDS views. Developers own the fix, but the business owns the question "which reports do we still use and what do they tell us?"
- InventoryList custom sales reports, extracts and interfaces with their business owners
- UsageDrop reports nobody ran in the last year; retire them rather than fix them
- Code checkFlag code that reads VBUK, VBUP, index tables, KONV or old document categories
- Fix or replaceAdapt code, or replace the report with a standard Fiori or analytical app
- CompareRun old and new reports on the same data and reconcile results
Testing reports: compare, don't eyeball
A fixed report should give the same answer as the old one for the same business situation. The strongest test runs both on comparable data: the ECC report in the pre-conversion system and the converted report on the converted copy of the same data. Differences are either expected (a known design change) or defects. For Contoso, Priya's team picks the five reports finance and sales use for month-end: open orders, backlog by plant, delivered-not-billed, billing by customer and rebate accruals.
What would you do?
After conversion, Contoso's "delivered not billed" report runs fine but shows zero lines, while the billing team knows dozens of deliveries are waiting. What is the most likely cause?
- VBUK and VBUP are not filled; status fields live on the document header and item tables.
- Index tables and VBOX are not used; document conditions move from KONV to PRCD_ELEMENTS.
- Broken reports often return empty or wrong results instead of errors.
- Retire unused reports; reconcile retained ones against ECC output.
Check your understanding · not graded
Lesson check
1. Where is the overall delivery status of a sales order held in SAP S/4HANA?
2. Which table holds document pricing conditions in SAP S/4HANA?
3. Why is a custom report that reads VBUP dangerous after conversion?
4. What is the strongest test for a remediated custom report?