Advanced Business Application Programming (ABAP)
Advanced business application programming (ABAP) is a 4GL application-specific programming language developed in the 1980s by the German software company SAP. The syntax of ABAP is somewhat similar to COBOL. ABAP was and remains the programming language for the development and modification of SAP applications.
ABAP Development Tools
By far the largest developer of ABAP code is SAP itself. However, many thousands of ABAP developers work with SAP customers and consulting companies to maintain and modify SAP systems. ABAP is regularly in the top 30 of the Tiobe Index, which roughly tracks the popularity of programming languages.
Developers who work in ABAP usually do so either in the ABAP Development Tools (a set of plug-ins for the Eclipse open-source Java development platform) or in the ABAP Workbench transaction in the SAP graphical user interface (GUI). Both environments offer a set of tools to assist development, from code completion to automated testing tools.
Types of ABAP Programs
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:
- Reports: 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: 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, 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: An INCLUDE module gets included at generation time into the calling unit; it is often used to subdivide large programs.
- Subroutine pools: Subroutine pools contain ABAP subroutines (blocks of code enclosed by FORM/ENDFORM statements and invoked with PERFORM).
- Function groups: Function groups are libraries of self-contained function modules (enclosed by FUNCTION/END FUNCTION and invoked with CALL FUNCTION).
- Object classes: Object classes and interfaces are similar to Java classes and interfaces; the first defines a set of methods and attributes, and the second contains "empty" method definitions, for which any class implementing the interface must provide explicit code.
- Interfaces: interface must provide explicit code.
- Type pools: 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 an 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 comment.
ABAP Objects is a new concept in R/3 Release 4.0. The term has two meanings. On the one hand, it stands for the entire ABAP runtime environment. On the other hand, it represents the object-oriented extension of the ABAP language.
- The Runtime Environment: The new name ABAP Objects for the entire ABAP runtime environment is an indication of the way in which SAP has, for some time, been moving towards object orientation, and of its commitment to pursuing this line further. The ABAP Workbench allows you to create R/3 Repository objects such as programs, authorization objects, lock objects, Customizing objects, and so on. Using function modules, you can encapsulate functions in separate programs with a defined interface. The Business Object Repository (BOR) allows you to create SAP Business Objects for internal and external use (DCOM/CORBA). Until now, object-oriented techniques have been used exclusively in system design, and have not been supported by the ABAP language.
- The Object-Oriented Language Extension: ABAP Objects is a complete set of object-oriented statements that has been introduced into the ABAP language. This object-oriented extension of ABAP builds on the existing language and is fully compatible with it. You can use ABAP Objects in existing programs, and can also use "conventional" ABAP in new ABAP Objects programs. ABAP Objects supports object-oriented programming. Object orientation (OO), also known as the object-oriented paradigm, is a programming model that unites data and functions in objects. The rest of the ABAP language is primarily intended for structured programming, where data is stored in a structured form in database tables and function-oriented programs access and work with it. The object-oriented enhancement of ABAP is based on the models of Java and C++. It is compatible with external object interfaces such as DCOM and CORBA. The implementation of object-oriented elements in the kernel of the ABAP language has considerably increased response times when you work with ABAP Objects. SAP Business Objects and GUI objects - already object-oriented themselves - will also profit from being incorporated in ABAP Objects.
The ABAP Workbench is used by SAP for the development of standard and custom application software. The ABAP Workbench is also used to create dictionary objects. It consists of the following components −
- ABAP Editor is used to maintain programs.
- ABAP Dictionary is used to maintain Dictionary objects.
- Repository Browser is used to display a hierarchical structure of the components in a package.
- Menu Painter is used to develop graphical user interfaces including menu bars and toolbars.
- Screen Painter is used to maintain screen components for online programs.
- Repository Information System contains information about development and runtime objects, such as data models, dictionary types and table structures, programs, and functions.
- Test and Analysis Tools, such as the Syntax Check and the Debugger.
- Function Builder, which allows to create and maintain function groups and function modules.
- Data Modeler, a tool that supports graphical modeling.
- Workbench Organizer, which maintains multiple development projects and manages their distribution.