SAP TechEd Barcelona 2018
There have been a heap of blogs about SAP TechEd Barcelona on the SCN but I thought I would add my two bobs worth.
I did not arrive until mid-afternoon on the Monday, but a tip for young players is that apparently ever year there are unannounced “spontaneous” events run on the Monday, which are not announced until a few days before, so it is advisable to fly in on the Sunday. In the worst case scenario and no magic events pop up out of nowhere at least you can go sightseeing. What I liked about Barcelona was the rabbit warren of narrow streets, all full of bars and pubs.
BEER! BEER! BEER! BEER!
The theme of this year’s TechEd is the “Journey to the Centre of the Earth” hang on that is not correct it actually is “Journey to the Intelligent Enterprise”. On the latter journey you will encounter a lot less dinosaurs and will not meet Jimmi Hendrix.
The idea is that all the new “Leonardo the Turtle” type technologies are no longer being pushed as solutions looking for a problem, or some sort of abstract concept (which is what they appeared to be when first announced) but are rather embedded within everything SAP does.
It was mentioned in the follow up sessions that the demonstrations in the keynote jumped between different systems – S/4 HANA, Concur, SuccessFactors etc. but you could not tell as they all had a uniform UI5 look and feel and you did not have to log in when jumping from one system to another. When you acquire a whole bunch of disparate companies seamlessly integrating them all is an enormous challenge and I think SAP have delivered the goods here, at least that is the way it looks on the surface.
There is nothing new under the sun and so what jumped out at me is that SAP have proudly discovered business workflow and batch input recording. This time though instead of recording the steps of a transaction in the SAP GUI and generating a function module full of BDC code which you then parameterise, like you did in 1997, you record steps in the browser and then generate something you can then parameterise. You can then have co-pilot (SAP version of Alexa) learn to perform that task when the user asks for it, or in response to an event.
Much was made of the event driven architecture, and how an event could trigger a series of steps to be performed automatically by the system – just like business workflow could do in 1997. Obviously the technology is far better than it was in 1997 but the actual underlying theory – responding to events & recording manual steps – has not changed at all.
Then there was a special guest star – Alyssa Carlson or “Blueberry” who is the youngest NASA astronaut in training. She is currently 17 and is going to Mars in 2033. She already speaks a whole bunch of languages and is currently learning Russian, which is mandatory for anyone in NASA who wishes to go into space.
Myself and Stevie Winwood
ABAP in the Cloud Workshop
The idea of ABAP in the Cloud is that you have a separate environment to develop in – separate that is from the core SAP ERP system. That way all the core code and tables live in one HANA database, all the Z code and Z tables live in another HANA database. The two systems then talk to each other using “white listed” APIs.
This workshop was intended to give one an idea of how to set up an ABAP in the Cloud environment – user roles and so on, and then do some basic things like writing a “hello world” program, and exposing a CDS view so it can be consumed by a UI5 application.
I was quite interested in which standard SAP function modules and classes you can use – only about 200 odd at the moment, and most of those are brand new. No more picking any standard SAP function module you feel like released or not (and most are not released as we know).
Also the usage of abapGit as the mechanism for importing code into a transport request was another exercise. As I understand it there is no change and transport system anymore, but you still have transport requests, which are a collection of Z objects which then get pushed to a Git repository when you release the transport.
The other point to note is that many tasks you are used to do solely within SAP are now split between the ABAP in the Cloud environment and the Cloud Cockpit. For example you create the CDS view in the ABAP in the Cloud, expose it as a service, and then jump into the Cloud Cockpit to make a “communication arrangement” which can then in turn be used by the SAP Web IDE to generate a UI5 application which can be deployed somewhere. So, at first glance a lot more complicated than writing a program and then assigning a transaction code, at least in regard to the number of systems involved.
QUnit / OPA5
I have been talking about unit testing in ABAP throughout the whole of 2018, and indeed for years before that. This year was the open SAP course on TDD and ABAP Unit, and I have given speeches at various SAP inside tracks e.g. Hamburg, Rome and to assorted other interested parties.
There is some documentation about this (QUnit / OPA5 not Frank Zappa) on the official UI5 site, but I never really understood it, the concepts seemed too far removed from what I had been experiencing with ABAP Unit.
QUnit on its own tests individual functions, and OPA5 is an extension of QUnit where you simulate what the user is doing. Pressing buttons and entering things on the screen to get the application to do something is called a “journey” apparently. So an OPA5 test simulates the user doing this journey, so it is an integration test rather than a unit test and before the test results flashed up I could see the screen for a split second with the cursor moving around by itself simulating the user. OPA5 was invented by chat show host OPA5 Winfrey.
You have to do create a lot more files and things to get the tests working than you are used to doing in ABAP (if you are one of the very few using ABAP Unit) but that is just a question of getting used to new syntax which is also going to be the case with unfamiliar languages.
The point to note is that all those files and things I refer to get generated automatically by the SAP Web IDE with skeleton implementations.
BEER! BEER! BEER! BEER!
Myself and a picture of Stevie Winwood
RAP Overview + Technical Deep Dive
ABAP in the Cloud is the technical platform in which you write code, the RAP (RESTful ABAP Programming Model) is HOW you write that code.
In 2018 the initial version of the RAP is aimed at S/4 HANA in the Cloud – hereafter to be referred to as Cloud RAP. In 2019 the aim is to have both the ability for ABAP in the Cloud to be able to communicate with an S/4 HANA on-premise system, and also to have the RAP available in the actual ABAP stack of the S/4 HANA on-premise system.
In 2020 the aim is to have some sort of in-built integration with applications based on current “best practice” which uses BOPF for the business logic i.e. an integration between RAP and BOPF. The important point to note is that whilst SAP guarantees any investment in BOPF will not be wasted, it is in maintenance mode as of right now, and going forward no new developments will use BOPF. This puts customers in between a rock and a hard place as on the one hand they are being pushed to use BOPF as part of the “Fiori Programming Model” and on the other hand we know for a fact BOPF is obsolete.
However as 95% of ABAP programmers have not even heard of BOPF yet the whole thing is a bit of a moot point. If I had to guess I would say even now most new applications are written using classic DYNPRO. For example what am I going to be doing tomorrow at work? I will be replacing a function module using REUSE_ALV_GRID with a class that uses CL_GUI_ALV_GRID and that is considered horrifyingly modern.
Moving onto CDS Views (which 95% of ABAP programmers have not heard of either BOPF or CDS Views and maybe not even UI5) up until now the idea was to have the appearance of the UI controlled by writing annotations in the CDS View (data model). Bucket loads of annotations, dozens per field, just like in the ALV field catalogue, sort catalogue etc.
Some people (like me) wondered if a database view should really be saying which of its fields should be displayed third, or have a filter on it, and so on. This implies the data model knows how it is going to be used which sort of throws the separation of concerns idea out of the window. I am OK with an application specific model having control over such things, as it is application specific, but the database?
SAP have made much of how CDS Views are “Massively re-usable”. Why did the Lion get lost? Because “Jungle is Massive”. The funny thing is in the very same slide (some years back) where this statement was made (not about the Lion, about CDS Views being re-usable) the slide showed what looked like the Milky Way. In fact each dot represented a CDS View that had been created in the standard SAP system. Furthermore hundreds were getting added every day.
The question would have to be – if something is massively re-usable, then why do you need more of them then there are stars in the sky?
Anyway SAP has recognised the separation of concerns problem – at time of writing the current solution is to use “metadata extensions” – you have separate files full of annotations which can over-ride the annotations in the CDS View. There are four levels – standard, industry, partner and customer – where each one can over-ride the ones to the left of them in the list. It could be argued that is not enough flexibility, and you still have the annotations in the CDS View.
So in the future there will be a WYSIWYG visual editor, rather like the good old DYNPRO graphical screen painter, where you drag things around and this generates a file of annotations which by its very nature would be application specific, and hopefully removes the tedium of manually writing bucket loads of what is effectively boiler plate code in your CDS Views.
The point is that just like the BOPF the idea of putting UI annotations in the database level will have come and gone before the vast majority of ABAP programmers even knew it was there.
I always feel sorry for the presenter when a demo goes wrong. In this case he had the object open for editing in the SAP GUI and coded the LOCK method in the RAP. He then opened up the UI5 application and chose the same object and pressed EDIT expecting to get an error message. He did not and the fields were open for changing.
He found this very puzzling and then worked it out – in the RAP the lock error message only pops up when you press SAVE after having spent ages changing the values of the fields. I talked to various people about whether they thought this was proper behaviour and everyone said yes it was, but I don’t think so, maybe I have spent too much time in the SAP GUI.
Apparently you get around this in web applications by having an ETAG. In Sydney that is a thing you stick inside the windscreen and it notes how may toll roads you drive down (lots of them in Sydney) and charges you accordingly. In the web world it says when the object was last changed.
Hopefully that means if the customer phones up and says increase the quantity from 1 to 5, and someone opens the object in change mode and forgets to save it, and the customer phones up ten minutes later and says change the quantity to 10, and another person takes the call and changes the value to ten and saves it, and then the first order taker comes back from the toilet and presses SAVE the quantity will not go back down to 5 because of the ETAG thing. I hope. I still have not worked out if this works by black magic in the RAP or if you have to code something yourself.
We love three letter acronyms and now with the Cloud RAP we have not only DDL (Data Definition Language) but BDL (Business Definition Language) and EML (Entity Manipulation Language) and ELO (Electric Light Orchestra).
A BDL just lists what CRUD operations can be performed on an entity (business object – like a sales order or monster) plus custom actions (user commands).
The EML is new syntax in ABAP. In the past you had either separate BAPIs for the CRUD operations or methods of a Z class, or all sorts of shenanigans for the BOPF.
Now you can say MODIFY ENTITY zcds_monster CREATE FROM VALUE #(…. Straight from your program, though at the moment you still have to manually code the CRUD methods that get called as a result, so as yet that is not much of a difference, in fact none at all.
That just updates the data in memory, to update the database you say COMMIT ENTITIES RESPONSE OF zcds_monster and then get the result in various internal tables.
In UI5 applications you do not need to code even that, the framework does the hard yards when you press the EDIT or CREATE or SAVE buttons.
One thing I will say is that the unit test class in the demo appeared to actually be updating the database. I have seen that before in standard SAP examples of unit tests. I understand they are just trying to demonstrate a concept – in this case the new syntax – but it still gives people the wrong idea about what unit tests should be doing.
SAP Usability Test – SAP Web IDE
When you go to SAP TechEd you can sign up to take part in SAP usability testing where you get to see a prototype of a new SAP product and you are given tasks to do on that product without being told how to do them, whilst your screen gets recorded ad SAP people take notes on how difficult you find it. The idea is that after lots of such tests the bugs get ironed out and the non-intuitive things replaced with obvious things, and so the end product turns a lot better.
You should in fact be doing this with all the custom Z ABAP products you develop as well…
To take part in such a test you have to sign a secrecy form, so I cannot talk about what I saw, but the concept of usability tests is not a secret, in fact I think it is one of the best things at TechEd and encourage everyone to try and have a go if they can, though of course space is limited. It is also probably not a secret that SAP are constantly trying to improve the SAP web IDE in the same way they constantly try and improve all new things.
Developer Hero Interview
All throughout the TechEd event you saw cameras roaming all over the show floor and assorted video interviews in progress. These then get published on the web.
Here is one of me getting interviewed:-
BEER! BEER! BEER! BEER!
Barcelona TechEd Dustbin (Stevie Winwood is hiding behind the pillar)
This session was all about coding Fiori applications, always an interesting subject. The presenter was most apologetic that lots of what he was showing was not released yet and would get released between Nov 18 and Feb 19. However that is not actually that far off all things considered – often at TechEd I see things I will not be able to use in real life for 5 to 10 years, mainly due to the need to upgrade the back end system.
Fiori is a front end thing by contrast, the idea being to decouple the UI technology that changes incredibly fast from the back end which changes very slowly.
The releases of Fiori have changed from quarterly to monthly – for cloud customers. Hello I thought if there is no dependency on the back end ERP version then why does it matter if I am Cloud or on-premise? So there must be some sort of dependency.
As I understand it a “control” is something like a checkbox, a “Simple Simon” control is one that you code manually, and a “Get Smart” control works off the annotations in your CDS View definition and dynamically changes the UI layout at runtime.
The presenter pointed out you therefore had a choice – code everything yourself and have unlimited flexibility, or have everything generated for you which is really easy but then you cannot mess about with it, which is always why developers spit on generated code and the horse it rode in on.
They want, ideally the best of both worlds – generate the code in the first place so as to avoid having to manually code lots of boilerplate code, and then be able to mess about with the end result so as to change anything you want. The example in the past I can think of is the table control generator in old fashioned DYNPRO programs. The point is the generated code will NEVER be good enough for the end users, they will always want something more.
SAP realise this and I came away with the impression that such a “hybrid” approach is sort of possible now, but not very easy, and SAP are working on making it much easier in the future.
The second part of the presentation focused on manual programming as opposed to generated code and was all about “composite controls”. This is where you have one control which is a box (say) and inside it are various other controls like input fields and buttons and whatever. Apparently coding theses is a lot of effort at the moment.
Apropos of nothing I also notice asterisks on the slides whenever the “Cloud Application Programming Model” was mentioned, and at the bottom the disclaimer was saying “this name will change”. Really? SAP changing the name of something? Who would have thought?
My proposal is that if SAP want to change the name of the CAP then perhaps “Andy CAP” could be the new name. For those not from Europe Andy Capp is a cartoon character in the UK, and also in Germany, though he is not called Andy Capp there but instead has a name that makes UK people burst into laughter when they here it.
Interview – is ABAP Dead?
This time it was my go at interviewing somebody. The idea was to take an ABAPOSAURAUS like me (to use Jelena’s term) who has been programming in ABAP since 1997, and get them to interview a young person who has only just started in IT world and programs in ABAP, thus proving ABAP is not dead.
Now I was not in charge of finding someone young, and there were lots of young people about, but finding someone young who programs in ABAP on a day to day basis, if at all, proved a little more difficult than we might have thought initially.
As I said at the time “We are trying to prove ABAP is not dead. If we cannot find anyone young who actually uses the language then that fact probably answers the question all by itself”.
However all turned out well as can be seen in the following video:-
Usability test – WYSIWYG
I talked about the usability test concept before. As I said I cannot talk about what I saw, but the public presentations all talked about the fact that a visual editor for the Fiori UI is coming where you can drag things all over the screen and annotations get generated, so the tool as a whole is not a secret squirrel type of thing.
The fact that SAP even have a working prototype means this is not just a glint in the milkman’s eye, but rather something that will be arriving in the not too distant future.
This was mostly secret squirrel stuff where people from SAP showed us Mentors brand new secret things to get our feedback. People often wonder what it is the Mentors do, and it has been a bit nebulous in the past, but it is a lot clearer now that Craig took over – we are there to provide independent feedback to SAP to tell them when they are being silly, which is more often than you might think, or maybe you are not shocked at all, so the silliness gets stopped before it reaches the paying customer.
BEER! BEER! BEER! BEER!
Fun fact – if you asked for a lemonade in the UK, the USA and Australia you would get a completely different drink each time. I now know that Poland has yet another sort – and that one is 30% by volume.
Let’s do it all again next year! TechEd that is not the Polish lemonade, though I suppose I could easily do both.
PS On the Friday was SAP Inside Track Barcelona. If I had bothered to research that fact I would have stayed the extra day…
Can I start a chant - WYSIWYG! WYSIWYG! WYSIWYG!
I've been trying to write a SAPGUI5 program complete with screens. And then I run out of time, and it's back to SAPGUI and classic dynpro or an ALV depending on the need. It's easy enough to make that a tile. (Maybe too easy)
I have been playing with the build.me app. I haven't had the time to upload the bass code to WEBIDE. I'm hoping that will jump start my applications. Sigh, no matter what until I start doing something else I'll be quicker in core ABAP type stuff.
I miss WebDynpro. OK so my boss hates it, and I didn't get to use it in this job. But the WYSIWYG is perfect!
Build is so NOO for me.. Believe me, Its better and easier to write the CDS view with some default annotations and you will get the fiori app in no time and that too with Transaction capabilities 😀 . I was hating this concept(because we don't need to code much) but coming to terms with it lately 😀
Thanks for sharing your insights from TechEd - I did not get it all but I am not a technical person 😉
Just wanted to send you this one: https://wiki.scn.sap.com/wiki/display/events/SAP+Inside+Track
Here you can find all SAP Inside Tracks so that it's easy for you to choose the one you want to attend.
Hope to see you next time - at TechEd or any SIT.
Very informative blog!!
Funny that you mentioned an Easter egg in this blog “ELO (Electric Light Orchestra)”, not sure how many people got that joke ? .. I stopped for a second there and googled, just to confirm that it is not really some new concept that SAP has introduced ? ? . Cannot blame anyone as many new things are going in SAP lately! But it sure is funny ? ?
BTW, ETAGs have been there with SAP for quite sometime having very good integration with UI5 and OData services(you do not really need to write any code there). But with ABAP programming model for Fiori, it is even more easier, it’s just an annotation away(atleast with draft capable app).
I guess even RAP will have that(as it is a very basic and easy to implement concept), maybe it is just not showed in the demo.
Also, will the BOPF still be available as part of RAP, like it will be used internally by SAP and will be given to us as the behaviour definition?
Or it is just that SAP is totally removing BOPF out of the picture here and if yes, what is the reason? is due to poor performance or something else?
In regard to BOPF my understanding is it will not exist at all in the future, but SAP will provide tools to migrate your existing BOPF objects across to the new concept.
The arguments I have heard against BOPF were that it reied too much on generated code (the new version does the same sort of thing really, but hides the boiler plate code in the kernel) and had generic interfaces for business objects TYPE REF TO DATA and the like, which could not be checked by the compiler. I would have to say from a personal point of view it was too over-complicated, which is why I wrote my own wrapper classes to automate certain boiler plate tasks.
However the underlying concept was sound, and remains in place in the RAP. In summary the WHAT remains the same, the HOW totally changes.