Why I like ABAP
This month marks two anniversaries for me. One is the engagement to my wife 6 years ago. The other is that I have been working for 10 years. I started out in ABAP and I’ve been doing ABAP ever since (with long excursions into Java along the way). I have come to greatly respect ABAP, with which I have chiefly been earning my bread and butter.
There are some things about ABAP that don’t seem so great at first. It’s a proprietary language tied into a particular system, and it can’t be applied outside of that context. ABAP smacks of older mainframe languages, from which I’m sure it’s inherited some traits. The syntax and keywords seem odd and nonsensical, even clunky and quirky at times.
ABAP is not just a language, though. It’s a platform. It’s a very good platform at that. And it is this system for which I developed such a high regard over the years.
The ABAP platform has all the features you would ever need to build robust, scalable, enterprise-grade business applications, such as transaction management, database integration and security, amongst others. Something that sets ABAP apart from other languages is that these specific features I have mentioned are hard-wired into the language (meaning there are actual keywords that deal with these things) which explains why the ABAP language is inextricable from the system. Some people would say this is a drawback. I think it’s brilliant.
Not only that, but the ABAP language is made to deal with business data like a shark is made to hunt prey (I’m sure there are better analogies). In other languages like C/C++ and Java, you need to rely on libraries that require complex manipulations to achieve the things for which ABAP has built-in support. In ABAP you can deal with complex data structures representing all kinds of business data with minimal effort, because the language and runtime have special support for it.
For me, one of the great things about ABAP is that all development happens directly on the server. I suppose that if you’re a mainframe programmer, this is nothing new to you, but you only really appreciate this fact when you develop on another platform, for example if you do Web Development in Java. In ABAP, there is none of this compile-deploy-test cycle nonsense and endless searching for libraries to make your programs compile. You do all your coding directly on the server, and you never even think about dependencies. Everything is just there, thanks to a repository in which all programs, classes and dictionary metadata live, making everything available globally to any program.
(I’m sorry I keep bringing up Java. I really like Java. But I don’t think it is built for business applications in quite the same way).
Another thing is that debugging in ABAP is a breeze. From literally anywhere in the system (even from web applications) you can jump into debugging and step through code, even code from SAP’s own applications. This is true also for productive systems. You can view any code, place breakpoints anywhere, and the system will go into debug mode right there. It’s all built into the system. In other environments, you have to jump through hoops to achieve this.
In addition to all the things I have already mentioned, each ABAP system comprises highly sophisticated frameworks, tools and programs, for example for generating number ranges, logging etc., things which, if you had to develop them from scratch would take very long. Moreover, there are tools that allow you to analyze, in minute detail, performance and the inner workings of the system. The list just goes on.
Considering all that ABAP has to offer, I really believe it is a kick-ass platform, in spite of the baggage that it carries of features that aren’t perhaps completely relevant anymore in an environment where everything is web-driven (which is not to say ABAP is not a good web platform – it certainly is). I don’t think that you could develop an enterprise application of the same robustness as quickly in any other language or on any other platform, as you can do with ABAP. That’s why I like it.