ABAP ist die proprietäre Programmiersprache der Softwarefirma SAP, die für die Programmierung von kommerziellen Anwendungen im SAP-Umfeld entwickelt wurde. Ursprünglich stand die Abkürzung für "Allgemeiner Berichts-Aufbereitungs-Prozessor" da mit dieser Sprache nur kundenspezifische Auswertungen programmiert werden konnten, aber keine Datenbankveränderungen vorgenommen werden konnten. Im Zuge der Weiterentwicklungen der Sprache steht die Abkürzung nun für "Advanced Business Application Programming". Der Sprachumfang ist nicht fest definiert und wurde in der Vergangenheit immer wieder erweitert, z.B. um die objektorientierten Sprachbefehle von ABAP Objects.
Seit 1990 basiert das gesamte SAP-System auf ABAP. Seit der Einführung von SAP NetWeaver bietet die SAP neben ABAP auch eine Programmierumgebung für Java und dementsprechend einen ABAP-basierten und einen Java-basierten Applikationsserver an.
ABAP ist eine 4GL-Sprache, die speziell für die Massendatenverarbeitung in kommerziellen Anwendungen entwickelt wurde und bietet u.a. folgende Vorteile gegenüber elementareren Sprachen, in denen solche Funktionen in Bibliotheken liegen:
- Als Open SQL in die Sprache integrierter Datenbankzugriff.
- In die ABAP-Laufzeitumgebung integrierte Performance-Optimierung von Datenbankzugriffen über die SAP-Pufferung.
- Interne Tabellen für die dynamische Speicherung und Bearbeitung von tabellarischen Massendaten im Arbeitsspeicher.
- In die ABAP-Laufzeitumgebung integriertes Konzept des Online Transaction Processing (OLTP), bei dem viele Benutzer gleichzeitig auf die zentrale Datenbank zugreifen.
- In die Sprache integrierte Schnittstelle zu anderen Programmierumgebungen über Remote Function Call.
- In die Sprache integrierte Schnittstelle zu XML.
Die Integration solcher Funktionen in die Sprache ist im Wesentlichen vorteilhaft für die statische Überprüfbarkeit und die Performance von Programmen. Im Gegenzug enthält ABAP dadurch auch wesentlich mehr Sprachelemente als eine elementare Programmiersprache.
ABAP unterstützt ein auf Unterprogrammen und Funktionsbausteinen basierendes prozedurales und ab Release 6.10 ein auf Klassen und Interfaces basierendes objektorientiertes Programmiermodell. Beide Modelle sind interoperabel. |