What should an ABAPer continue to learn as an application developer
There is an excellent blog written by Marco Hernandez <<And now for something completely different>> which tells how an ABAP can avoid to be obsolete. The following five points are listed in the blog which I completely agree:
- Object-oriented programming in general.
- Test-Driven development and ABAP Unit.
- Business Object Processing Framework (BOPF).
- Floorplan Manager and other UI technologies (SAP UI5 perhaps).
- ABAP for SAP HANA.
Figure: a small gift got in SAP D-KOM 2017 in Shanghai,China
As another ABAP veteran who has been programming using ABAP in SAP for ten years, I have some additional points. I saw the term “SAP’s latest technology” within the communication of that blog, no doubt it could be quite good for an ABAPer to keep learning them, and IMHO it could be even better if an ABAPer has some basic awareness of the latest technique trends in open source community. Perhaps it is difficult for a traditional ABAPer to touch some of these trends in their daily work, however I do think that by knowing them, it can help you to become a better programmer, not just a better ABAPer.
Some of them come into my mind which are related to ABAPers’ life:
Some of them come into my mind which are related to ABAPers’ life:
1. Functional Programming

In stackoverflow, there are already lots of discussion on it. See this one:
Per my experience, by mastering a kind of functional programming language, it gives you as a programmer a completely different way of problem-thinking-and resolving direction. You can never get such feelings when you use imperative and object oriented languages. After that you can look back into your current ABAP coding for example which will perform really time-consuming calculation on big internal table? Have you ever thought of the possibility that such big internal table could be splited into small pieces and handled in parallel just as a functional programming language does?
- See a real example how Jerry deals with a real ABAP performance issue based on one inspiration from functional programming in this blog: Use ABAP Multi-Thread programming to deal with a real performance issue
- It is also very easy for an ABAPer to start practicing it, in Chrome by JavaScript or install a Scala development IDE in your laptop.
- See getting-started guide in Scala website.
- Also see this interesting blog: Functional ABAP – Functional Programming in ABAP ?!
- Currying is a very important concept in functional programming. See Jerry’s blog how to Simulate Curry in ABAP.
- Reduce is a built-in function provided for Array in JavaScript. In ABAP 750 we also have a REDUCE keyword there. See Jerry’s blog Functional Programming – Try Reduce in JavaScript and in ABAP .
2. Spring
I personally would always like to compare BOPF with Spring. I
know it is unfair, since BOPF has only been developed by several scrum teams in
Waldorf, and for Spring, on the other hand, it is open source project and never stops evolution with the amazing work of contributors
under the hood. Just see the star number of Spring project in
GitHub.
3. JavaScript

