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.

Tags: ,

  • helmut

    That’s very interesting! I didn’t know all those things about ABAP! (Before this article I didn’t even know what ABAP was…) The only platform I know that comes relatively close to what you describe above is maybe Ruby on Rails, even though I don’t know it that well yet. But I am learning more about it almost every day. :-)

  • abraham

    I dunno guys..I mean yes ABAP is “cool”. And ask another properhead and they will tell you Java is “cooler” – I guess the point is: it’s good to have the right tools when you have to get the job done! I, for starters, hate it when the client, who is migrating to SAP, expect all their legacy reports to be written code for code in abap! Hang on, I digress….

    All I am saying is every platform has it’s strong points and weak ones. I’m cool to like ABAP like that. As for Ruby on Rails, maybe one day I’ll have the pleasure of learning it.

  • helmut

    I agree that there is no single best platform out there. I guess it’s a matter of taste. Some languages work better for certain people. There are “better” languages out there, but that’s obvious. I don’t like Java that much, but that doesn’t mean it’s not a good platform to build on. I’m mainly a .NET supporter, but I’m learning to have a more open mind… :-)

  • Pingback: ceronio.net » Blog Archive » What makes a platform?()

  • De Wildt

    Hi,

    I couldn’t resist when I saw the “Why I love ABAP” and I have to admit that I love ABAP to… most of the time :). I have used many development tools including .NET and java and quite honestly as a development platform for business applications these don’t come close to ABAP.

    The most valuable achievement of ABAP I would say is the integration of business development features directly into the language (most importantly for me database and SQL features). I think if you had to set up a list of these features you would be hard pressed to find a platform that provided 50% of these.

    The truth of the matter however is that this is very much based on the usage of the language and .NET and other languages do not just cater for Business Application development and this is both there downfall and success.

    Overall my point is that .NET and other programming languages need to have more specific support for specific application development needs, they don’t just cater for business application development. Their best effort is probably SDK’s but they just don’t provide the level of functionality and integration that ABAP does.

    On the negative side though, I hope you will post a blog about the shortcomings of ABAP which are largely due to it’s specific use as a business application development platform (and many due to SAP’s stupidity 😀 but thats a whole new can of worms).

  • admin

    Hey De Wildt, thanks for the insightful response. You are absolutely correct that the reason other languages do not come close to ABAP for business applications is that they cater for other uses as well, and are therefore not made purely for business applications like ABAP is.
    I think that if I had titled the blog “Why I like ABAP for business applications” then one couldn’t fault ABAP on what it does. I mean, you’re not going to write 3D games in ABAP for example.
    The other thing I forgot to mention about ABAP is its likeness to scripting languages; the fact that it is weakly typed makes coding easier (compare Java, C, etc.) to read and maintain.
    When you talk about SAP’s stupidity, I think of completely other things: I think of the frustration of getting answers sometimes, and the lack of documentation etc.

  • Interesting article. I have been using SAP R/3 at work for the past 3 years and have often wondered about ABAP. Martin, as you seem to have a fair amount of experience in ABAP, how much of a learning curve would it be for someone who is a C coder?

    My site will be complete… if I ever stop reading your posts :p

  • martin

    Hi Jayton. I posed your question to one of my colleagues who did C before he did ABAP. He made the valid point that if you can program, you should be able to pick it up fairly quickly (or any language for that matter). What adds a lot of valuable to an ABAP programmer though, is their understanding of the system, as well as any functional (application) knowledge. I think ABAP is fairly easy to learn, but getting entry is the problem. From personal experience I think it is good to attend at least the basic courses (if you can get your employer to pay for it, as they are quite expensive). Being so proprietary, it is normally difficult to get good training material (you could always look at help.sap.com) or access to a system to learn on. However, with such a foundation it should be easy to learn.

  • Hey Martin,
    Yes ABAP is pretty cool. A great way to earn the bread and butter. Great to see you blogging here and on SDN Martin. I am inspired to write my own Why I love ABAP. I might follow it up with why I hate ABAP!

    regards,
    Nigel

  • martin

    Hi Nigel, thanks for pointing out my blog on SDN. I didn’t even realized it had been published! (I was expecting a mail notification). I would certainly like to hear your reasons for why you don’t like ABAP (and also reasons why you do).

  • Thomas Jung

    Quote: “the syntax and keywords seem odd and nonsensical, even clunky and quirky at times.”

    Right away I thought of the old syntax keyword OBLIGATORY. Sure SAP could have used a more common keyword like REQUIRED, but that just doesn’t have the punch of a word like OBLIGATORY.

    Every time I use use that syntax I get a little thrill because it feels a little like you are screaming at the enduser. I guess the keyword, STUPIDUSERMUSTPUTVALUEHERE, was already taken.

  • martin

    Hi Thomas,
    In keeping with ABAP’s design principles, that actually seems very plausible.
    There would have been two keywords though: STUPIDUSERMUSTPUTVALUEHERE and CLEVERUSERCANOMIT. Both keywords would have been tied into the authorization system, and at runtime the ABAP processor would do a check on whether certain profiles were assigned to the user to determine their competence level. In the ABAP keyword documentation, this feature would have the warning: “FOR INTERNAL USE ONLY”.

  • Jamie Gaddis

    Martin and Thomas,

    Thanks for making me smile today! I’ll never code OBLIGATORY again without a grin on my face… I have been lucky enough to earn a living at this ABAP game since 1994 straight out of college (R/3 2.1g… remember those silly letters at the end of the versions?). I agree with the post above that the best ABAPers are those with a good understanding of the functional side of SAP. When my non-SAP friends ask me why I like ABAP so much, I simply tell them that the world’s economy runs on ABAP (or put another way, ABAP rules the world!)… oh, and because it pays the bills!

    Best Regards,
    Jamie

  • Hi Martin,

    Nice blog about why you or any ABAP consultant likes ABAP, for that matter.

    Martin/Nigel/Thomas/Jamie,

    On the other side, there are some disadvantages of not having enough libraries/capabilities e.g. Network /Socket / protocol programming. I remember at the very beginning of my career, I was supposed to integrate a digitizer with the SAP. That means I should either read the port of a server or read the read the windows’ COM port. There are no libraries available for this and eventually I have to use other languages for the purpose and then somehow trigger those programs from ABAP.

    But as you mentioned it’s the business application programming capabilities and not technical superiority of ABAP, which differentiates it from other languages.

    I am also writing a Blog post to explain the evolution of an ABAP consultant based on his technical / functional skills. If possible, Please check and let me know your views :

    http://careerless.blogspot.com/2007/03/evolution-lifecycle-of-abap-consultant.html

    Thanks,
    Ram

  • Abdul Hakim

    Hi Martin,
    Very Very Nice Blog…
    There is nothing wrong in saying that “ABAP Runs the World”.

    Regards,
    Abdul Hakim

  • Hi Martin,

    I only can say this is a great blog. I started with ABAP half a year ago and before I build my applications with C/C++/Java/VB/.NET and so on. And you are right there is nothing better out there for business applications then ABAP.
    During my study a lot of computer scientist told me that ABAP is not really a programming language and it is very limited… but ABAP grasps the basics of building Business Applications.

    Best Regards,

    Marcel

  • Hey guys,

    What a wonderful conversation here! I am glad to see some ABAPers who discuss ABAP. 2007 is the 8th anniversary for my ABAP programmer career.

    Jamie, you are right:

    I simply tell them that the world’s economy runs on ABAP (or put another way, ABAP rules the world!)… oh, and because it pays the bills!

    Martin, I came across your blog today! Your blog is in my blog list anymore! Keep writing, I will keep reading!

  • Alex

    I read your blog, I found it interesting, but (don’t get me wrong) I can not share your enjoying in ABAP. After being 20+ years in programming on different platforms and in different languages, I could not find IDE that can be compared with ABAP – ABAP is definitely ranked number 1 as most developer-unfriendly. During my first ABAP training I had a feeling that I should set my watch back for 15 years, since we will wirte ABAP code.
    ABAP is a good way to earn money, nothing else – neither good, nor programming, nor is a language. If you are patient enough to get used to its limitations and scope of work, I can understand that it is possible to claim “I love ABAP”. Things written in ABAP could be written in any other language, on the other hand almost all software companies have their framework that covers things that are hard-wired in ABAP. We can discuss if it is benefit to have development on server, and if it is important to have possibility to jump into debug on production server, but I think it is not so important, it’s more philosophical issue.
    At the end I would like to say that ABAP has advantage against other languages – it is better payed. It is possible to earn loads of money writting business applications (as in any other language) – comparing to prices of equipment, infrastructure, licencing and consulant fees it is not a big deal to pay ABAP developer more than any other developer.

  • Jamie Gaddis

    Wow, Alex, why don’t you tell us what you REALLY think: “ABAP is a good way to earn money, nothing else – neither good, nor programming, nor is a language. ” Gee, and all this time I thought I was writing business applications using a programming language. Thanks for setting us straight, Alex.

  • Alex

    OK, maybe paraphrasing Voltiaree in this context was not good idea, but Jamie, what I really think is just contained in sentence you quoted. Whole SAP is more based on advertising and economic issue than on programming knowledge and possibilities. That is why ABAP will always be behind other solutions (technicaly speaking) and on the top if we are discussing developers salary. Best part of SAP is XI which not much connected with ABAP, and as far as I see it is one of very few fields where SAP is better than competitors. If you could separate money issue from profession, I strongly believe that number of ABAP developers will sharply drop. But, since we could be considered as “intelectual whores”, ABAP has its future.

  • Jamie Gaddis

    Alex, you seemed to have completely missed the point of the blog above. ABAP does not try compete at a technical level with other solutions. In the spirit of the shark analogy, if you need me to cut down some trees give me a chainsaw, not surgeon’s instruments. Other solutions simply cannot compete with ABAP at a business application development level. As for the compensation issue, it’s all about supply and demand.

  • Alex

    To make things clear, ABAP is poorer than other languages even for business applications. I agree that from personal point of view best tool is one you know and have, but it doesn’t mean it is good.
    ABAP pulls a lot of weight from its history, and that makes it slow, big and not enough efficient. IDE is developer unfriendly, and there is nothing you can do about it. In environment like that any developer will be significantly less efficient than in any modern IDE. ABAP syntax and keywords are in some cases rather strange. For time needed to develope an ABAP application and put in production, you can do the same (probably with much less effort, and creating a lot of reusable components) with any other tool. Curve will look different, but at the end result is the same.
    At the end, I believe that shark analogy is very good description. Shark is good in catching a prey, even better than some fishes, but you shouldn’t conclude it is a good (specialy not the best) hunter. For example piranas are smaller, quicker and more efficient.

  • Jamie Gaddis

    You are correct. I am very biased toward ABAP. Read the blog again to find out why.

  • Alex

    No matter how good blog is, rereading can not and never will change reality.

  • Alex

    If you believe that rereading a blog will make ABAP better tool, funny, but not incorrect comparison could be made. No matter how many times repeated information that Nazis won WWII will not change the fact that they’ve lost it, or you believe the opposite?

  • martin

    Hi Alex,
    I would be interested to hear what experiences you have with business application platforms, and what you consider in your experience to be good / the ultimate development tools. Do you perhaps have a blog where you share your thoughts?
    Martin

  • martin

    Alex, one more thing: In my blog, I made the point that ABAP is not just a language, but an entire platform. I think if you compare it purely on the basis of the language, you will no doubt find other languages that are nicer to work with, but I doubt you will find a platform that is as robust and feature-rich. Maybe you would like to read my next post entitled “What makes a platform?” and give me your thoughts on that.

  • Jamie Gaddis

    Alex, I was mearly stating that the blog explains very well why I am biased toward ABAP. The title of the blog after all is NOT, “Why ABAP is the Best Tool for Everyone.” I frankly don’t care if you like ABAP, and I don’t hope to change your mind. I’m curious to know why you seem to care so much that others DO like ABAP? I don’t think Nazis are relevant to the discussion, but since you asked: as an American I know who won WWII and it was definitely NOT the Nazis!

  • Alex

    Martin, I read your article “What makes a platform”, it is also a good one. I consider that ABAP is just language; speaking about platform, we shall speak about NetWeaver also. And speaking about plaform, we shall not avoid speaking about technical issue, price that has to be payed, etc. My prefered tool for big things is J2EE, with Oracle 10g (favorite frameworks and must have .jar’s are not important, and sure out of topic:)).

    Jamie, as I said in my first comment “If you are patient enough to get used to its limitations and scope of work, I can understand that it is possible to claim ‘I love ABAP’. ” People who like ABAP have usualy just a bit of expirience (or no expirience at all) with other tools, or have expirience mainly in COBOL world. Same as you, I don’t care if they (or you) like or dislike ABAP. But, as a software engineer I think it is important to have relevant facts that give at least black&white picture, since engineers should not be single-minded (there is a saying in my country: mind is like parachute – it works only open).

    Point of my comments is not that I hate ABAP (I would not go so far to claim that; I prefer to say that I disagree with ABAP concept, but it feeds my children). Point is that ABAP can be replaced with other tools: cheaper, more efficient, more flexible, with better IDE, etc. Almost everyone biased toward ABAP claim that it is better than others, and that is why I commented that other tools can do same things, but are more developer friendly etc. Maybe I will be incorrect, and not very good in diplomacy if I say that ABAP and NetWeaver are more for people that would be described as users (persons not interested in technical stuf), than those described as developers.

  • Jamie Gaddis

    Alex: By its very nature, business application development is certainly more concerned with what users need to get their jobs done more efficiently. I do not consider your statement to be an insult at all. In fact, the more business (i.e. user) knowledge that I gain, the better I am at my job as an ABAP consultant.

    While it is true that ABAP as a programming language is very easy to learn, you are terribly mistaken that ABAP is strictly for inexperienced developers. I’ve seen some pretty badly written ABAP code that an experienced developer would never have created! But you are correct in your assertion in one regard: A pure techie (or software engineer) working as an ABAP consultant might become frustrated (and eventually even bitter and resentful) because they do not usually get excited about business applications to begin with. I prefer to think of ABAP as a serious business development platform and consider more “technically advanced” languages as better for developing science & engineering applications, graphical interface-intensive applications, game-development, etc.

    By the way, ABAP is not exactly stagnant as a development environment. The new editor, debugger, WebDynpro ABAP, and many other innovations are helping to make it “more efficient, more flexible, with better IDE, etc.”

    SAP originally tried to use C to write its R/3 system (see Karl Kessler’s feature in SAP Insider Apr/May/June 2006 issue), but it lost out to a better technical solution… ABAP. That was decades ago, but even today SAP clearly states that Java is more for the front-end side, while ABAP is better suited for the back-end business logic side.

    Based on your statement that ABAP feeds your children, I assume you are currently working with ABAP. In my country we also have a saying, “Don’t cut off your nose to spite your face.” BTW, I really like your country’s saying too… :) Cheers!

  • Rubem Silva

    I agree with all the praiseworthily words for the ABAP language. I´m an ABAPER that start on this world in the middle of 2000. I´m enjoying the language. Here in Brazil it´s popular on the companies. Big hugs, Rubem.

  • Dipa

    Oh!! thanks a lotfor giving such a strong discusion about a platfrom to choose for an enterprise …..just wanted to know how much time will ittake fora c/c++ , java programmer to have hands on ABAP…
    -Dipali

  • Juan

    There is a bussiness ecosystem in the world : ABAP.
    Eventually ABAP will be integrating systems and bussiness process between companies, industry solutions, countries, So, human minds.
    There are not other alternative to join human minds with this amazing potential power of convinations for logic, imagination, creativity, complexity, some day abapers will write an agent program to run into bussiness ecosystem as a messenger run in world to complete a VIP task…
    (this is not the future, just create an ABAP IDOC for intercompanies!)
    So I really likes ABAP.

  • Steven Harrison

    Hi,

    I am a .net developer and am thinking about moving into SAP.
    Would I require to learn ABAP or could I use .net to program against it?

    Also, if I could us .net, would it be easy to get jobs or do I have to stick to ABAP?

    Steven.

  • admin

    Hello Steven,

    While .NET is being used within the SAP space, I think it is mostly limited to programming interfaces or frontends by using SAP’s .NET Connector. Most of the core functionality, especially where business logic is concerned, is written in ABAP (and some Java here and there).

    If you can get someone to sponsor your learning ABAP, I would recommend it, but by all means remain cross-skilled.

    The value in being an ABAP developer comes greatly from having a functional understanding of the business systems, rather than just knowing the development environment (being able to develop in ABAP does not mean you can do HR programming, for instance). Once you get into ABAP, the scope for learning is extremely wide.

    My recommendation to people wanting to get into ABAP (or SAP, really) is this: Find a small to medium consulting house that is willing to take you on and train you. If you can, get into a support role first (rather than work on a project), as you will gain lots of experience that way.

    Hope this helps.

    Cheers,

    Martin

  • Mush

    Hey Martin, I enjoyed reading this instalment of your blog, and enjoyed the
    comments even more!

    To re-ignite the pro-ABAP / anti-ABAP debate:

    Where ABAP is concerned, it’s a propriety language, if you purchase an
    SAP platform, you are locking yourself into ABAP development. Unlike
    Oracle, where you have a wider selection of languages to use to achieve
    custom business applications. Thus its not an argument of choice, its an
    argument of the merits of the language, which makes it a bit difficult to
    draw real-life performance/usability comparisons, but lets be honest, you
    can draw reports off SAP in Java, you can develop webapps with ABAP
    (WebDynpro).

    The point made on being developer friendly, ABAP is WAY friendlier to use
    to draw a report out of SAP than Java is, even though both can do it.
    In the same breath, Java is WAY friendlier to use to develop a webapp.

    To quote Alex:
    “Maybe I will be incorrect, and not very good in diplomacy if I say that ABAP and NetWeaver are more for people that would be described as users (persons not interested in technical stuf), than those described as developers.”

    I would not say you are incorrect nor undiplomatic, for ABAP as a language
    is definately evolving away from what the legacy ABAP developer is used
    to, but I do not think it is moving towards a role described closer to “user”,
    but rather to a role described closer to “functional consultant”.

    Alex said:
    “ABAP is poorer than other languages even for business applications.”

    I understand this to indicate that you do not develop business applications
    very often on SAP platforms. To divorce yourself from ABAP within a SAP
    platform and wish for any other IDE is remarkable, why toss 30 years of
    growth, development, ease-of-use, interoperability & navigation simply for a prettier and totally subjective choice of IDE?
    A seasoned ABAP developer can only appreciate the points made in the OP
    in the context of SAP business applications.

    To quote Alex again:
    “ABAP is a good way to earn money, nothing else – neither good, nor programming, nor is a language. If you are patient enough to get used to its limitations and scope of work”

    First, examine the context ABAP is used in. Then realise that the only
    limitations are those that exist in your own mind. (please remain in SAP
    context, we’re not developing games here, we’re developing business
    software presumably on an SAP platform seeing as we’re arguing the merits of ABAP as a language).

    As for scope of work, again, this is a self-imposed limitation.
    The final synthesis of this debate will be the question:
    “What CAN’T ABAP do?”
    to which my answer would be “Non-business related functions”.
    Very different from from “What CAN’T Java do?”.

    In your ABAP training, you mentioned that you felt the need to set your
    watch back 15 years. May I ask why the negative predisposition?
    With all due respect, your parachute was being stubborn on that day.

  • Laks

    Hi,
    I need your help regarding whether i can accept a career in ABAP or not?
    Initially i was a java developer but later moved towards testing side. But, now i got an oppurtunity to learn ABAP and work in that. Is this a good oppurtunity for me to code in ABAP? Can you please tell me whether i can feel coding in ABAP is easy that Java?

  • admin

    Hello Laks,
    If you are developing business applications, then I can guarantee that you will find developing in ABAP simpler and more satisfying than in Java.

  • A comment about the way ABAP and the SAP development environment is evolving.

    Sure, SAP is making it easier to develop custom requirements with less coding to provide for main stream requirements. This means that you can develop custom solutions with very little coding needed for common needs, but as soon as you have a requirement that is slightly off main stream, the coding and development effort becomes extremely complex, and much more “technical” than it used to be!

    I think of my recent experience in creating CRM fact sheets for a customer. They are laregly configurable and can be created by a fucntional person, but as soon as you need to draw data from sources outside of what SAP offers as standard, you now have a very technical and tricky job on your hands!

    The evolution is into automatically generated code, which is supposed to make things easier and quicker, but the result is often the absolute opposite!

  • Shyam

    I read your blog, I found it interesting, but I dont know how to start ABAP.I am a biginner in VB,C,C++,c#.NET. Please help me !

  • admin

    If you are interested simply in learning ABAP, then you could download a trial version of SAP Netweaver from http://www.sdn.sap.com/irj/scn/nw-downloads and follow the instructions. Warning: This is a very big download and you will need quite a bit of hardware to run it!
    If, on the other hand, you are planning to make a career out of ABAP, then you could try for a career with a consulting company that does SAP consulting, with the intent becoming an ABAP developer.

  • Luf

    Nice blog! I’m an ABAPer yet I dont like abap because i dont like programming business applications :P. I prefer “fun” stuffs like game, web forms, etc.

  • Thank you for sharing your story. It has been 10 years to the day since the post – time to celebrate? (:

    Nowadays I still agree with your perception of the NetWeaver platform. I personally fell in love with it many years ago, and although our relation has had its ups and downs, the platform still keeps amazing me with its practicality and helps me draw inspiration for my other projects (implemented with “contemporary” technologies). Let us hope that the platform retains its stability while evolving in the cloud-era.

    What’s most important – the platform has introduced me to a diverse community of people of all ages, and for that I am very grateful !