ABAP is the language SAP created to build its own business applications. It appeared in the 1980s and has been the implementation language of SAP systems ever since.
Notably, SAP standard functionality is written in it too, and the source is readable from SE38 or SE80. Being able to see what a transaction actually does internally is a considerable advantage when troubleshooting.
What being a business language means
| Feature | What it provides |
|---|---|
| Open SQL | Database access without regard to the database product |
| Internal tables | In-memory tabular data as a basic language type |
| Screens (Dynpro) | Screen definition and control as standard |
| Authorisation checks | AUTHORITY-CHECK as a language statement |
| Translation | Text elements managed per language |
| Transport | Development objects recorded automatically for transport |
| Locking | Lock objects for concurrency control |
Where custom development fits
| Letter | Meaning | Example |
|---|---|---|
| R (Report) | Reports and lists | Custom analyses, statutory reports |
| I (Interface) | Integration with other systems | Bank file import, EDI |
| C (Conversion) | Data migration | Loading master data from a legacy system |
| E (Enhancement) | Extending standard behaviour | Additional validation |
| F (Form) | Printed forms | Invoice and purchase order layouts |
| W (Workflow) | Approval flows | Purchase approval, expense claims |
Extending without modifying
Modifying standard programs directly should be avoided: every patch and release risks overwriting or conflicting with the change. SAP therefore provides mechanisms for adding behaviour without touching the standard.
| Technique | Generation | Characteristic |
|---|---|---|
| User exits | Old | Implement inside empty subroutines SAP provides |
| Customer exits | Old | Activated in CMOD, per function group |
| Classic BAdIs | Middle | Object oriented; multiple implementations possible |
| Enhancement framework | Current | Hooks inserted at arbitrary points in source |
| New BAdIs | Current | Integrated into enhancement spots |
How the language has changed
- Procedural ABAP: the classic style of reports and subroutines
- ABAP Objects (from 1999): classes and interfaces
- ABAP 7.4 onwards: inline declarations, constructor expressions, table expressions
- ABAP Cloud: a restricted model using only released public APIs