I cannot help asking at the first sight of it: is this JavaScript at all?
MongoDB is classified as a NoSQL database in Wikipedia.
Its source code could be found from github repository.
While HANA knowledge is quite important for an ABAPer, have you ever wondered that why NoSQL database will come out although there are many powerful relational database in the world?Again Google with keyword “why nosql”:
know it is unfair, since BOPF has only been developed by several scrum teams in
Waldorf, and for Spring, on the other hand, it is open source project and never stops evolution with the amazing work of contributors
under the hood. Just see the star number of Spring project in
GitHub.
In my opinion, BOPF has successfully achieved some cool features of Spring to some degree, for
example inversion of control and dependency injection. While BOPF fulfills them via countless
configuration tables ( I prefer to call TDD in ABAP as Table-Driven-Development ), Spring uses annotation as another elegant approach.
example inversion of control and dependency injection. While BOPF fulfills them via countless
configuration tables ( I prefer to call TDD in ABAP as Table-Driven-Development ), Spring uses annotation as another elegant approach.
You can of course learn OO Design pattern via the toy program written in books, however actually most frequently used patterns already spread heavily in Spring source code, by studying those codes you can know how the patterns are applied to resolve real requirement by Spring gurus.
By knowing how Spring works under the hood, it helps you to understand BOPF more thoroughly in turn. When you are familiar with the mechanism of
those framework enough, you are now able to write some mini-framework in your application code, which helps you to avoid code duplication, break tight dependency among components, and make your future maintenance and
continuous development task easier
in that Open-Close-Principle is achieved.
For some other features like AOP, it could not be purely supported in ABAP from language perspective due to the fact that unfortunately ABAP Virtual Machine cannot support dynamic proxy as JVM does.
Nevertheless we still have Pre/Post exit which can be leveraged to simulate AOP, from which customer can still benefit a lot, to build their own extensions. Meanwhile, there is another blog talking about AOP in ABAP:
those framework enough, you are now able to write some mini-framework in your application code, which helps you to avoid code duplication, break tight dependency among components, and make your future maintenance and
continuous development task easier
in that Open-Close-Principle is achieved.
For some other features like AOP, it could not be purely supported in ABAP from language perspective due to the fact that unfortunately ABAP Virtual Machine cannot support dynamic proxy as JVM does.
Nevertheless we still have Pre/Post exit which can be leveraged to simulate AOP, from which customer can still benefit a lot, to build their own extensions. Meanwhile, there is another blog talking about AOP in ABAP:
Venturous Logging Solution for ABAP OO: Vesna AOP Demo Case
And in Javascript, AOP could also be simulated somehow thanks to the prototype inheritance mechanism. For detail see this blog.
Last but not least, see these three SCN blogs:
And in Javascript, AOP could also be simulated somehow thanks to the prototype inheritance mechanism. For detail see this blog.
Last but not least, see these three SCN blogs:
1. SAP BOPF vs J2EE transactional frameworks
2.My bog: A simulation of Java Spring dependency injection annotation @Inject in ABAP
2.My bog: A simulation of Java Spring dependency injection annotation @Inject in ABAP
3.My blog inspired by Spring AOP: Implement CGLIB in ABAP
5.My blog inspired by Java Mockito: Simulate Mockito in ABAP
3. JavaScript
I had been using CRM WebClient UI in the past to build UI, and I know it is not possible to build state-of-the-art responsive UI using this technology, and I have very limited knowledge on floor-plan manager so I am not sure whether it has the same problem. As far as I observe, UI5 plays a more and more important in SAP UX strategy, at least in my location, almost all customer facing UI are built by UI5. If you are an excellent ABAPer, you can develop high quality backend service which could be consumed by UI5 via OData, that’s fine. However if you would not like to limit yourself as just a backend developer, but instead, you wanna become a Full-Stack developer, then it is a must that you should learn Javascript. Three years ago ( in 2014 ) I once wrote a blog A list of Javascript interesting features compared with ABAP to compare ABAP with Javascript when I step into UI5 world. There are some new syntactical sugar over JavaScript’s existing prototype-based inheritance introduced in ECMAScript 2015. Check the following JavaScript source code:

I cannot help asking at the first sight of it: is this JavaScript at all?
4. A kind of NoSQL Database for example MongoDB
MongoDB is classified as a NoSQL database in Wikipedia.
Its source code could be found from github repository.
While HANA knowledge is quite important for an ABAPer, have you ever wondered that why NoSQL database will come out although there are many powerful relational database in the world?Again Google with keyword “why nosql”:
I will keep updating this list once new topic comes to my mind which is really related to ABAP. I believe you will tower over normal ABAPers once you get familiar with those stuffs.
5. Learn how to work on a kind of Cloud Platform – updated in 2018/01/02
How time flies! One year has passed again. Here is another point which I think should be added to ABAPer’s TO-LEARN list.

ABAP veterans might get confused that what could they do in current cloud world. Good news is, they are never abandoned by SAP at all.

See blogs from Florian Wahl:
and blogs from Graham Robinson:
In the meantime, besides SAP Cloud Platform, according to SAP note 1380654, SAP Netweaver Application Server are supported for the following IaaS providers as well:

