Synthetic SAP data is only useful if it sits on the real table architecture. A flat CSV of invented invoices teaches a model nothing about how SAP actually holds its books.
SAP ECC worlds carry the classic structure: accounting document headers and line items in BKPF and BSEG, purchasing in EKKO and EKPO, sales in VBAK and VBRK, vendor and customer masters in LFA1 and KNA1, bank statements in FEBKO and FEBEP, change documents in CDHDR and CDPOS. S/4HANA worlds are built on ACDOCA, the Universal Journal that holds every posting (the classic BKPF and BSEG tables remain beside it for compatibility) - which matters because a model trained on ECC structure does not transfer to S/4HANA. A migration pair generates the same business reality twice from one seed, once in each architecture, for testing exactly that transfer.
Fraud in these worlds is separable only through behaviour and event trails, never through a column that restates the label. Purchase order releases and invoice payment blocks are recorded as CDHDR/CDPOS change documents, so self-approval above authority or an approval backfilled after payment is found by reading who released what, when, relative to the payment run. Below-limit self-release is policy-legitimate and present, which is what gives the fraud somewhere to hide.
Single runs scale to a million rows on the SAP platforms. Every run is deterministic: the same seed regenerates the identical world byte for byte, and mainstream SAP ECC support ends December 31, 2027, which is precisely why both architectures ship side by side.