ABAP on the SAP Cloud Platform – Some thoughts and a wish list
Yesterday during his SAP TechEd keynote Bjoern Goerke announced that an ABAP runtime will be available on the SAP Cloud platform. Currently, the available information is still quite sparse. There are two blog post by Florian Wahl that give a good overview over what is currently known
However, as there are some rather passionate ABAP folks in the SAP ecosystem there was immediately quite some noise regarding this announcement on social media. Some were not so sure what to think about the announcement:
Really not sure how I feel about #ABAP on @sapcp… It needs to sink in and I need to understand where/how/why it fits
— Gareth Ryan (@wizbongre) September 27, 2017
Others immediately came up with a which list for the new ABAP on the SAP Cloud Platform.
With ABAP in @sapcp, will there also REPL for ABAP?
— Tobias Hofmann (@tobiashofmann) September 27, 2017
After following these discussions and after reading Graham Robinson blog ABAP to the cloud I decided to also blog my thoughts about the announcement. This blog consist of two parts. The first part is what I think this announcement means for an ABAP developer with respect to what to learn. The second part is my wish list for the new cloud ABAP.
But first a disclaimer. Everything written below is only my speculation. So it is highly likely that everything ABAP on the SAP Cloud Platform will be different.
Resistance is futile
The most important result from this announcement is in my opinion that its now time for all the ABAP developers to learn a lot of new tools and technologies.
Its pretty clear form the announcement that SE80 will not be supported any more. Wether the future development environment will be ABAP in Eclipse or something like the SAP Web IDE doesn’t really matter. As SE80 will not be supported it is a good idea to start making yourself familiar with other IDEs right now. In addition ABAP developers should start to get used to more text based editors (like e.g. the text based DDIC structure editor in ABAP in eclipse). Form based editors like the ones in SE80 will become very rare.
The development model will be something very similar to the S/4HANA development model. Therefore, its time to learn about this programming model and the related technologies like BOPF and CDS. With respect to the UI it is time to start learning SAP Fiori and/or SAP UI5. There will be no SAP GUI UIs in ABAP on the Cloud Platform anymore. I’m pretty sure that SAP will provide some kind of AVL derivative to enable the simple generation of some tables based output. However, this will always be only usable for a few use cases. Everything more complex will most likely require the usage of Fiori or UI5.As the ABAP development on the SAP Cloud Platform will focus on smaller applications it is probably also useful for every ABAP developer to start to learn about Microservice architectures and how to build applications using microservices.
Finally, it is certainly useful to understand all the technologies and concept underlying the SAP Cloud Platform like cloudfoundry or kibana.
So in summary the announcement basically means that it is now time for ABAP developers to learn all these fancy “new” tools and technologies. Only developers that know these will be able to profit from the availability of ABAP on the SAP Cloud platform.
ABAP: Live long and prosper
So now to the second and fun part of the blog: My wish list for the future of ABAP. As ABAP will get rid of some of its burden (as now downward compatibility to before Star Trek II: The Wrath of Khan needs to be maintained) most of them should be easily to implement.
6. no CALL METHOD please
I would like to see that some of the old syntax elements like the verbose CALL METHOD. Instead ABAP should just support the class->method( ) style.
5. A Proper Package Concept
One thing that can really drive you nuts in ABAP is the missing of a proper package concept. And yes, I know there is a package concept and it has some nice features (cf. ABAP Package Concept Part 1). However, what I really want to have is a package concept were I need to explicitly import packages I want to use. Basically the way packages work in Java. This would, for example, allow to have different versions of a class with the same name and just use the one you want. Thereby we would get rid of the stupid cl*_1 cl*_2 or cl*_new naming of classes.
Oh and yes, we wouldn’t need to start all customer classes with a Z to distinguish them from SAP classes.
4. Class and Method Names
I hope that in the new ABAP there is no character limitation anymore for the naming of classes and method names.
3. Boolean please!
I really want to have a proper boolean data type in ABAP. I don’t want to write any abap_true or bap_false anymore.
If you have never used a REPL you should try and learn a language that provides one. Once you worked with a REPL you will miss it whenever it is not there. But as the new ABAP will not support writing small test report anymore (as reports will be not there at all) we desperately need a way to test small things out. There was already a ABAP console in the demo of ABAP on the Cloud Platform. So I guess it should be possible to extend it to a proper REPL. And the best thing would be to also integrate the REPL in the debugger.
1. Functional ABAP
And while the SAP is on it I’d really like to see some more functional features in ABAP. Why? Because I think it is in many cases a great way to implement certain functionality.
So that is my wish list. I would be interested to hear and discuss what you would like to see in the future ABAP on the Cloud Platform.
I love your wish list but I'd have them in a different order (purely because they are my biggest pain-points at the moment):
1. A Proper Package Concept
2. Longer Class and Method Names
3. Functional ABAP
... and then the rest in no particular order
Just wondering about your number 6. "no CALL METHOD please". Wouldn't we would still need that for dynamic method calls ie. CALL METHOD (class)->(method) ? Or maybe that is no longer necessary if ABAP was a proper functional language with first-class functions/methods?
I was reading and thinking about my list and what’s most important: REPL! Yeah! No, Package Management is the number one!!! But REPL... bah! I want all of them!
Plus better version control... Yes, ABAPGit, I'm looking at you ?
Nice post Christian,
my wishlist includes sorting out the ABAP namespace issue.
Why not just having the customer-namespace implicit added? I do not care about it and SAP can handle it just by the user-type..
So if I'm logged on to search for "basis" it looks for (Z)BASIS(customer) and BASIS(SAP) in the result list:-)
Hell Yeah... REPL!
"Its pretty clear form the announcement that SE80 will not be supported any more"
Interesting to read that. Last time I've used ADT it jumped for quite a lot of objects back to the SAPGUI. I wonder if ADT is now that far, that it can support every type of objects. I would be happy about it. I hope it's not just not a stupid error message, that jumping to that type of object is not supported.
Packages, table types and database tables are not supported (yet). Everything else you need in your day to day work is already there.
good News: In AS ABAP 7.52 packages and database tables are supported now in eclipse.
Table Types are still missing.
Really good news. Currently I've got some trouble during the installation of 7.52 (errors in "Import ABAP"), trying again after my Urlaub ??
Yeah, the availability of ABAP in SCP is an opportunity for the abapers to know new tools and technologies and maybe become an Full Stack SAP Developer (ABAP + UI5 and Fiori).
You nailed it.
And I hope to see some of the things from your list becoming true.
Regarding the ABAPossaurs, well... IMHO, we do our best to spread the knowledge about best practices, development techniques that are well known outside ABAP world. If they can`t keep up the learning pace, bad luck for them.
…and all development objects are file-based and stored primarily on my file system versionable in git with any git client and deployable into the server.
Deploy code, not transport.
No editing of SAP tables as you have to do in BOPF, instead edit XML files.
Lightweight one-purpose frameworks (e.g. for object persistence) except heavy frameworks that mix up technical and functional aspects.
That's something I really would like to see as well. Everybody seems to be in favour of addinb ABAP to the WebIDE. In contrast to that I'd like to have a development environment that doesn't require an complete app server. However, I guess this will never be happening....