We have every reason to expect more blogs in this respect in year 2018.
Further reading
I have written a series of blogs which compare the language feature among ABAP, JavaScript and Java. You can find a list of them below:
- Lazy Loading, Singleton and Bridge design pattern in JavaScript and in ABAP
- Fibonacci Sequence in ES5, ES6 and ABAP
- Java byte code and ABAP Load
- How to write a correct program rejected by compiler: Exception handling in Java and in ABAP
- An small example to learn Garbage collection in Java and in ABAP
- String Template in ABAP, ES6, Angular and React
- Try to access static private attribute via ABAP RTTI and Java Reflection
- Local class in ABAP, Java and JavaScript
- Integer in ABAP, Java and JavaScript
- Covariance in Java and simulation in ABAP
- Various Proxy Design Pattern implementation variants in Java and ABAP
- Tag(Marker) Interface in ABAP and Java
- Bitwise operation ( OR, AND, XOR ) on ABAP Integer
- ABAP ICF handler and Java Servlet
- ADBC and JDBC
- CL_ABAP_CORRESPONDING, CL_JAVA_CORRESPONDING and CL_JS_CORRESPONDING
- Build an Cross Site Scripting example in Java and ABAP
- Play around with JSONP in nodeJS server and ABAP server
Dear readers,
You may find that there are lots of formatting issues in the text of this blog, for example some words are truncated and displayed into different lines by mistake. I spent quite lots of time to check the source code in blog editor and they are correctly displayed there so I don't know how to fix those formatter issues.
I post a question Blog editor - formatting does not work to ask for help from SAP community. If you know the solution as well, please kindly tell me and I really appreciate it. Thanks a lot!
Best regards,
Jerry
Hello Jerry,
I think I should speak Chinese, then you could understand me clearly.
我现在正在学习Fiori, 但是需要学习的知识点非常多,我之前只是做ABAPER。
如果我想在SAP 的WEB IDE上完成开发任务,我都需要学习java, javascript, node.js等.
你能介绍更具体一些吗,比如我需要学习java的哪些模块,有没有你推荐学习的网站等等
Thanks very much.
Tara
Hey Jerry,
don't worry about the formatting, I think it's still very readable!
And: Congratulations on getting your blog featured on the front page!
best
Joachim
Every time I read something about programming, the functional programming topic is either directly or indirectly mentioned. Maybe we will see lambda expressions in the upcoming updates for the ABAP language?
Now the concepts of Backend and Frontend developers have arrived into the SAP world, so knowing your frontend tools (i.e Javascript + HTML5) will definitely be a plus, so you can be considered as a Fullstack developer.
I get the impression that some old school ABAPers are terrified of learning new programming languages. I just find it exciting.
Great post, thanks for the mention 🙂
I learned Java more than 15 years ago, even got some certificate. Never used it and now don't remember any of it.
Out of curiosity, I've had a notification set up on Dice for any SAP jobs in the area. In the last 5 years none came up where any of this knowledge would give me any edge. There have been a spike of ads for HANA consultants with 10 years of HANA experience though. 🙂
By the way, I liked your blog much better. It was more practical and resonated more with me personally. Better written as well.
Hi Jelena,
I learned JAVA around the same time. I’ve been programming in SAP since around 1997. AH! Amazing how long it’s been. I’ve never used JAVA. I have used ABAP Objects, and sadly did use ABAP Webdynpro. <Smile> Not using webdynpro anymore.
However, in my most recent job:
have all been helpful. I’m hoping to pick up .NET and VB. It’s been a million years since I played with VB.
I will say for me – the best thing to learn is the functional side, technical side, and a little bit of BASIS, a little bit of security. I have just about the best job in the world as I get to play with it all.
And yes – a little bit of the new SCN knowledge would be good. I seem to be getting my answers either from archived content or other sites.
Michelle
Hi Marco,
After 12 years can i count as "old school ABAPer"? 🙂
I'm not terrified by new languages (last year i approached, quite successfully, both Python and JS/UI5). But i wonder if they last in the SAP-ecosystem or they'll be meteor like JAVA (PI....) and/or WebDynpro.
ABAP, instead, it's still here, you see...
i study a lot of new things for my amusement, just i'd like to focus on useful and lasting ones 😛
Ha.. funny thing I had a chat today about it at the MWC. Languages come and go away… there will be a time where ABAP will go away. But I do not see it the next years. So right now the ABAP transform itself to a modern language and my simple recommendation is to all the ABAP-Developers out there:
Make use of the new features and transform your style of coding also to a modern set.
Only sad thing is of course, you need to have a really new stack available to use it and the journey of transforming is still not over.
~Florian
Great blog! An open world begins with an open mind. And you did it!
I just read another blog recently:
https://blogs.sap.com/2017/12/07/be-prepared-for-the-new-abap-programming-model-in-sap-s4hana/
There are some interesting points, and one of them is: Enhancement of the ABAP Language to provide a native support of the business object concepts (BO as first-class ABAP citizens)
Just curious about how ABAP will evolve. Any comments?
Hello Hao,
Thanks a lot for your complement! I haven't read that blog yet. Will definitely read it and then comment 🙂
Best regards,
Jerry