You are on page 1of 5

ABAP (Advanced Business Application Programming, originallyAllgemeiner Berichts-Aufbereitungs-Prozessor,

German for "general report creation processor"

) is a high-level programming language created by the
German software company SAP. It is currently positioned, alongside the more recently introduced Java, as the
language for programming the SAP Application Server, part of its NetWeaver platform for building business
applications. The syntax of ABAP is somewhat similar to COBOL.

ABAP is one of the many application-specific fourth-generation languages (4GLs) first developed in the 1980s.
It was originally the report language for SAP R/2, a platform that enabled large corporations to build mainframe
business applications for materials management and financial and management accounting.
ABAP used to be an abbreviation of Allgemeiner BerichtsAufbereitungsProzessor, German for "generic report
preparation processor", but was later renamed to the English Advanced Business Application Programming.
ABAP was one of the first languages to include the concept of Logical Databases (LDBs), which provides a
high level of abstraction from the basic database level(s).
The ABAP language was originally used by developers to develop the SAP R/3 platform. It was also intended
to be used by SAP customers to enhance SAP applications customers can develop custom reports and
interfaces with ABAP programming. The language is fairly easy to learn
for programmers but it is not a
tool for direct use by non-programmers. Knowledge of relational database design and preferably also of object-
oriented concepts is necessary to create ABAP programs.
ABAP remains as the language for creating programs for the client-server R/3 system, which SAP first released
in 1992. As computer hardware evolved through the 1990s, more and more of SAP's applications and systems
were written in ABAP. By 2001, all but the most basic functions were written in ABAP. In 1999, SAP released
an object-oriented extension to ABAP called ABAP Objects, along with R/3 release 4.6.
SAP's current development platform NetWeaver supports both ABAP and Java.

