SAP Inside Track Walldorf 2019
On the 26th of January 2019 there was SAP Inside Track in Walldorf, in one of the SAP buildings at its headquarters. As the SAP complex covers approximately ten times the area of New York City it was quite difficult to find, but I got there in the end.
Aliens abduct the Dustbins from SAP HQ
Initially I found myself inside “Hasso Plattner Ring” but that was wrong, I shouldn’t have been up there, I should have been up “SAP Back Alley” which was where the target building was.
This was a very big event by SAP Inside Track standards, and the children’s event was even bigger. If you went upstairs you had to dodge robots and remote control helicopters and a big sign saying “Beware of the Parrot”.
There were three tracks, but luckily there was never a time I needed to be in two places at once, so these are the ones I went to:-
Keynote – Open Source – Frank Kohntopp
It is said the human brain can only remember three things from any speech, and in fact I can only recall three points from this, but I think they were the important ones.
Firstly we have now got to the stage where, on average, 80% of the code used by companies is now open source. That does not surprise me in the least, what does surprise me are organisations that will not accept open source ABAP projects like ABAP2XLSX or abapGit because they are “open source” and supported by the community as opposed to SAP. This is the good old “ABAP is a Special Snowflake” attitude which needs to be consigned to the past.
I can picture the ABAP developer who asked to install ABAP2XLSX getting the rejection message saying “we don’t do open source at our company” via some sort of open source based messaging system.
Anyway the second point was that the 80% of your code which is open source is not actually very secure, because there are so many different contributors and most of them don’t give two hoops about security, and some of them are not much good.
However there are a bucket load of tools out there to scan open source code for security problems, SAP have a huge team doing just that on the open source stuff they use, and generally for pretty much every open source project someone is doing the same and making security fixes.
The last point is since a new security problem crops up every single day, the only way round it is to update your open source software to the latest version pretty much all the time … this is being pre-emptive, as you don’t want to wait until the burglar is in the house before fixes the locks.
Co-Operation – Volker Stoffler
Volker is a database expert, but this talk was all about philosophy, it is quite good to mix in a few non-technical subjects at these conferences.
Specifically this was all about the benefits of co-operation, which I suppose relates to open source software in a way. He went from the theory to mathematical models, and then how those models relate to real life.
In addition his business cards had magnifying glasses and rulers built into them.
Code conversion for S/4 HANA – Ingo Brauinger / Thomas Fieldler
I have been talking about this subject myself at SAP events for some years now – I did a talk about this at SAP TechEd 2017 for example – but there is always something new to learn.
The first step preparing your system for the new implementation (it is not an upgrade in any sense) is to find out the 60%-80% of your custom code that never gets used. The tool for this used to be UPL but now it is SCMON and next year it will be something else yet again no doubt. The important new thing is you no longer need the Solution Manager to do this, you can do it straight from your production system.
The main thing being demonstrated here was the conversion cockpit, but unless I got everything upside down you cannot use it until after you are already on S/4 HANA which sort of defeats the purpose.
In any live demo the presenter is bound to get into trouble every so often, in this case he fell victim to a lunatic UI design decision by SAP which I have seen time and time again, notably in the MDG system.
This is the wonderful idea of having the “delete” button right next to the “refresh” button. So naturally when he wanted to refresh the display he accidently pressed the “delete’ button. Luckily there was an “are you sure?” prompt. That did not used to be the case in MDG some years back. The SAP GUI analogy is in STMS where the “transport selected” and “transport everything” button are right next door to each other and if you press the wrong half a million transports full of untested code go to production at once, as opposed to the normal practice of just transporting small lots of untested code to production.
Anyway they (SAP) want you to do the ADT (code inspector) checks inside ABAP in Eclipse, as that gives you “quick fixes” where really common problems (the problem being cod which would not work properly or at all in /4 HANA) can be fixed at the press of a button. In fact if you get six hundred bits of code with the same problem you can do a mass fix on them all at once.
There have only been two of these quick fixes thus far – the “ORDER BY” problem where you get records back from the database and do not sort them and the problem where you don’t type your material variable as MATNR but CHAR18 or something like that. Both cause grief in S/4 HANA.
The new quick fixes relate to tables that do not exist anymore – KONV / VBUK / VBUP and BSEG.
I am not 100% sure of the nature of the quick fixes in this area but I got a glimpse of what a direct read on KONV got replaced with, and it was loads of lines of code that look like nothing on Earth. I would note that these are just to keep your code working after the conversion (re-implementation). In the longer term you would have to look at getting a better way to retrieve the data based on the new data model which has a lot less database tables.
Then it was time for us all to go outside and form a huge queue in the sub-zero temperature to get the burger van. I can’t really complain (they were free after all) and the children had a great time throwing snowballs at each other.
Kati with her burger
Relaxation – Svea Becker
This was actually one of the best bits of the day. Svea got us all in a big circle in the canteen, and we did the Twist to some music and then a whole bunch of stretching type exercises to free up the energy gates that live inside the human body. This was meant to relax us and give us more focus – and it worked!
RESTful Cloud RAP – Andre Fischer and Carine Tchoutouo
I hope that many of you know by now that the next evolutionary leap in the ABAP language is to the “RESTful ABAP Programming Model” which for now only lives in “ABAP in the Cloud” but will be coming to S/4 HANA on premise in due course.
It is in pretty much a Beta 1.0 form at the moment, but the improvements that occur week by week are quite noticeable. As an example I saw a presentation on it at DKOM two weeks ago, and in that two week period I noticed some new things had crept into the slides.
I cannot recall if this is new but there are now three different scenarios – the unmanaged scenario where you code all the transactional behaviour yourself, the managed scenario (not available yet) where the bog standard things CRUD + SAVE) are generated for you, and a hybrid scenario (not available yet) where the CRUD is generated but you code the SAVE yourself. In actual fact most programmers I know like to code everything themselves.
The “business definition” is where you define what things a business object (like a sales order or a monster) can do e.g. the CRUD operations and any “actions” (user commands).
I would note that were some gaping holes in the initial version – naturally – and they are being rapidly plugged, I cannot go into exact details as some of it is secret squirrel but I can assure you that it is the case.
I was very happy to see the vast bulk of the UI annotations living in a “metadata extension” which is great because then you decouple the underlying base CDS view from the UI layer, and that makes the CDS view re-usable, which SAP always said it was, but I could never see it. I was always very dubious with the idea of a data model knowing how it was going to be used.
Next was a subject I was always very interested in, and had never had a good answer before. Apparently there was a talk on this subject at TechEd but I somehow missed it. There are so many sessions some are always going to get lost in the forest.
What subject? I hear you ask. This is how to get data from the ERP system into ABAP in the Cloud. You can no longer do a direct SELECT out of KNA1 (for example) or do something programmatically to update the data in the standard SAP system. You have to communicate via white listed APIs. How does that work then? I never had the slightest idea until now.
In the future ABAP in the Cloud will be able to call RFC enabled function modules (which means you could use ABAP in the Cloud with your ECC6.0 system as a side effect) so then you could call BAPIs just like you do now. BAPIs never achieved the goals they were created for, but as long as they are wrapped in a class to disguise their true horror, then at least they get the job done. The only trouble is SAP never created BAPIs for the full range of business objects and they all have restricted functionality compared to doing a BDC which is criminal as it makes people do BDC’s, but I suppose it was “impossible”.
In any event there is a new object in ABAP in Eclipse called a “ODATA Client Proxy” so you call it ZSD_CP_MONSTER or some such. This takes a SEGW entity in the ERP system, and in ABAP in the Cloud creates “fake” CDS views in the ABAP in the Cloud system.
You then (in ABAP in the Cloud) create a real CDS view where you say “DEFINE CUSTOM ENTITY” and add the annotation @QUERY IMPLEMENTED BY (CLASS_NAME).
In the class you then use interfaces like IF_A4C_RAP_QUERY_PROVIDER and classes like CL_WEB_ODATA_FACTORY to interact with the SEGW entity in the ERP system.
Horrendously complicated at first glance, and of course you need a standard SAP SEGW entity to connect to as far as I can see. If I could create SEGW entities in the ERP system in the first place then I wouldn’t need any of this, but of course in the S/4 HANA cloud you cannot touch the apple core.
In Just 5 Days I can make you a Lego Man (with SAP) – Twan Van Den Broek
This was all about Lego, which was a running theme throughout this conference. Twan had given himself five days to build a really complicated truck out of Lego, whilst still doing his day job. He made it, as the Truck was on stage with him.
The point of the talk is that SAP is famous for getting customers to sign up for two year projects, two years before they see anything meaningful. This is also the traditional way companies that implement SAP have done internal projects as well.
In this new “agile” world this is a no-no so SAP now have the “Mobile Innovation Lab” which is a shipping container. It is dumped outside the customer’s office on Monday morning and the customer team work with SAP in the container that week, and by Friday afternoon they have a working prototype of whatever it is they asked for in the first place.
This is done using the good old RUGBY SCRUM BAG methodology in his case having five one day SPRINTS with a demo at the end of each day of what the prototype looks like.
Twan says this was all enabled by “LEGONARDO” which is a much better product name than the real one.
He gave three case studies, and as an aside it looks like nothing created these days can live without machine learning and AI in some from e.g. image recognition.
Lego and the SAP Cloud Platform – Phillip Lindenberger
There is clearly an informal partnership between SAP and Lego. I know that Lego runs SAP as I encountered some ABAP programmers from Lego at an SAP conference some years back, and one of the SAP Mentors has just gone to work for them.
What I did not realise is that Lego has three products intended to help children learn programming – you build a robot out of Lego so it looks however you want it to, and then you program it, so it acts however you want it to – two products are aimed at the 7+ age group, and one is aimed at the 10+ age group. The latter is quite pricy (400 Euros) but I suppose if it gets your child interested in programming before they are even a teenager that can only be a good thing. I was certainly at my programming best at age 14, I have to make up for that now with “experience”. The thing is back then no-one had told me what was impossible, so I could make the computer do anything I felt like, even with only 16K (or indeed 1K at the start) of RAM. Emails are bigger than 16K these days.
Anyway in this talk an intern from SAP demonstrated how he linked a Lego robot to his mobile device using a Leonardo IOT Cloud Service thing on the SCP. It looked really over-complicated to me, but I suppose the point is that the idea is to have fun – for example the worldwide community (it is amazing that there is a worldwide community looking at new ways to program Lego robots) found a way to hack the Lego API to make it do things it was not supposed to, and this even made it to a university research paper.
The Hitch Hikers guide to SAP NetWeaver – Roland Kramer
This was brilliant. NetWeaver in this case was discussed in its role as the backbone of BW systems, and Roland gave a history of all the stupid bone headed decisions that SAP as a company had made as the NetWeaver platform evolved over time.
He really laid into them, that was what was great, and he works for SAP. I asked him if he would get in trouble but he said that it was (a) all true (not that this usually matters, sometimes people do not want you to tell the awful truth) and (b) his management was more understanding than you might think, and were actually in the audience.
As an example he talked about the disaster in 2007 that was having a dual stack implementation (ABAP and Java) for some products (like XI/PI). I knew that was trouble, at an XI training course I went on the two halves of the “rain” stopped talking to each other. That was really embarrassing for the presenter – he was trying to sell a middleware system, and the middleware system could not even talk to itself, much less other systems.
As another symptom this meant that for all intents and purposes you could not upgrade the Solution Manager system, you had to do a new installation. That is what the BASIS people where I work in Australia had always done, and I had vaguely wondered why
As an aside he says people always ask him “Why do you still need BW in the HANA world?” He says there are two main reasons:-
- Historical data. You really do not want thirty years of history in your transactional system.
- This can be quite intensive both in terms of memory and processing and once again is best not done in the transactional system.
Talking about planning this brings us to the nightmare which is SEM (Strategic Enterprise Management).Back round about 2001/2002 I had the pleasure to be on a project to implement SEM at my company – we were one of the first two to do this in Australia (the other was the Department of Defence) and we were ramp-up customers. Never again. In ramp-up nothing at all works, and it does not matter if you have someone from SAP with you reporting all the bugs back to Walldorf every evening. In the end the business does not understand you are on a ramp up project and eventually asks “Where is my budget tool then? It is budget time!” We went through one cycle of budgeting using the thing and then threw it away. I was quite proud however of the interface I wrote to use IDOCS to get the budget data out of SEM and back into ERP so it could be displayed in reports.
That bit worked really well – there was no integration at all between the two products back then – far better than the advice from the consultants to make the transfer by downloading and uploading CSV files. Still that was just me playing really, learning how to create and process 100% custom IDOCS.
So I forgot all about SEM and did not realise what an albatross around the neck of SAP it later became. I imagine that after a very short while SAP realised they were not selling very many licences for this “New Dimension” product SEM and so decided to embed it in the ERP system, where it sits to this day, The problem is it really lives in the BW system as opposed to the ERP system. So if you have the SEM add-on in your BW system and want to upgrade then you need to install the latest version of an ERP component – namely SEM and that often requires other ERP specific components as well.
As a result two planned releases of NetWeaver – 7.01 and 7.20 – were never released because on both occasions the need for an SEM add-on was forgotten. That almost stopped the release of NetWeaver 7.30 as well.
There were lots of other silly things SAP did through the ages he pointed out, but that is enough slagging for now.
As a last point you may have heard of when companies launch a product or an advertising campaign in a foreign country and do not understand the language and so the product name is rude and/or offensive in the target countries language. There was a car launched in Japan and when the English name was translated it came out as “Does Not Work” or some such. Last year Coca Cola decided to do the following:-
Coca-Cola’s attempts to combine te reo Māori and English has backfired badly, with the company inadvertently writing “Hello, Death” on a vending machine in New Zealand stocked full of the drink.
Where was he going with this? Why none other than SAP’s favourite slogan.
RUN SIMPLE – when you translate that into German word for word it comes out “Get out of here, Fool!” due to “simple” always meaning “simple minded”. Earlier in this blog I talked about the road at the Walldorf SAP campus called “Hasso Plattner Ring” – that does not come out in English too well either.
ABAP Continuous Integration Plug-In – Andreas Gautsch
The thing about ABAP in Eclipse is that if you are not happy with the development environment as given to you, then write your own plug-in to fill whatever gaps you feel there are, and then share that pug-in with the world. The world might even help your improve it, which is what open source projects are all about, coming back to the benefits of co-operation once again.
In this case the starting point was that Andreas liked ABAP in Eclipse because you saw the syntax errors instantly as red blobs on the left of the code with the error – in SE80 you have to press a button to do the syntax check, something I do hundreds of times a day. It is such a minor thing but his view is that every second counts, every wasted button click counts.
So his CI plug-in – amongst other things – enhances the ACTIVATE button so that does a pretty print (so you do not have to press a button to do this, again something I do hundreds of times a day) and then runs the static ATC checks without having to press a button (not everyone does the static ATC checks all the time) and then runs the unit tests without having to press a button (hardly anyone uses unit tests) and for the latter two you get a coloured rectangle in the bottom left of the screen and clicking on it takes you to the problem area. None of this is something that SE80 cannot do, he is just automating it. You can also set it to automatically delete unused variables if you so desire, whenever ACTIVATE is pressed.
There is no conflict with abapGit here at all, you are just doing a bunch of checks all the time, before you push your changes to GitHub and have the code undergo another bunch of quality checks at that point. All this attention to quality is a bit of a new thing in the ABAP world, sadly.
Just as an aside, whilst demonstrating the ATC checks there was a check I had not noticed that you can switch on, which gives an error if it finds commented out code. I find that wonderful, I am with Robert Martin here, the version control system remembers code you delete, there is no need to end up in the situation where you have fifty lines of commented out code for each line of live code, with some of the commented out code being twenty years old.
Anyway, Andreas has another ABAP in Eclipse plug-in he is also working on (these are free, just go to the Eclipse marketplace and search for ABAP) called “Code Insight” and what this does is to automatically add the signature to local methods in ABAP as a comment above the implementation (I had been doing this manually for years) and as a bonus getting the “where-used” list to add another bit to the comment saying from how many places (if any) that method is called.
SIT Kids Presentation
To end the event the children lined up to demonstrate the projects they had been working on during the day.
So you had robots dancing around singing “Twinkle Twinkle Little Star” and a robot that danced along as a boy played his toy guitar, a piano with bananas as the keys, and so on.
Some children had been introduced to the SNAP programming language which as I understand it is a visual programming language which gets you used to the idea of programming before you get into something more complicated. Anyway they demonstrated their programs which drew spirals or other patterns of geometric shapes.
Then there was some free beer (not for the children) provided by one of the sponsors, Espresso Tutorials.
This was at the “Old Slaughterhouse” in Weisloch and I even managed to order my meal in German. Weisloch is famous for being the place where a car was filled up with petrol at a petrol station for the first time ever. Somewhere had to be first. The lady in question driving the car was Bertha Benz, as in Mercedes Benz.
Lego Stevie Winwood programming in ABAP
This was a great event. There are SAP Inside Tracks every month now all over the world – sometimes every week in fact – and more all the time. I would highly recommended trying to find out if there is one in your area and going along to see what they are like.
I would just like to say the "edit" feature for SCN blogs is not optimal. I went in to correct a spelling mistake and all the formatting and line breaks vanished.
I managed to get all the formatting and breaks between paragraphs back by deleting everything and starting again. I do not think I will be trying to correct any more spelling mistakes in the future...
Don't get me started on commented-out code!
There's a standard ATC check for it, been around for a while. But as it's an imprecise science it's not that prominent and (unfortunately) not mandatory.
Metrics and Statistics > Comment Language Metrics.
At first glance you may be fooled into thinking it's for detecting comments in German and other foreign languages. But it also has a specific checkbox for warning on "Out commented ABAP". Works reasonably well.
I have to say that I do not know the details about the “Comment language metrics” check of the standard ATC checks.
In my speech I referred to some ATC checks of the https://github.com/larshp/abapOpenChecks project.
One of them is to check for commented code (also if it includes new ABAP language constructs). But there is also a bunch of others (for example checks for empty methods or usage of obsolete language constructs).
Nevertheless from my point of view outcommented code is a perfect example for “if not fixed now its not*) fixed later”. And thats one of the core targets of my plugin: to draw the attention to an outcommented code line during the activation step and not days later when the transport is checked for release, probably by someone else.
*) edited after answer
I am well familiar with abapOpenChecks. The two checks are a little different, the SAP one is more statistical, and their implementation also differs. So in a way they complement each other very nicely.
But there are still sites out there where Eclipse is something that happens to the moon occasionally and a git is a horrible person. So it's useful to know that anyone can just run the SAP check out the box without any extra effort.
I think it's more a case of "if not fixed now it will never be fixed" 🙂
Good points, the important thing is that there is a path to get the desired ATC checks with or without Open Source.
And thanks for pointing out that I forgot an important "not" in my comment 🙂
Thanks very much for mentioned my part as "best bits of the day" - that makes me proud and even convinced me that soft skills should be part of SAP Inside Tracks! I am thinking about suggesting it at sitMAI...
Hope to see you in my next session somewhere in the world 😉