ABAP & SAP
Alles om ABAP-code te lezen, begrijpen en schrijven: van datatypes en interne tabellen tot BAPI's, objectoriëntatie, ALV, enhancements en S/4HANA. Kies hieronder een onderwerp of gebruik de zoekbalk in het menu.
01Wat is wat: SAP, ABAP & S/4HANA
De drie termen die overal terugkomen, en hoe ze zich tot elkaar verhouden.
SAP is een ERP-systeem (Enterprise Resource Planning): één softwarepakket waarin bedrijfsprocessen samenkomen — inkoop, verkoop, voorraad, financiën, productie, onderhoud, HR. Alles hangt samen in één centrale database, zodat een wijziging op de ene plek direct consequenties heeft op andere plekken: een goederenontvangst in het magazijn verhoogt de voorraad (logistiek) én boekt een bedrag op een grootboekrekening (financieel), in dezelfde transactie.
ABAP (Advanced Business Application Programming) is de programmeertaal waarin SAP zelf grotendeels is gebouwd, en waarin klanten hun eigen aanpassingen ("custom code") schrijven. De taal is sterk getypeerd, draait uitsluitend binnen de SAP-applicatieserver, en heeft een eigen syntaxis die op ouder Engels-achtig COBOL lijkt maar sinds versie 7.40 ook veel moderne, expressie-gebaseerde constructies kent — zie moderne syntax.
S/4HANA is de nieuwste generatie van SAP's ERP, de opvolger van het oudere ECC (ERP Central Component, ook wel R/3-lijn genoemd). Het draait verplicht op SAP's eigen in-memory database HANA, wat grote gevolgen heeft voor hoe je performante code schrijft — zie code pushdown.
ECC (klassiek)
- Database-onafhankelijk (Oracle, DB2, MS SQL…), veelal schijf-gebaseerd
- BAPI's/RFC's als integratiestandaard
- SAP GUI (dynpro-schermen) als interface
- Aparte totalen- en indextabellen (BSIS, BSAS, GLT0…)
- Materiaalnummer max. 18 tekens
S/4HANA (nieuw)
- Verplicht op HANA (in-memory, kolomgeoriënteerd)
- OData-services & CDS-views als integratie- en modelleerstandaard
- SAP Fiori (webgebaseerd, tegels) als interface — SAP GUI blijft bestaan
- Universele journaaltabel
ACDOCAvervangt vele FI/CO-tabellen - Materiaalnummer tot 40 tekens
Deployment-varianten
| Variant | Wat het is |
|---|---|
| S/4HANA on-premise | Klassiek: het systeem draait in het eigen datacenter (of eigen cloud-tenant). Volledige vrijheid voor custom code en modificaties. |
| S/4HANA Private Cloud (RISE) | Functioneel gelijk aan on-premise, maar gehost en beheerd door SAP. Custom code grotendeels zoals vanouds. |
| S/4HANA Public Cloud | SaaS-model met vaste release-cadans. Uitbreiden mag alleen via vrijgegeven API's en ABAP Cloud-regels ("clean core"). |
| BTP / ABAP Environment | "Steampunk": een losstaande ABAP-omgeving op het SAP Business Technology Platform, alleen voor ABAP-Cloud-ontwikkeling, losgekoppeld van het ERP. |
Waar draait ABAP eigenlijk?
ABAP-code draait op de applicatieserver (de "AS ABAP"), tussen de gebruiker en de database in. Broncode wordt bij activering gecompileerd tot een tussenvorm ("load") die de ABAP-runtime uitvoert. Elke gebruikersessie krijgt een werkproces toegewezen; het systeem verdeelt werk over dialoog-, achtergrond- (batchjobs), update- en enqueue-werkprocessen. Dit verklaart een aantal typische ABAP-eigenaardigheden, zoals de SAP LUW en het aparte lock-mechanisme.
02Hoe je dit naslagwerk gebruikt
De site is opgedeeld in thematische pagina's, van fundament naar verdieping.
- Menu links (op mobiel via de ☰-knop) — alle pagina's, gegroepeerd per thema. De zoekbalk filtert op paginatitels én op de hoofdstuktitels binnen elke pagina.
- "Op deze pagina" — elke pagina begint met een inhoudsopgave van de eigen hoofdstukken.
- Kruisverwijzingen — onderstreepte termen linken naar de plek waar dat begrip volledig wordt uitgelegd, ook over pagina's heen.
- Vorige/volgende — onderaan elke pagina kun je in leesvolgorde verder.
- Glossarium — kom je een term tegen zonder context, begin dan bij het A–Z-glossarium.
lv_, ls_, lt_…) zodat je went aan hoe echte code eruitziet. Grijze tekst achter een " is commentaar.03Alle onderwerpen
De volledige site in één oogopslag.
Fundament
Programma-opbouw & selectieschermen
Reports, includes, function groups, module pools, report-events, PARAMETERS en SELECT-OPTIONS.
03Variabelen, datatypes & naamgeving
Ingebouwde types, het Data Dictionary, domeinen en data-elementen, TYPES, en de prefixconventies.
04Structuren, interne tabellen & field-symbols
De drie tabelsoorten, alle bewerkingsstatements, en dynamische toegang met field-symbols.
05Operatoren, control flow & moderne syntax
IF/CASE/lussen, logische expressies, en VALUE, COND, REDUCE & co uit ABAP 7.40+.
Data & tekst
Strings, conversies, datums & tijd
String templates, stringfuncties, regex, conversie-exits, en rekenen met datums en timestamps.
07ABAP SQL & CDS-views
SELECT in alle vormen, joins, aggregaties, FOR ALL ENTRIES, performance en CDS-views.
Modularisatie & OO
Functiemodules, BAPI's & RFC
FORM-routines, functiemodules, BAPI-conventies, RFC-varianten en BAPIRET2-afhandeling.
09OO-ABAP: classes, interfaces & exceptions
Classes, visibility, interfaces, overerving, casting, events en TRY/CATCH-exceptionhandling.
SAP-platform
Transacties, locks, berichten & autorisaties
SAP LUW, COMMIT WORK, enqueue-locks, nummerreeksen, sy-velden, MESSAGE en AUTHORITY-CHECK.
11Lijsten, ALV & gebruikersinterfaces
WRITE-lijsten, de drie ALV-generaties, field catalogs, dynpro-basics en Fiori in vogelvlucht.
12Enhancements, user exits & BAdI's
Standaardgedrag uitbreiden: exits, BAdI's, enhancement points — en hoe je ze terugvindt.
13Transport, debugger & analysetools
Het systeemlandschap, transportrequests, de debugger, ST22, SQL-trace en ATC.
Modules & naslag
Standaardtabellen & BAPI's per module
MM, SD, FI/CO, PP, PM en HR: de kerntabellen en veelgebruikte BAPI's per functioneel gebied.
15S/4HANA, CDS, RAP & Clean ABAP
Code pushdown, geavanceerde CDS, AMDP, OData, het RAP-model, ABAP Cloud en Clean ABAP.
16Glossarium, transactiecodes & bronnen
A–Z-begrippenlijst, index van transactiecodes en externe documentatie.
04Een beetje historie & versies
Handig om oude code en documentatie te kunnen plaatsen.
| Mijlpaal | Betekenis voor de taal |
|---|---|
| R/2 (jaren '80) | Mainframe-tijdperk; ABAP ontstaat als rapportagetaal ("Allgemeiner Berichtsaufbereitungsprozessor"). |
| R/3 (1992) | Client-server; ABAP/4 wordt de volwaardige applicatietaal; dynpro's, reports en functiemodules zoals we ze kennen. |
| ABAP Objects (~4.6/6.10) | Objectoriëntatie: classes, interfaces, en later class-based exceptions. |
| NetWeaver 7.0x | ECC 6.0-tijdperk; Web Dynpro; brede adoptie van OO in nieuwe code. |
| 7.40 / 7.50 (2013+) | Grote taalvernieuwing: inline-declaraties en constructor expressions, moderne SQL-syntax, CDS, AMDP. |
| S/4HANA / ≥7.5x, 2020+ | RAP, ABAP Cloud, jaarlijkse taalreleases in de cloud. |
In vacatures en documentatie kom je daarom drie "dialecten" tegen: klassiek procedureel ABAP (reports, FORM's, functiemodules), OO-ABAP en modern/cloud-ABAP (CDS, RAP). In de praktijk leef je in alle drie tegelijk: bestaande systemen bevatten decennia aan code.