ABAP (Advanced Business Application Programming) is the name of SAP’s proprietary, fourth-generation programming language. It was specifically developed to allow the mass-processing of data in SAP business applications.
By working with ABAP in SAP NetWeaver, companies running the SAP ERP and SAP S/4HANA business solutions have the opportunity to customize those systems to better meet their needs.
ABAP is a multi-paradigm programming language, meaning programmers can utilize procedural, object-oriented, and other programming principles. While it is SAP’s primary programming language, programs written with ABAP can run alongside those based on other programming languages such as Java, JavaScript, and SAPUI5.
Table of Contents
ABAP was first introduced by SAP in the 1980s. Throughout the years, various enhancements to the language increased what programmers could do with it. For example, through April 2000 programs could only be created procedurally, meaning a program had to follow a set of pre-defined “procedures” to perform a certain task successfully.
In May 2000, SAP changed ABAP with release 4.6C, allowing for object-oriented programming (OOP). This programming strategy involves multiple individual “objects” interacting with one another, allowing programs to grow more complex with the use of ABAP design patterns and other OOP practices.
With the release of ABAP 7.4 and 7.5 in the early to mid-2010s, SAP gave object-oriented programmers using ABAP some powerful new features to play around with, vastly reducing the amount of code needed for common tasks. The end result is that code ends up being up to 50% shorter plus both cleaner and clearer—making both programmers and end users’ lives easier.
Other new features made available to ABAP programmers in the 2010s were extended syntax for Open SQL, ABAP Managed Database Procedures (AMDP), and core data services (CDS) Views.
Perhaps the biggest and most important change to ABAP programming came with the invention and release of the SAP HANA platform in the summer of 2011. Due to the in-memory architecture of this database, processing that formerly happened on the application layer now could be done on the database layer.
With the traditional, row-based database architecture of SAP R/3, it was important to have ABAP code run in the application layer rather than the database layer to save memory usage for further tasks. But SAP HANA allowed, and even encouraged, tasks to be completed in real-time by using in-memory technology.
This meant code could be developed and utilized in the database itself. For companies running the new ERP solution, SAP S/4HANA, this meant a whole slew of new programming opportunities. There are a few things to know when programming ABAP on SAP HANA, but it is very doable and quite powerful.
During the early 2010s, many developers wondered if ABAP was to become increasingly obsolete as SAP acquired multiple cloud, non-ABAP-based solutions and pivoted existing products towards the cloud. But with the advent of SAP S/4HANA, and more importantly ABAP in the Cloud, the language was given new life, leading many to proclaim “ABAP’s not dead.” Programmers went into the second half of the decade with a clear idea of how to use ABAP to code for SAP S/4HANA, SAP Business Technology Platform, and more.
These new platforms led to the creation of additional ABAP programming models. The first, the ABAP programming model for SAP Fiori, is used when developing SAP HANA-optimized OData services for SAP Fiori applications. These are based on core data services views and cover three application scenarios: analytical, transaction, and search.
The ABAP RESTful programming model is a very new paradigm based on the model for SAP S/4HANA, but eschews Business Object Processing Framework (BOPF) in place of a more advanced concept.
When working with a seasoned ABAP developer or scouring SAP Community blogs you may come across the terms “new,” “modern,” “old,” “classic,” “old-fashioned,” or “legacy” ABAP. What all does this mean?
Simply put, ABAP programming techniques that were used from the 1980s through April 2000 is typically what developers mean when they refer to “old,” “old-fashioned,” “classic,” or “legacy” ABAP. The advent of object-oriented programming in ABAP and the change in syntax that arrived with release 7.4 unofficially mark the changeover to “new” or “modern” ABAP.
All SAP solutions—from R/1 through SAP S/4HANA—can be modified with ABAP code. While some solutions, such as SAP Business One, SAP Ariba, and acquired products such as SAP Concur and SAP SuccessFactors, run primarily on other languages, ABAP will still play a role when these solutions interface with a central, ABAP-based SAP ERP or SAP S/4HANA system.
There are half a dozen important tools that programmers can use when working with ABAP code. They can be found in a development environment named the ABAP Workbench. This environment contains a number of needed development tools, the most commonly used of which accessible through the Object Navigator. You can access the Object Navigator with t-code SE80.
Here’s a breakdown of these key ABAP Workbench tools:
ABAP coding can be done in a special tool called the ABAP Editor, which has three different modes to work within—two versions of the Front-End Editor, and the Back-End Editor. The three editors are fully compatible and interchangeable. The source code created in one editor can be viewed by all other modes.
You can access the ABAP Editor with t-code SE38.
Also called the Data Dictionary, DDIC, or sometimes just “Dictionary,” this is a system-wide repository where database objects such as domains, data elements, and transparent tables are created and maintained. Programs will query the ABAP Dictionary to ensure that all sides are working with a single definition of an object.
You can access the ABAP Dictionary with t-code SE11.
The ABAP Painter is a set of two tools used to create GUI statuses and dynpros. The Menu Painter creates the GUI status and components, while the Screen Painter creates dynpros via text and screen editors.
You can access the Menu Painter with t-code SE41 and the Screen Painter with t-code SE51.
The Function Builder is a tool that can create and maintain function modules. These are universal procedures that start with FUNCTION and end with ENDFUNCTION.
You can access the Function Builder with t-code SE37.
The Class Builder is a specialized tool that creates and maintains class pools. A class pool is a repository object that stores global classes along with related definitions that will help the program implement the class.
You can access the Class builder with t-code SE24.
The Web Application Builder is a tool that allows programmers to create web applications.
You can access the Web Application Builder by following this menu path: Create > BSP Library > BSP Application.
While we’ve laid out much of the important terminology you’ll run into when working with ABAP, there are a handful more that will be helpful to you. Let’s take a look at twelve such terms and concepts.
Feel you need more help learning ABAP programming? These books, blog posts, and videos will help, as well as this ABAP learning journey.
Learn more SAP from our official Learning Center.
And to continue learning even more about ABAP, sign up for our weekly blog recap here:
On our website, we use cookies that enable certain website functionalities (such as the shopping cart), and cookies that help us improve your user experience and our service offerings. By clicking Agree and Continue, you confirm that you are at least 16 years old and that you give Rheinwerk Publishing and its third-party providers consent to set these cookies, and to process the respective personal information regarding your website visit. You can also make individual choices and select which cookies you allow. By clicking Decline, you decline all cookies that are not necessary for the full website functionality. You can withdraw, review, and change your consent at any time by clicking on the link „Change Privacy Options“ in the website footer. You can find more information in our privacy policy.
Name | Technology | Collected Data | Retention Period | Purpose |
---|---|---|---|---|
csrftoken | Cookie | UUID | 364 days | Security token for transmitting forms |
inc_sessionid | Cookie | UUID | 28 days | Cookie for log in and shopping carts |
bo_sessionid | Cookie | UUID | Session | Cookie for log in |
oscar_open_basket | Cookie | Integer (Basket-ID) + Hash | 7 days | Cookie for shopping carts |
list_style | Cookie | String | Session | Storage of layouts selected |
bg_consent | Cookie | true/false | 180 days | Consent Microsoft Advertising ("Bing") |
ga_consent | Cookie | true/false | 180 days | Consent Google Analytics |
gt_consent | Cookie | true/false | 180 days | Consent Google Ads Tags |
hj_consent | Cookie | true/false | 180 days | Consent Hotjar |
hs_consent | Cookie | true/false | 180 days | Consent HubSpot |
sa_consent | Cookie | true/false | 180 days | Consent ShareASale |
ws_consent | Cookie | true/false | 180 days | Consent necessary website functionality |
yt_consent | Cookie | true/false | 180 days | Consent YouTube |