Personal Insights
The Rappy Horror abapGiture Show – Part Eight
NARRATOR: As you will probably be aware by now, the two biggest things happening in the SAP world are the introduction of the Cloud RAP (Restful ABAP Programming Model) and abapGit for version management, hence the title of this blog series, which narrates a horror story concerning both new concepts.
The night before the publication of the “ABAP to the Future 3” book two horrible things were happening simultaneously. First of all the author was writing the book in the first place, and if that was not bad enough in and off itself……
https://blogs.sap.com/2019/02/26/the-rappy-horror-abapgit-ture-show/
https://blogs.sap.com/2019/03/05/the-rappy-horror-abapgiture-show-part-two/
https://blogs.sap.com/2019/03/12/the-rappy-horror-abapgiture-show-part-three/
https://blogs.sap.com/2019/03/19/the-rappy-horror-abapgiture-show-part-four/
https://blogs.sap.com/2019/03/26/the-rappy-horror-abapgiture-show-part-five/
https://blogs.sap.com/2019/04/02/the-rappy-horror-abapgiture-show-part-six/
https://blogs.sap.com/2019/04/09/the-rappy-horror-abapgitture-show-part-seven/
NARRATOR: When we last left things on that – fateful – night (which is now the morning of the day on which the SAP Press Gala party will be held in the evening). The author was five sixths of the way through preparing the downloadable code of the book, and had actually entered Castle Frankenstein, as had Professor Hasso Plattner. The Baron had turned everyone into statues in preparation for the “Floorplan Manager Show” whatever that might be. Here we go with the final episode of the waking nightmare which is the “Rappy Horror abapGiture Show”…..
BARON FRANKENSTEIN: I get to go first this week! That’s because I have turned everyone else into statues so they cannot say anything! My monsters have prepared the stage for the “Floorplan Manager Show” which is the epic finale to the whole series of blog posts about “ABAP to the Future Part 3: Fifty Shades of ABAP”. That book is all about ME with some passing references to SAP technology.
My monsters have moved all the statues onto the stage, and I will bring them back to life as needed. Eventually we can all go to the SAP Press Gala Party (I love such parties and have bought a new frock specifically for it) in the self-driving autonomous private jet which is currently parked in the courtyard of Castle Frankenstein, but not before everybody has SUNG AND DANCED!
OK, first off I will bring PDH back to life so he can spout the obligatory SAP based nonsense without which the blog cannot exist, and then afterwards we can get back to the serious business of singing and dancing.
(Points gun at statue of PDH. Fires – ZAP! – he comes back to life)
PDH: Thanks for that – I think. I’ve already picked my song, it is the song I sung in a blog the day before SAP Press first contacted me in 2014, updated to incorporate recent technological developments. Amazingly it is just like my day job, our CIO in Australia insists everybody sings Karaoke at every one of our company events. He rarely turns employees into statues however.
Die Another WDA
Step thirty one is to “Create WDA versions of applications”. As mentioned last week, for all three applications – Monster Atrocity Due List, Missing Monster List & Monster Atrocity Monitor – the application model is the exact same one as was used for the ALV version of the application, but the controller and view are different because the user interface technology is different. The WDA framework has views and controllers, though just to be awkward it calls everything a controller, but does not really have a proper place for the model to live, but I ram the model down it’s throat anyway.
I generally aim to have as little “smarts” in the view as I possibly can, and in addition I do not want the model and view to know anything about each other at all. That is by no means a universal view – a large number of diagrams of the MVC pattern have arrows going directly between the model and the view. Maybe I am barking at the moon, free energy crazy, but my idea is that if the view is 100% decoupled from the model then it is easier to switch out the view when a new UI technology comes along. Naturally, you might arrange things so the view sends data to the model via events, thus not having to know about the model, but then the model would have to subscribe to such events, it would need to know there was a view sending such events, need to know something about the view, so I don’t like that much. I am sure someone (if not any people) will have a contrary view and tell me I am an idiot, which is fine, just use the comments to tell me a better way to do things, and why it is better. I have made 180 degree pivots before, based on new information.
Get Smartphone
In real life, the Hunchbacks that use these business applications do not want to use the SAP GUI as it means sitting at a desk rather than their preferred alternative of doing their job whilst surfing or jumping out of a plane or on a secret space mission to explore the invisible planet beyond Pluto, and they don’t want to use WDA because it looks hideous and has a horrible response time and makes me want to scream ad scream and scream until I make myself sick (I can you know) so what they actually want is a UI5 application on their smartphones.
That is why SAP invented UI5 – they were sick of Hunchbacks moaning to them all the time. Oracle has a similar problem with Werewolves, Microsoft Dynamics was designed based on the needs of Vampires. Salesforce is trying to muscle in on the action by trying to cater to the needs of Zombies, but the problem is all their best developers get their brains eaten whilst doing end user research.
So step thirty two is to “Create UI5 versions of applications”. In the past the programs which did the CRUD operations for Business Objects were DYNPROS and the programs which displayed a list of data which you could interact with to carry out a business process were ALV lists. That is a bit of a simplification but essentially true. That is also why not giving CL_SALV_TABLE the edit ability feature (though its predecessor had it) was utter madness as that lack renders it not fit for purpose.
In the new world UI5 can be used for both types of applications – object maintenance, and interactive lists to carry out business processes. It is just a question of picking a different sort of template in the SAP Web IDE when you are creating the user interface.
Swimming the Channel
We now have our ALV reports. They are all links in the chain that is the monster business process. When a new sales order is created and there is no available monster then you would want the new order popping up on the missing monster report without the user having to refresh. In the same way when a delivery is created from the monster atrocity due list you would want it to pop up automatically on the monster atrocity monitor again without the user having to refresh. In other words you want the applications to act like the apps on your smartphone where new emails or news articles pop up when they are created and without you having to manually press a button to update the display.
This is where “ABAP Channels” come into play. They don’t fit neatly into the various SAP programming models. I suppose in theory either the model or the controller can send a message via an ABAP channel to another application..
Step thirty three and a third is “Enable messaging between ALV Reports”. ABAP Channels use a publish and subscribe mechanism, where the receiving report subscribes to changes to data it is interested in, and the sending report publishes the updates and does not care who is interested.
Now the thing is, this works in the SAP GUI i.e. you can send messages between ALV reports and have the target auto-refresh, up to version 7.52 of ABAP at least, but you are not supposed to use it, it is just a prototype and SAP swear they will take the functionality away from the Kernel someday. I can only presume the logic is that they don’t want you using the SAP GUI and anything that makes the user experience on the GUI better is therefore a Bad Thing and must be deprecated. Never mind that people will most likely be using the GUI for the next ten years, if not twenty, it seems to be the principle of the thing, just like the editable SALV not existing.
Channel Hopping
Where you are supposed to be using ABAP Channel is in UI5 applications. You can send a message from any running application inside SAP and a UI5 application on the web can subscribe to get updates. Moreover two different UI5 applications can send messages to each other. Thus step thirty four is “Enable messaging between UI5 Reports” which the same type of messages the ALV reports send to each other in their highly illegal fashion.
What is amazing about all of this is how little code you need – both on the ABAP side, and on the JavaScript side for UI5 applications. There is also some configuration needed, but nothing that takes more than a few minutes to set up. Thus the ABAP Channel concept can be described as “elegant” in that it is the simplest thing (in terms of implementation effort needed) that can do the job.
At this point we also need to mention “ABAP Daemons” which are indestructible work process that send and receive messages using a similar mechanism. As far as I can see they are a solution looking for a problem. I have asked on the internet for realistic examples of possible use cases and have got several answers but the use cases seem to be a bit obscure to me. The only one that made any sort of sense was logging – in this case you send a message to a Daemon which writes to the application log. As this is done in a separate work process there is no COMMIT WORK in the calling program, thus bypassing the ”gotcha” problem many programmers find the first time they try and write to the application log half way through a LUW. We have found that writing to the application log can sometimes also cause a DEQUEUE_ALL which is most unexpected though I am sure there is a logical reason why this happens.
The Rappy Horror Show
When I started writing the book the RESTful ABAP programming Model did not exist. It came out about a month before the deadline for the book, but luckily as an SAP Mentor I got access to a Cloud ABAP System, so I was able to write about some code which I had actually written in real life and actually worked, rather than having to guess based upon documentation.
So step thirty five is to “Create Monster List using the RAP” where once again I create an application to list monsters with buttons to create, update and delete individual monsters, but this time using the RAP which is bit of a radical departure from anything us ABAP programmers have seen before. The basic concepts are identical to the “ABAP Programming Model for SAP Fiori” which a CDS Views, a business logic object, and a service that gets consumed by UI5, but the mechanism for each is very different.
Moreover this is a work in progress. New versions of ABAP are coming out every three months (or less) now, but luckily as I have a Cloud ABAP system I don’t need to do anything, the ABAP version just updates itself. One day SAP wants all ABAP developers to be in this enviable position.
I think the below diagram says it all … I use this diagram in my talks on the future of ABAP programming at SIT events:-
I am also lucky enough to get invited to SAP HQ every so often to see the latest version of ABAP and give my feedback and suggestions. I cannot talk too much about that as I am under a non-disclosure agreement, as are all Mentors, but it is great fun.
Suffice it to say this is an amazing period in the evolution of the ABAP language, it has never changed as much and as frequently as this year, and the pace of change only seems to pick up. One thing that is not a secret is that near the end of 2018 SAP hired 100 developers to work solely upon enhancing the ABAP language.
Cloud RAP to the Future
The final step, number thirty six is, “Replicate everything else in the book using the RAP” and I have not done any of that yet, I only created the monster list application.
Some things simply do not exists in the RAP e.g. BOPF, SEGW and you can only use a very restricted list of standard SAP objects (classes, data elements and the like). The SAP team started with the bare minimum and are rapidly adding new things each release.
Over the course of 2019 I will see how many of the objects that I created in ABAP 7.52 for the ABAP to the Future 3 book I can replicate in the latest release of ABAP. That might puzzle you as up to now ABAP has always been 100% downward compatible, but that is no longer the case, at least in the cloud environment. I am really glad they are forcing the issue otherwise some nonsense things like logical databases would have stayed with us forever.
Anyway that is my plan going forward. The more I play with the latest version of ABAP the more problems and gaps I will find, and I will gleefully report them directly to SAP. After all, if I can’t get something simple and obvious like the Monster Business Process to work, then what chance does anyone else have with their more complicated requirements?
At this point I am done, and I will hand over to the Baron.
BARON FRANKENSTEIN: Thank goodness that’s over! Now you have finished talking nonsense we can get on with the serious business, which is of course singing and dancing! So here it comes – the Grand Finale! I’ll go first!
*——————————————————————————————————————–*
FINALE – FLOORPLAN MANAGER SHOW
NARRATOR: The United Federation of Planets recommends that for an optimal experience of this show, you listen to the YouTube link whilst reading the SAP based lyrics, due to the advanced age of all of the songs (30 years +). As such the fashion in the videos may be surprising to some of our younger viewers, but maybe not, as fashion tends to have a 30 year cycle e.g. ripped jeans were fashionable in 1986 and now are again after a thirty year gap.
*——————————————————————————————————————–*
- BARON FRANKENSTEIN
Song – I’m Too Sexy
https://www.youtube.com/watch?v=P5mtclwloEQ
I’m too sexy for my monsters
Too sexy for my monsters
Too sexy – it drives me bonkers!
I am Sexy As A Service (SAAS)
Too sexy as a service (Monsters: Wiggle that SAAS!)
Does that make you nervous?
And I’m too sexy for Big Data
Too sexy for Big Data
Big Data – see you later!
I’m too sexy for IOT
Too sexy for IOT
Tee hee hee, tee hee hee
‘Cause I’m a Restful ABAP Programming Model, you know what I mean
And I do my little turn on the SAP Cloud Platform
Yeah, on the SAP Cloud Platform
On the SAP Cloud Platform, yeah
I shake my little SAAS on the SAP Cloud Platform
I’m too sexy for my self-driving car
Too sexy for my self-driving car
Too sexy by far
And I’m too sexy for AI
Too sexy for AI
What do you think – it’s all pie in the sky?
‘Cause I’m a RESTful ABAP Programming Model, you know what I mean
And I do my little turn on the SAP Cloud Platform
Yeah, on the SAP Cloud Platform
On the SAP Cloud Platform, yeah
I shake my little SAAS on the SAP Cloud Platform
Too sexy for my
Too sexy for my
Too sexy for my
‘Cause I’m a RESTful ABAP Programming Model, you know what I mean
And I do my little turn on the SAP Cloud Platform
Yeah, on the SAP Cloud Platform
On the SAP Cloud Platform
Yeah, I shake my little SAAS on the SAP Cloud Platform
Too sexy for ABAP
Too sexy for ABAP
Poor language
Poor language – it’s … not very good
I’m too sexy for my monsters
Too sexy for my monsters
Too sexy – it drives me bonkers!
And I’m too sexy for this song (EXIT)
(RICEF points the Ray Gun at SAP and ABAP and fires. They come back to life)
- SAP and ABAP –
Song – The Frankenstein of my Life
https://www.youtube.com/watch?v=4BQLE_RrTSU
SAP: Now I’ve had the Frankenstein of my life
No I never programmed like this before
Yes I swear it’s the truth
And I OO my code, Whoop! Whoop!
ABAP: ‘Cause I’ve had the Frankenstein of my life
And I OO my code, Whoop! Whoop!
SAP: I’ve been programing for so long
Now I’ve finally found someone
To correct me
ABAP: We saw the blogs upon the net
As we programmed this magical fantasy
BOTH: Now with bugs throughout our code
There’s no way we could offload it secretly
So we peer review each other’s code
‘Cause we seem to understand the R-A-P (model)
SAP: Just remember
ABAP: You’re the one thing
SAP: I can’t seem to resist
ABAP: So I’ll tell you something
BOTH: This could be a paradigm shift – because
(CHORUS)
BOTH: I’ve had the Frankenstein of my life
No I never programmed this way before
Yes I swear it’s the truth
And I OO my code, Whoop! Whoop!
ABAP: With my body and soul
I want a distributed version management system more than you’ll ever know
SAP: So we’ll just let it go
Don’t be afraid of change control
ABAP: Yes I know what’s on your mind
When you say:
“Keep the Core Clean” (SAP: Keep the Core Clean, baby!)
SAP: Just remember
You’re the one thing
ABAP: I can’t seem to resist
SAP: So I’ll tell you something
BOTH: This could be a paradigm shift …. because
(CHORUS)
BOTH: I had the Frankenstein of my life
No I’ve never programmed this way before
Yes I swear it’s the truth
And I OO my code, Whoop! Whoop!
‘Cause I’ve had the Frankenstein of my life
And I’ve searched through every open floor (plan manager)
Till I found the truth
And I OO my code, Whoop! Whoop!
VARIOUS MONSTERS: *Instrumental*
SAP: Now I’ve had the Frankenstein of my life
No I never programmed this way before
(ABAP: Never Programmed this way)
SAP: Yes I swear it’s the truth
And I OO my code, Whoop! Whoop!
BOTH: ‘Cause I’ve had the Frankenstein of my life
No I’ve never programmed this way before
Yes I swear it’s the truth
And I OO my code, Whoop! Whoop!
BOTH: ‘Cause I had the Frankenstein of my life
And I’ve searched through every open floor (plan manager)
Till I’ve found the truth
And I OO my code, Whoop! Whoop!
- PDH
NARRATOR: Here we have three versions of the song – the first from the European Song Contest many years ago, then an improved version from the south of England, an lastly the SAP version.
Song – OO Just an abapGit
https://www.youtube.com/watch?v=KiLw45oAuD0
https://www.youtube.com/watch?v=b_gZ3eCFnaE
Wurp idle didle do,
Wurp idle didle do,
You’re my code
You’re the sweetest thing
Don’t rot away
Don’t rot away
Every change makes me hate the users
Don’t Call Us
We’ll Call You
Am I wrong, to encapsulate
All my methods,
Is that pathetic?
I can’t hide all these patterns of state
(Oink!)
All my principles are open and closed
SHEEP: Baa!
CHORUS:
O! O!
I use abapGit
O! O!
A little bit more
O! O!
I use abapGit
Patterns by they Gang of Four
O! O!
I use abapGit
O! O!
Be just the job
O! O!
I use abapGit
Read they books by Uncle Bob
COW: Moo!
Working out
With code that’s legacy
Inheritance
It makes me dance
But tonight that guy Feathers say
Let me refactor, whilst on me tractor
How can I prove my love for U(ML)
Baby please, the subclass that I need
Is the Liskov substitution from hell
DONKEY: Ee-aww!
CHORUS:
O! O!
I use abapGit
O! O!
I feels the force
O! O!
I use abapGit
I loves that girl called Polly Morph
O! O!
I use abapGit
O! O!
A little bit more
O! O!
I use abapGit
Patterns by they Gang of Four
O! O!
O! O!
There is no need to laugh.
(Enter BARON FRANKENSTEIN. He uses his Ray Gun to restore everyone to life. At this point all characters are on the stage, except RDMS, who is dead)
(ENTER RAP-STUS)
RAP-STUS: Sorry I am late, have I missed anything?
ALL: Nothing Important.
RAP-STUS: OK then, let’s SING AND DANCE!
- ALL
Song: We Built These Monsters
https://www.youtube.com/watch?v=K1b8AhIsSYQ
ALL:
We built these Monsters
We built these Monsters with R-A-P
We built these Monsters
We built these Monsters with R-A-P
SAP:
Diddly Diddly Diddly
Diddly Doo
Diddly Diddly Diddly
MONSTERS:
BANG BANG!
RICEF:
Say you don’t know me
Or recognize my code
Say you don’t care too much
For code that’s OO
MDG:
Knee deep in the HANA
Digging in the cemetery
Too many runaway processes
Eating up the memory
ALL:
The Baron plays with HANA
Listen to SAP
Don’t you remember?
We built these Monsters
We built these Monsters with R-A-P
We built these Monsters
We built these Monsters with R-A-P
We built these Monsters
We built these Monsters with R-A-P
C/4 HANA:
Someone always making
Overstated claims
Who cares they’re always changing
SAP Product names
RAPPY:
We just want to dance here
On the Floorplan stage
They call us Enterprise Irregulars
WRITE statements are all the rage
ALL:
The Baron plays with HANA
Listen to SAP
Don’t you remember?
We built these Monsters
We built these Monsters with R-A-P
We built these Monsters
We built these Monsters with R-A-P
We built these Monsters
We built these Monsters with R-A-P
RAP-STUS:
It’s just another Tuesday
In Rimini Street
We just want install, oh oh ooooooooooooooooooooooooooo,
HANA on Business Suite……………………….
SAP:
Diddly Diddly Diddly
Diddly Doo
Diddly Diddly Diddly
MONSTERS:
BANG BANG!
PROFESSOR HASSO PLATTNER:
Who counts the Monsters
Underneath the bed?
Who writes the stupid books
For SAP Press?
ABAP:
Don’t tell us you need us
We’re a ship of Business Rules
Looking for Transylvania
Using SAP tools
NARRATOR: I’m looking out over the castle drawbridge
Out on a gorgeous rainy Tuesday 3AM (on the day of the SAP Press Gala Party)
I’ve seen those bumper-to-bumper monsters
(Monsters: Don’t you remember, remember)
Here’s your favourite Monster Maker
In your favourite Evil Castle
The castle by the forest, the castle that makes you weep
The castle where no one ever sleeps (if they want to wake up again)
ALL: (Doing the Can-Can) The Baron plays with HANA
Listen to SAP
Don’t you remember?
We built these Monsters
We built these Monsters with R-A-P
We built these Monsters
We built these Monsters with R-A-P
We built these Monsters
We built these Monsters with R-A-P
THE END – All the actors take bows, with RAP-STUS taking centre stage.
ROLL CREDITS
Cast – in order of appearance:-
PAUL HARDY An SAP Mentor Himself
NARRATOR An SAP Expert Trevor McDoughnut
WILLIAM “SAP” PITT A Hero Rick Moranis
ABAP WEISS A Heroine Susan Boyle
RICEF A Handyman Richard O’Brien
MDG A Domestic Morticia Addams
C/4 HANA A Groupie Bonnie Langford
BARON FRANKENSTIEN A Scientist Freddie Mercury
RAPPY HORROR A Silly Creation Arnold Schwarzenegger
RDMS A Database Meat Loaf
PROFESSOR HASSO PLATTNER A Rival Scientist Meat Loaf
RAP-STUS A Relative Lionel Richie
MMXIX
Baron Frankenstein will return circa 2022 in “ABAP to the Future Part Four – I can see ABAP Moon Rising”
hi Paul,
If I have a SAP on AWS installation model(Infrastructure-as-a-service, the SAP system is managed by our Basis team) will the Cloud RAP model be available there or is it available only in the SAP Cloud Platform(Platform-as-a-Service)?
Thanks, Joe.
In the past if I wanted to play with a HANA database and use the latest ABAP version I would use the so called CAL from SAP which runs on AWS and then I got an ABAP only system just for me which cost a dollar an hour to run.
The Cloud RAP does not have a trial version. In addition 7.52 was the last ABAP version where you could have standalone system on-premise. The only way to get it (RAP) s to pay quite a large amount of money. That is apparently because it consumes a gigantic amount of resources.
The only reason I was able to play around with the Cloud RAP is I am lucky enough to be an SAP Mentor and so get access to a shared trial system.
Cheersy Cheers
Paul
Thank You Paul.
It is first time I read about it. Good news. Looks like no worries ABAP will get deprecated 🙂