Now accepting guest editorial from SAP, Oracle, Workday and ServiceNow practitioners.Pitch a guide
The Sign-Off Table

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

ChangeBefore (ECC)After (SAP S/4HANA)
Status tables removedHeader and item status in VBUK and VBUPStatus fields moved to the document tables: VBAK/VBAP (sales), LIKP/LIPS (delivery), VBRK (billing)
Document flow simplifiedVBFA with many redundant entriesSimplified VBFA; a Process Overview combines flow and status
Document category widenedVBTYP, one characterVBTYPL, four characters
Index tables droppedVAKPA, VAPMA, VLKPA, VLPMA, VRKPA, VRPMANo longer used; searches read the document tables
Rebate index droppedVBOXNot used (see lesson 3)
Pricing conditionsDocument conditions in KONVDocument 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 asksECC sourceS/4HANA source
Overall delivery status of an orderVBUKStatus field on VBAK
Item billing status of a deliveryVBUPStatus field on LIPS
Orders for a given customerIndex table VAKPASelect from the sales document tables (or a CDS view)
Condition values on an invoiceKONVPRCD_ELEMENTS
Where a typical custom sales report has to look after conversion.
The Sign-Off Table · thesignofftable.com/academy/sap-sd-304

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?"

  1. InventoryList custom sales reports, extracts and interfaces with their business owners
  2. UsageDrop reports nobody ran in the last year; retire them rather than fix them
  3. Code checkFlag code that reads VBUK, VBUP, index tables, KONV or old document categories
  4. Fix or replaceAdapt code, or replace the report with a standard Fiori or analytical app
  5. CompareRun old and new reports on the same data and reconcile results
From report inventory to proven fix.
The Sign-Off Table · thesignofftable.com/academy/sap-sd-304

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.

Occasional, low exposureRetire or spot-check
Critical, low exposureRun once and reconcile totals
Occasional, high exposureFix, then test against a few known documents
Critical, high exposureFix, then reconcile line by line against ECC output
How deep to test each custom report.
The Sign-Off Table · thesignofftable.com/academy/sap-sd-304

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?

Key points
  • 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. 1. Where is the overall delivery status of a sales order held in SAP S/4HANA?

  2. 2. Which table holds document pricing conditions in SAP S/4HANA?

  3. 3. Why is a custom report that reads VBUP dangerous after conversion?

  4. 4. What is the strongest test for a remediated custom report?