ABAP runtime environment[edit]
All ABAP programs reside inside the SAP database. They are not stored in separate external files like
Java or C++ programs. In the database all ABAP code exists in two forms: source code, which can be viewed
and edited with the ABAP Workbench tools; and generated code, a binary representation somewhat
comparable with Java bytecode. 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. A key component of the ABAP runtime system is the
Database Interface, which turns database-independent ABAP statements ("Open SQL") into statements
understood by the underlying DBMS ("Native SQL"). The database interface handles all the communication
with the relational database on behalf of ABAP programs; it also contains extra features such as buffering of
tables and frequently accessed data in the local memory of the application server.
SAP Basis[edit]
The ABAP language environment, including the syntax checking, code generation, and runtime system, is part
of the SAP Basis component/layer. SAP Basis is the technological platform that supports the entire range of
SAP applications, now typically implemented in the framework of the SAP Web Application Server. In that
sense SAP Basis can be seen as thevirtual machine on which SAP applications run. Like any operating
system, SAP Basis contains both low-level services (for example memory management, database
communication, or servicing Web requests) and high-level tools for end users and administrators. These tools
can be executables ("SAP kernel") running directly on the underlying operating system, transactions developed
in ABAP, or Web-based programs.
SAP Basis also provides a layer of abstraction between the business applications, the operating system and
database. This ensures that applications do not depend directly upon a specific server or database platform
and can easily be ported from one platform to another.
SAP Basis currently runs on UNIX (AIX, HP-UX, Solaris, Linux), Microsoft Windows, i5/OS on IBM System
i (formerly iSeries, AS/400), and z/OS on IBM System z (formerly zSeries, S/390). Supported databases
are IBM DB2, Informix,MaxDB, Oracle, and Microsoft SQL Server (support for Informix was discontinued in
SAP Basis release 7.00).
SAP systems and landscapes[edit]
All SAP data exists and all SAP software runs in the context of a SAP system. A system consists of a central
relational database and one or more application servers ("instances") accessing the data and programs in this
database. A SAP system contains at least one instance but may contain more, mostly for reasons of sizing and
performance. In a system with multiple instances, load balancing mechanisms ensure that the load is spread
evenly over the available application servers.
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. The landscape may contain more
systems (e.g., separate systems for unit testing and pre-production testing) or it may contain fewer (e.g., only
development and production, without separate QA); nevertheless three is the most common configuration.
ABAP programs are created and undergo first testing in the development system. Afterwards they are
distributed to the other systems in the landscape. 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.
The Web Application Server consists of three layers: the database layer; the application layer; and the
presentation layer. These layers may run on the same or on different physical machines. The database
layer contains the relational database and the database software. The application layer knowledge contains the
instance or instances of the system. All application processes, including the business transactions and the
ABAP development, run on the application layer. The presentation layer handles the interaction with users of
the system. Online access to ABAP application servers can go via a proprietary graphical interface, which is
called "SAP GUI", or via a Web browser.
A transaction in SAP terminology is the execution of a program. The normal way of executing ABAP code in the
SAP system is by entering A transaction code (for instance, VA01 is the transaction code for "Create Sales
Order"). Transactions can be called via system-defined or user-specific, role-based menus. They can also be
started by entering the transaction code directly into a command field, which is present in every SAP screen.
Transactions can also be invoked programmatically by means of the ABAP statements CALL TRANSACTION
The term "transaction" must not be misunderstood here; in the context just described, a transaction simply
means calling and executing an ABAP program. In application programming, "transaction" often refers to an
indivisible operation on data, which is either committed as a whole or undone (rolled back) as a whole. This
concept exists in SAP and is called a LUW (Logical Unit of Work). In the course of one transaction (program
execution), there can be different LUWs. Transaction for ABAP Workbench could be invoked using transaction
code SE80 to work on all ABAP development related activities.
[citation needed]

Types of ABAP programs[edit]
As in other programming languages, an ABAP program is either an executable unit or a library, which provides
reusable code to other programs and is not independently executable.
ABAP distinguishes two types of executable programs:
Module pools
Reports follow a relatively simple programming model whereby a user optionally enters a set of parameters
(e.g., a selection over a subSET of data) and the program then uses the input parameters to produce a report
in the form of an interactive list. The term "report" can be somewhat misleading in that reports can also be
designed to modify data; the reason why these programs are called reports is the "list-oriented" nature of the
output they produce.
Module pools define more complex patterns of user interaction using a collection of screens. The term screen
refers to the actual, physical image that the user sees. Each screen also has a "flow logic", which refers to the
ABAP code implicitly invoked by the screens. Each screen has its own flow logic, which is divided into a "PBO"
(Process Before Output) and "PAI" (Process After Input) section. In SAP documentation the term dynpro
(dynamic program) refers to the combination of the screen and its flow logic.
The non-executable program types are:
INCLUDE modules
Subroutine pools
Function groups
Object classes
Type pools
An INCLUDE module gets included at generation time into the calling unit; it is often used to subdivide very
large programs. Subroutine pools contain ABAP subroutines (blocks of code enclosed by FORM/ENDFORM
statements and invoked with PERFORM). Function groups are libraries of self-contained function modules
(enclosed by FUNCTION/ENDFUNCTION and invoked with CALL FUNCTION). Object classes and interfaces
are similar to Java classes and interfaces; the first define a set of methods and attributes, the second contain
"empty" method definitions, for which any class implementing the interface must provide explicit code. Type
pools define collections of data types and constants........
ABAP programs are composed of individual sentences (statements). The first word in a statement is called an
ABAP keyword. Each statement ends with a period. Words must always be separated by at least one space.
Statements can be indented as you wish. With keywords, additions and operands, the ABAP runtime system
does not differentiate between upper and lowercase.
Statements can extend beyond one line. You can have several statements in a single line (though this is not
recommended). Lines that begin with asterisk * in the first column are recognized as comment lines by the
ABAP runtime system and are ignored. Double quotations marks " indicate that the remainder of a line is a
ABAP Workbench[edit]
The ABAP Workbench contains different tools for editing programs. The most important of these are
(transaction codes are shown in parentheses):
ABAP Editor for writing and editing reports, module pools, includes and subroutine pools (SE38)
ABAP Dictionary for processing database table definitions and retrieving global types (SE11)
Menu Painter for designing the user interface (menu bar, standard toolbar, application toolbar, function key
assignment) (SE41)
Screen Painter for designing screens and flow logic (SE51)
Function Builder for function modules (SE37)
Class Builder for ABAP Objects classes and interfaces (SE24)
The Object Navigator (transaction SE80) provides a single integrated interface into these various tools.
ABAP Coding Dictionary[edit]
The ABAP Dictionary contains all metadata about the data in the SAP system. It is closely linked with the ABAP
Workbench in that any reference to data (e.g., a table, a view, or a data type) will be obtained from the
dictionary. Developers use the ABAP Dictionary transactions (directly or through the SE80 Object Navigator
inside the ABAP Workbench) to display and maintain this metadata.
When a dictionary object is changed, a program that references the changed object will automatically reference
the new version the next time the program runs. Because ABAP is interpreted, it is not necessary to recompile
programs that reference changed dictionary objects.
A brief description of the most important types of dictionary objects follows:
Tables are data containers that exist in the underlying relational database. In the majority of cases there is
a 1-to-1 relationship between the definition of a table in the ABAP Dictionary and the definition of that
same table in the database (same name, same columns). These tables are known as "transparent". There
are two types of non-transparent tables: "pooled" tables exist as independent entities in the ABAP
Dictionary but they are grouped together in large physical tables ("pools") at the database level. Pooled
tables are often small tables holding for example configuration data. "Clustered" tables are physically
grouped in "clusters" based on their primary keys; for instance, assume that a clustered table H contains
"header" data about sales invoices, whereas another clustered table D holds the invoice line items. Each
row of H would then be physically grouped with the related rows from D inside a "cluster table" in the
database. This type of clustering, which is designed to improve performance, also exists as native
functionality in some, though not all, relational database systems.
Indexes provide accelerated access to table data for often used selection conditions. Every SAP table has
a "primary index", which is created implicitly along with the table and is used to enforce primary key
uniqueness. Additional indexes (unique or non-unique) may be defined; these are called "secondary
Views have the same purpose as in the underlying database: they define subsets of columns (and/or rows)
from one or - using a join condition - several tables. View is actually a virtual table which does not contain
data physically. Views take very short memory space in database because the views contain only the
definition of data.
Structures are complex data types consisting of multiple fields (comparable to struct in C/C++).
Data elements provide the semantic content for a table or structure field. For example, dozens of tables
and structures might contain a field giving the price (of a finished product, raw material, resource, ...). All
these fields could have the same data element "PRICE".
Domains define the structural characteristics of a data element. For example, the data element PRICE
could have an assigned domain that defines the price as a numeric field with two decimals. Domains can
also carry semantic content in providing a list of possible values. For example, a domain "BOOLEAN"
could define a field of type "character" with length 1 and case-insensitive, but would also restrict the
possible values to "T" (true) or "F" (false).
Search helps (successors to the now obsolete "matchcodes") provide advanced search strategies when a
user wants to see the possible values for a data field. The ABAP runtime provides implicit assistance (by
listing all values for the field, e.g. all existing customer numbers) but search helps can be used to refine
this functionality, e.g. by providing customer searches by geographical location, credit rating, etc.
Lock objects implement application-level locking when changing data.