The statement-by-statement translation from ABAP to X++ — Open SQL to the X++ select family, LOOP AT to while select, COMMIT WORK to ttsbegin/ttscommit, MANDT to DataAreaId, natural keys to RecId — and the set-based instincts that carry over unchanged.
What you will be able to do
Translate every Open SQL statement you write today into its X++ equivalent
Explain why row-by-row .update() is the same anti-pattern as MODIFY inside LOOP AT
Describe ttsbegin/ttscommit reference counting and why there is no partial rollback
Account for DataAreaId injection and RecId surrogate keys when porting a query
Choose between a table buffer, a temporary table and a .NET collection where you would have used an internal table
Introduction
The first chapter of this domain was about a rule — no overlayering — and about the architecture that rule produces. This chapter is about the day job: the statements you type.
The select family: your Open SQL knowledge, renamed
Three surface differences and nothing else. firstonly plays the role of SINGLE. Equality is ==, and conjunction is &&, because X++ borrows C-family operators. Fields are read through a table buffer — a variable declared with the table's type — using dot notation, rather than into a separate work area.
Transactions: ttsbegin, ttscommit, and no partial rollback
Read as a rename of COMMIT WORK, this looks harmless. It is not, and this is the most consequential semantic difference in the whole language.
DataAreaId and RecId: two keys that are not where you left them
Most transactional tables in D365 are company-scoped, and the AOS adds WHERE DataAreaId = <current company> to every query against them. Conceptually this is SAP's client concept.
Objects, collections and the missing internal table
If you write OO ABAP, X++'s object model needs an afternoon, not a course. Classes, interfaces, abstract classes, static methods, public/protected/private, extends and implements all behave as you expect.
Views, entities and the front end
ABAP CDS views are the modern read-modelling layer: annotations, associations, compositions, and simultaneously the basis of OData exposure in S/4HANA. In D365 that responsibility splits:
Worked translation: the same validation, twice
The clearest way to feel the shape of the change is to write the same requirement on both platforms. Requirement: a material's net weight must be positive before the record is saved.
Knowledge check
Summary
X++ is the language you already speak, in a different accent. The SQL-embedded paradigm, the type system, the table-centric mindset and — above all — the set-based instinct all carry over intact.