CDS Compatibility Views in S/4HANA
Compatibility views preserve legacy ABAP read access to classic structures whose physical persistence changed in S/4HANA, for example MSEG/MKPF around the MATDOC material-document model and several classic Finance or Asset Accounting structures around new persistence. They are transition-oriented compatibility interfaces, not targets for new development. BSEG is an important exception: it remains a database table in S/4HANA, not a compatibility view.
This page covers what a CDS compatibility view actually is underneath its familiar table name, why code that reads it in a small UAT dataset can still fail once it hits production volume or attempts a write, and how to decide whether to tolerate the compatibility layer or migrate the underlying code to a released CDS view. It is written for the moment a custom report or batch job that worked in testing breaks during a live period-end run.
Reviewed by an ERPClimb SAP consultant on 20 Sept 2026· 1,075 words
Diese Seite ist noch nicht auf Deutsch verfügbar.
What it is
During S/4HANA simplification SAP changed the physical persistence behind a number of classic application tables. To keep older ABAP reads working, SAP provides compatibility interfaces, frequently CDS-based views with the old table name or field shape, that derive legacy-style data from the new persistence model. Well-known examples include the classic material-document names MKPF/MSEG around the MATDOC model and a number of former Finance, New G/L, CO and Asset Accounting structures that are no longer the strategic persistence source. The critical nuance is that this is object-specific: not every classic table became a compatibility view. BSEG, for example, remains a database table and continues to hold the accounting entry view in S/4HANA. Therefore a migration assessment must verify each object against SAP's simplification documentation rather than applying a blanket 'old table equals compatibility view' rule.
When to use it
There is no scenario where a consultant deliberately designs new development against a compatibility view. It exists purely so that legacy code survives the technical conversion to S/4HANA without an immediate rewrite. The right use of the concept is diagnostic and tactical: when a custom program references a table name that has become a compatibility view, treat that as a flag to assess, not a green light to leave alone. It is acceptable to tolerate the view temporarily for low-volume, read-only, non-critical reporting while a proper fix is scheduled. It is a mistake to build new Z-reports, new interfaces, or new RAP business objects that select from the old table name on the assumption that it still behaves like a table, and it is a serious mistake to leave any write logic pointed at it, because that write will fail at runtime rather than at activation or syntax check.
How it fits the stack
Below the compatibility view sits the real S/4HANA persistence: the universal journal table for finance, the consolidated material document table for logistics, or whatever new table absorbed the old one's data. Above the compatibility view sits everything that never got rewritten: classic ABAP reports, custom function modules, older BAPIs, and any Z-code doing native SQL against the old table name. It does not supersede anything by itself; it is inserted as a bridge during the data model conversion, standing in for a table that no longer physically exists under that name. It is conceptually adjacent to, but distinct from, the released CDS view entities SAP provides for the same business data, which are properly modeled, association-aware, and intended as the actual long-term interface for new development, unlike the compatibility view which is a technical stopgap.
A worked example
A converted ECC report reads MSEG for historical goods movements. The code still compiles because S/4HANA preserves legacy read compatibility, but the underlying persistence and optimizer path now come from the MATDOC-based model. Under production volume the old access pattern performs poorly, so the team traces the statement and redesigns the report against a released material-document CDS view. In the same conversion, another FI report reads BSEG. The team does not rewrite it merely because someone assumes BSEG was replaced by ACDOCA: SAP still persists the entry view in BSEG, while ACDOCA supplies the Universal Journal/ledger view. The two cases require different remediation decisions even though both are 'classic table' code.
How to choose
- Verify the exact object in SAP's target-release simplification documentation; do not classify every ECC-era table as a compatibility view.
- Read-only compatibility can be acceptable temporarily for low-volume legacy code, but new development should target released CDS entities or APIs.
- For heavy reads, trace the real statement because a compatibility layer can have different performance characteristics from the original table.
- For write logic, use the owning application API; never infer write support from the fact that a legacy SELECT still works.
- Distinguish entry-view structures such as BSEG from Universal Journal structures such as ACDOCA rather than treating one as a simple replacement for the other.
Common pitfalls
- Calling BSEG a compatibility view over ACDOCA; SAP explicitly retains BSEG as a database table for the entry view.
- Assuming MKPF/MSEG are still ordinary physical S/4HANA persistence tables because legacy SELECT statements compile.
- Building new custom code on a compatibility name because it looks familiar from ECC.
- Treating field-shape compatibility as proof of identical performance, buffering, update behavior or semantic grain.
- Applying one conversion rule to every Finance/Logistics table instead of validating object-specific simplification notes.
ECC, S/4HANA and clean core
Compatibility mechanisms exist to reduce immediate custom-code breakage during S/4HANA conversion; they are not the strategic data-access model for new clean-core development. New code should consume released CDS views, business objects and APIs that represent the S/4HANA semantic model. Existing compatibility reads should be prioritized by business criticality, volume and target-release simplification guidance. Some classic tables remain genuine persistence—for example BSEG—so remediation must be evidence-based rather than a wholesale table-name replacement exercise.
Whose problem this is
This starts as a developer-level finding, surfaced through code scanning during a conversion or upgrade project, but the remediation decision belongs to the architect, since it involves prioritizing rewrite effort against business risk. Functional consultants confirm which reports and batch jobs are business-critical enough to fix before go-live. The handover should list every affected object, whether the usage is read or write, and the target CDS view entity to migrate to.
Related SAP objects
Reviewed pages this object connects to in the ERPClimb knowledge graph.
Source: ERPClimb — https://erpclimb.com/sap-technical-topics/cds-compatibility-views-in-s-4hanaERPClimb is an independent platform and is not affiliated with SAP SE. Reference pages are written and reviewed by SAP consultants for learning and troubleshooting.