ABAP


ABAP is a high-level programming language created by the German software company SAP SE. It is currently positioned, alongside Java, as the language for programming the SAP NetWeaver Application Server, which is part of the SAP NetWeaver platform for building business applications.

Introduction

ABAP is one of the many application-specific fourth-generation languages 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 B'erichts-Aufbereitungs-Prozessor, German for "generic report preparation processor", but was later renamed to the English Advanced B'usiness Application Programming. ABAP was one of the first languages to include the concept of Logical Databases, which provides a high level of abstraction from the basic database level, which supports every platform, language and units.
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 was geared towards more technical customers with programming experience.
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 has an 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 Netweaver currently runs on UNIX, Microsoft Windows, i5/OS on IBM System i, and z/OS on IBM System z. Supported databases are HANA, SAP ASE, IBM Db2, Informix, MaxDB, Oracle, and Microsoft SQL Server.

ABAP Runtime Environment

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 ; 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 into statements understood by the underlying DBMS. 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 Systems and Landscapes

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 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 typically consist of three systems: one for development; one for testing and quality assurance; and one for production. The landscape may contain more systems or it may contain fewer ; 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, which is responsible for concurrency control, 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.

Software Layers

ABAP software is deployed in software components.
Examples for these are:
  • SAP_BASIS is the technical base layer which is required in every ABAP system.
  • SAP_ABA contains functionalities which is required for all kinds of business applications, like business partner and address management.
  • SAP_UI provides the functionality to create SAP UI5 applications.
  • BBPCRM is an example for a business application, in this case the CRM application

    Transactions

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. The common transaction codes used by ABAP developer are SE38, SE09, SE10, SE24, SE11, SE16N, SE80, SE37, ST22 etc. 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 and LEAVE TO TRANSACTION.
The general notion of a transaction is called a Logical Unit of Work in SAP terminology.

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
  • Module pools
Reports follow a relatively simple programming model whereby a user optionally enters a set of parameters 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, which is divided into a "PBO" and "PAI" section. In SAP documentation the term “dynpro” refers to the combination of the screen and its flow logic.
The non-executable program types are:
  • INCLUDE modules – These get included at generation time into the calling unit; it is often used to subdivide large programs.
  • Subroutine pools – These contain ABAP subroutines.
  • Function groups – These are libraries of self-contained function modules.
  • Object classes – These 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.
  • Interfaces – Same as object classes
  • Type pools – These define collections of data types and constants.
ABAP programs are composed of individual sentences. 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. 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 comment.

Development environment

There are two possible ways to develop in ABAP. The availability depends on the release of the ABAP system.

ABAP Workbench

The ABAP Workbench is part of the ABAP system and is accessed via SAP GUI. It contains different tools for editing programs. The most important of these are :
  • ABAP Editor for writing and editing reports, module pools, includes and subroutine pools
  • ABAP Dictionary for processing database table definitions and retrieving global types
  • Menu Painter for designing the user interface
  • Screen Painter, a screen generator for designing screens and flow logic
  • Function Builder for function modules
  • Class Builder for ABAP Objects classes and interfaces
The Object Navigator provides a single integrated interface into these various tools.

ABAP Development Tools

The ABAP Development Tools, formally known as "ABAP in Eclipse", is a set of plugins for the Eclipse IDE to develop ABAP objects.
In this scenario, the ABAP developer installs the required tools on their computer and works locally, whereas a continuous synchronization with the backend is performed.