Topics
One line: One page per idea — the things you have to understand rather than look up, each pulling together the keywords that serve it.
Keywords cuts the language by vocabulary. This shelf cuts it by problem: what an internal table costs, what a LUW is, why a date arrives empty, what to write in 2026 and what to only be able to read. Where a keyword page answers "what does LOOP AT do", a topic page answers "how do I hold a few thousand rows without the program falling over".
Pages here follow the same rule as everywhere else in this library: a program in snippets/ is syntax-checked and never run, so no page shows output it has not earned. See Keywords for exactly where that gate stops.
The core
| Topic |
Level |
In one line |
| Types at a glance |
101 |
Every elementary type, its initial value, and the three pairs that get confused |
| Initial values and null |
101 |
ABAP has no null — every variable has a value from birth, and SQL NULL stops at the boundary |
| Conversion and comparison rules |
201 |
What happens between two types, silently, on assignment and on comparison |
| Internal tables |
201 |
Three table kinds, three promises about lookup cost — pick the one your access pattern needs |
| Sets in ABAP |
201 |
No set type: a table with a unique key, and one idiom each for union, intersection and difference |
| Open SQL |
201 |
The database is not a file: what to push down, and the two silent traps in FOR ALL ENTRIES |
| Strings and text |
201 |
string grows, c is padded forever, and the functions that work on both |
| Dates and times |
201 |
d is eight characters you can do arithmetic on — and a time zone you have to name |
| Numbers and currency |
201 |
i rounds, p is exact, f lies, and SAP stores amounts with a decimal shift |
| Constructor expressions |
201 |
The VALUE/NEW/CONV/COND family: one grammar, one #, one readability limit |
| Modern versus classic |
201 |
What to write instead — every old construct beside its replacement and the release it needs |
| Object-oriented ABAP |
201 |
Classes, interfaces, and why a new program starts with one even when it is a report |
| Exceptions |
201 |
Three exception flavours, and what each one asks of the caller |
| ABAP Unit |
201 |
Tests that ship with the program, and the design pressure that makes them possible |
| Test doubles |
301 |
Replacing the class, the database, the function module — and the seam each one needs |
| Which release am I writing for? |
101 |
The question behind half the confusing answers online |
The Dictionary and the data model
| Topic |
Level |
In one line |
| DDIC, domains and data elements |
201 |
A type that carries its own label, help and check table |
| Conversion routines |
201 |
ALPHA, and why a SELECT with the display form finds nothing |
| Table types and buffering |
201 |
Transparent, pooled, cluster — and the per-server buffer that goes stale |
| Table maintenance |
201 |
SM30, the generator, and its events |
| Number ranges |
201 |
The next document number, the buffer that leaves gaps, and the rollback that does not give one back |
| Change documents |
201 |
Who changed what — written by transactions and BAPIs, never by a direct UPDATE |
| CDS views |
201 |
The data model as source code, versioned and transported like everything else |
| AMDP and code pushdown |
301 |
Writing SQLScript in an ABAP class, and when that is the wrong idea |
| Native SQL |
301 |
When Open SQL is not enough, and the six things you give up |
| HANA specifics |
301 |
What changes on a column store — including the ORDER BY that was never written |
| RAP — the RESTful Application Programming model |
301 |
Behaviour definitions, drafts, and what replaced BOPF |
| BOPF |
301 |
The framework before RAP, for the maintainers of what was built on it |
Building applications
| Topic |
Level |
In one line |
| Program types |
101 |
Executable, module pool, function group, class pool — what each may hold and how it starts |
| Selection screens |
101 |
The free UI every report gets, and its events |
| Classic reports |
201 |
Lists, pages, HIDE and AT LINE-SELECTION — the model under thousands of shipped reports |
| ALV |
201 |
The grid that gives sorting, filtering and Excel export for nothing |
| Dynpro screens |
301 |
Flow logic, field transport by name, and why every classic transaction still runs on it |
| Web Dynpro and legacy UI |
201 |
BSP, Web Dynpro ABAP and FPM — what came between dynpros and Fiori |
| OData, Gateway and Fiori |
201 |
How ABAP reaches a browser: SEGW and RAP, and the annotations that draw the app |
| Forms and printing |
201 |
SAPscript, Smart Forms, Adobe Forms, and the spool they all end in |
| Text elements and translation |
101 |
Nothing a user reads belongs in a literal |
| Modularization |
201 |
Function modules, includes, classes — what to reach for now |
| Enhancements and BAdIs |
301 |
Changing SAP's behaviour without modifying SAP's code |
| BAPIs and RFC |
201 |
Calling into SAP, and the BAPI_TRANSACTION_COMMIT everyone forgets |
| IDocs |
201 |
Asynchronous documents, their status codes, and where they queue up |
| Batch input and BDC |
201 |
Driving a transaction as if you were typing — fragile, and sometimes the only way |
| Logical databases |
201 |
GET events, and why old HR and FI reports look strange |
| Workflow |
301 |
Tasks, agents and events — and which part of it is the developer's |
| Application log |
201 |
Messages that outlive the run, readable in SLG1 |
| JSON and XML |
201 |
Serialising ABAP data, and the name-casing surprise |
| HTTP client |
201 |
Calling a REST API: the destination, the certificate, and the status you must read |
| Email from ABAP |
201 |
cl_bcs, the commit that sends it, and SOST when nothing arrives |
| File handling |
201 |
Application server versus presentation server, and the encoding question |
Correctness, safety and speed
| Topic |
Level |
In one line |
| LUW and locking |
301 |
Where a transaction really ends, and the enqueue that is only advisory |
| ABAP memory and SAP memory |
201 |
Four memories between programs, each with its own lifetime and its own way to go stale |
| Authorizations |
201 |
The check nobody does for you, and where it belongs |
| Security |
301 |
Injection in dynamic SQL, code and file paths — the ABAP-specific holes, and the fix for each |
| Performance |
201 |
The nested loop, the SELECT in a loop, and how to measure instead of guess |
| Parallel processing |
301 |
No threads: STARTING NEW TASK, bgRFC, server groups, and every question they raise |
| Unicode and code pages |
201 |
Characters, bytes, and which code page you meant |
| Debugging |
201 |
Breakpoints that survive, watchpoints, and debugging something you cannot start |
| Short dumps |
201 |
Reading ST22 in the right order |
| ATC and Code Inspector |
201 |
The checks your transport will be judged by anyway |
| Clean ABAP |
201 |
SAP's own style guide, and the handful of rules that pay immediately |
| Dynamic programming |
301 |
Names decided at runtime — and every check that moves there with them |
| Regular expressions |
201 |
PCRE since 7.55, and what changed from the POSIX engine before it |
Around the code
| Topic |
Level |
In one line |
| How ABAP runs |
201 |
Work processes, dialog steps, and why "per application server" explains so much |
| Background jobs |
201 |
What changes when nobody is watching the screen |
| Transports |
201 |
How code moves between systems, and what a transport cannot carry |
| Packages and namespaces |
201 |
Where an object lives, and who may use it |
| Naming conventions |
101 |
Z, Y, /NAMESPACE/, and the prefixes inside the code |
| Documentation and pragmas |
201 |
"!, ##NO_TEXT, "#EC — and comments that say why |
| ADT and SE80 |
101 |
The two workbenches, and what exists only in one of them |
| abapGit |
201 |
Git for ABAP, and the file naming this library borrows |
| Standard classes worth knowing |
201 |
The CL_ABAP_* shelf, each with what it is for |
| S/4HANA custom code migration |
301 |
What breaks, and the ATC variant that finds it first |
| ABAP Cloud |
301 |
Released APIs only — the rules that decide what still compiles in 2026 |
| Resources |
reference |
Books, courses and references worth the time, with what each is actually good for |
See also
- Keywords — the same language, one page per keyword
- Foundations — pages with a recorded run behind them
- Glossary — short definitions that point at the page that earns them