ABAP (Advanced Business Application Programming, originally Allgemeiner Berichts-Aufbereitungs-Prozessor, German for "general report preparation processor"[2]) is a high-level programming language created by the German software company SAP SE.
ABAP used to be an abbreviation of Allgemeiner Berichts-Aufbereitungs-Prozessor, German for "generic report preparation processor", but was later[when?]
ABAP programs execute under the control of the runtime system, which is part of the SAP kernel.
The runtime system is responsible for processing ABAP statements, controlling the flow logic of screens and responding to events (such as a user clicking on a screen button); in this respect it can be seen as a Virtual Machine comparable with the Java VM.
Installations of the Web Application Server (landscapes) typically consist of three systems: one for development; one for testing and quality assurance; and one for production.
These actions take place under control of the Change and Transport System (CTS), which is responsible for concurrency control (e.g., preventing two developers from changing the same code at the same time), version management, and deployment of programs on the QA and production systems.
Online access to ABAP application servers can go via a proprietary graphical interface, which is called "SAP GUI", or via a Web browser.
They can also be started by entering the transaction code directly into a command field, which is present in every SAP screen.
The general notion of a transaction is called a Logical Unit of Work (LUW) in SAP terminology.
Module pools define more complex patterns of user interaction using a collection of screens.
In SAP documentation the term “dynpro” (dynamic program) refers to the combination of the screen and its flow logic.
With keywords, additions and operands, the ABAP runtime system does not differentiate between upper and lowercase.
[6] In this scenario, the ABAP developer installs the required tools on his computer and works locally, whereas a continuous synchronization with the backend is performed.
These statements traditionally used sentence-like structures and avoided symbols, making ABAP programs relatively verbose.
In addition, every structure, table, view or data element defined in the ABAP Dictionary can be used to type a variable.
Normally all declarations are placed at the top of the code module (program, subroutine, function) before the first executable statement; this placement is a convention and not an enforced syntax rule.
Syntax checking is stronger in ABAP Objects programs, and some syntactical forms (usually older ones) of certain statements are not permitted.
Objects should enable programmers to map a real problem and its proposed software solution on a one-to-one basis.
The end of this section contains a list of further reading, with a selection of titles about object orientation.
ABAP CDS makes it possible to define semantic data models on the central database of the application server.
The entities of these models provide enhanced access functions when compared with existing database tables and views defined in ABAP Dictionary, making it possible to optimize Open SQL-based applications.
This is particularly clear when an AS ABAP uses a SAP HANA database, since its in-memory characteristics can be implemented in an optimum manner.
CDS source code can only be programmed in the Eclipse-based ABAP Development Tools (ADT).
The main difference with these languages is that ABAP provides a collection of statements to easily access and manipulate the contents of internal tables.
Note that ABAP does not support arrays; the only way to define a multi-element data object is to use an internal table.
[citation needed] Internal tables are a way to store variable data sets of a fixed structure in the working memory of ABAP, and provides the functionality of dynamic arrays.
The following list only gives a rough overview about some important milestones in the history of the language ABAP.