Technology Blogs by Members
Explore a vibrant mix of technical expertise, industry insights, and tech buzz in member blogs covering SAP products, technology, and events. Get in the mix!
cancel
Showing results for 
Search instead for 
Did you mean: 
hardyp180
Active Contributor
NARRATOR: There have been two horrible cirmes committed on the 23rd of November2021. One was murder most foul, the other the release of a new ABAP related book and associated musical. It is difficult to say which is worse but this series of blogs will help you decide whilst singing and dancing and solving a crime and thus winning prizes.


Franky and Larry Ellison


Previously on this channel:-

https://blogs.sap.com/2021/11/16/i-can-see-abap-moon-rising-part-one-of-eight/

https://blogs.sap.com/2021/11/23/i-can-see-abap-moon-rising-part-two-of-eight/

https://blogs.sap.com/2021/11/30/i-can-see-abap-moon-rising-part-three-of-eight/

https://www.youtube.com/watch?v=9Y0KGYB1mR4

NARRATOR: When we left the story last time the author was ready to start making chapter changes and creating actual ABAP objects which the reader could download. Meanwhile a mad scientist and his hunchbacked assistant had escaped from a prison on an asteroid in the year 2156 and travelled back in time to Gatecrash the SAP Press Gala Party which is being held in Castle Frankenstein. Upon arriving at Castle Frankenstein they meet a Werewolf. Before you hear how that goes however you are forced to read assorted nonsense about SAP.....

*----------------------------------------------------------------------------------------------*

Book Writing

*----------------------------------------------------------------------------------------------*

PDH:

Now the updates to the listings and screen shots and minor chapter changes have been made, it is time to move on to the major chapter changes.

SALV-A-Door Dali - Chapter 10 – ALV

You may well wonder why I keep having the ALV as a subject in a „future“ focused book, considering the ALV was introduced circa the year 2000. The strange thing is that with every edition of the book I get loads of queries from all around the world – and 99% of them are all to do with the ALV chapter and so logically that is a major focus for ABAP developers to this very day, regardless of what SAP as a company might actually be wanting people to do i.e. move away from the SAP GUI.

The focus is CL_SALV_TABLE which history will most likely view as a total failure in that apart from one aspect it was worse in every way than its predecessor the CL_GU_ALV_GRID. It could have been a great success if SAP was only willing to add the two „killer“ features that were missing – the ability to dynamically add user commands and the ablity to make cells or columns or rows editable – both of which were easy in CL_GUI_ALV_GRID and more or less impossible in CL_SALV_TABLE. The chapter tells you one way of getting round those obstacles that have been placed in your way.

For more information on this topic see:

https://blogs.sap.com/2021/02/07/international-editable-salv-day-2021-year-13/

Three Errors walk into a bar : The Barman says „Normally I’d throw you all out, but tonight I’ll make an Exception“ – Chapter 4 – Exception Handling

Have a read of this joke about quality assurance testing, and be sure to expand the comments.

https://www.reddit.com/r/ProgrammerHumor/comments/bdgamn/a_qa_tester_walks_into_a_bar/

Everything is true but the two pertinent points I would draw attention to are:-

  • Doing exhaustive testing on the beer buying aspect and then totally forgetting about the toilet aspect (what goes in must come out) until go-live

  • Doing an emergency fix (duct tape over beer pumps) to meet a go-live deadline and the duct tape still being there six months later


I see both of those all the time and waffle on about such things incessantly in various SCN blogs. When I first started trying to write ABAP to the Future I tried to mix the description of the new technology with all sorts of philosophical aspects as to the best way to program.

Rather like a software subroutine a book should not try and do to totally different things at once and so I was told to concentrate just on the new technology in my ATTF books. Fair enough – so I wrote another totally different book just dealing with code quality

https://link.springer.com/book/10.1007/978-1-4842-6711-0

All well and good but in some sense the two „things“ (new technology and code quality) are two sides of the same coin – firstly there is no point using any new technology if you are going to repeat all the mistakes of the past and secondly some of the new tools are for the express purpose of increasing code quality.

Now it could be said that error handling is the most incredibly boring part of writing programs – and yet in a well written program error handling could be up to half of the lines of code. Of course in a vast number of programs there is no error handling at all as the presumption is the user (and the outside world) will always do the right thing 100% of the time. This is known as the „happy path“ and just this morning I was ready an email from someone who said his team only ever test the happy path and maybe that was why he was getting problems.

When exception classes first came out as a replacement for traditional error handling I just could not see the point and wrote about that at great length on the internet. Over time I have done a 180 degree pivot and feel they are vital to the future of the universe.

So – exception classes are rather like Billy Joel’s „angry young man“

And he‘s fair and he‘s true and he‘s boring as hell

So I have the problem of trying to convince the universe that exception classes are really important without boring everyone to death. This is the subject of Chapter 4. At some point next year I will also be doing an online course in regard to this subject for the company Michael Management (more on this later)

A North Star is Born – We are far from Shallow Now – Chapter 5 - Test Driven Development

People in IT are always making up new terms and I learned one today – „North Star“ which means a long term IT goal you aspire towards. I read a news story with the headline „Macquarie Bank shoots for eight technology 'north stars' for 2025“. Most of those goals were all cloudy infrastructure type things but one that caught my eye was “An example of one of our north stars is we actually feel that we could automate 100 percent of our testing or get close to [that].

When you read that quote you are quite possibly quacking like a duck, then snorting like a pig, and eventually losing control of your bowels, due to the uncontrollable anger you feel as a result of what a lot of nonsense the bank CIO was talking.

Testing is in fact like one of the late Gary Gygax's multi sided dices. Each type of testing is one side of the dice. If you throw the dice in production and it lands on a side that has not been tested then - oh dear.


D and D Dice


I personally think manual testing is always going to have a place but that is not to say you cannot have a ream of automated tests – be they ECATT, HPQC (or whatever it is called now) or Postman integration tests, or the chapter subject which is automated unit tests inside a program – running every night as well.

I always used to use Amazon as an example – they put a change into production more than once a second and can only manage that due to the gigantic amount of automated tests that every single change triggers. If even one of those tests fails the change is rolled back – and then is fixed and resubmitted within the hour and the process repeats.

My new example is ABAP in Eclipse. Previously a new version of Eclipse would be released once a year and if you upgraded to it all the SAP supplied ADT plug-in code would break. Then SAP would fix their plug-in code and after about three months they would release a new version and all would be well.

Nowadays a new version of Eclipse comes out once every three months and the ADT plug-in code never breaks. Why not? Because every night the Eclipse foundation releases a beta version of where they are up to with the next release and SAP runs one zillion automated unit tests against that new version, sees what breaks, and fixes it the next day.

Closer to home at work we had a huge program where every three months there was a „release“ with dozens of new features and a side effect was on the Monday morning there was a queue of business analysts all down the corridor. All coming to report what had broken. Myself and a colleague wrote a new version, all OO and unit tests, and my criteria for success was no queue every release. I am happy to report for the last two releases there were no bugs reported at all which I can tell you is something of a miracle. Of course people have already forgotten there was ever a time when there were millions of bugs each release, but I remember and I know why that is no longer the case.

All these automated unit tests are created via a process known as „Test Driven Development“ (TDD). This has been very common practice in many other languages for many years now but not in ABAP. In ABAP the argument has been „Just because a huge number of companies are doing this, including SAP, why should my company do it? If all those companies jumped off a bridge, should I do so as well?

I would say in such a case jumping off that particular bridge has done the vast number of organisations who have made the jump a huge favour and I would advocate everyone else to make like a lemming (or the Pointer Sisters) and JUMP!

So the chapter (5) in ABAP to the Future is about ABAP Unit and Test Driven Development which to me are one and the same. It was the first chapter I wrote for the first edition. I could have written a whole book on the subject – in fact my „Two Ronnies“ comedy partner Jm McDonough has done just that.

https://link.springer.com/book/10.1007/978-1-4842-6951-0

As a disclaimer I did the technical review on that book, as indeed he does the technical reviews on mine. At some point next year, now I have ATTF4 out of the way,  Jim and I will have a series on the internet called the „ABAP Laundromat“ about Clean Code.

Going back to Michael Management one of my other aims was to have a course on pretty much every topic I have covered in the current book, or previous books, or topics I am thinking about covering, available in an online course as well, due to the fact you can include so much more information than in a book chapter, or even in a one hour live presentation. As I have discovered online courses are nothing like writing books or even doing a live presentation in front of an audience.

Thus far I have created a grand total of one such course, naturally on Test Driven Development.

https://www.michaelmanagement.com/blog/sap/making-abap-programs-bug-free

When Push Channel Comes to Shove – Chapter 14 – ABAP Channels

The idea of ABAP channels is simple enough – it is the „observer“ design pattern. Events in ABAP OO have done this sort of thing for some time – within one program. Cross program events were handled via SAP Business Workflow.

With ABAP Channels a web based UI5 application or a non-user facing ABAP application subscribes to listen for messages, and those message are published when an end user does something on a web-based UI5 application.

The obvious application is CIC0 – that used to constantly poll for incoming phone calls from customers. With ABAP Channels the phone call „publishes“ the fact that someone is calling in and the subscriber (web based CIC0 equivalent) gets that message and the user takes the call. The constant polling in CIC0 could take up 15% of the entire load on an SAP system, so this new method is a million times better.

There are two points I would make about this technology.

Naughty but Nice

What I wanted in life was one SAP GUI ALV application which created deliveries based upon sales orders. When a delivery was created I wanted a message sent to another SAP GUI ALV application being run by a totally different user miles away causing their application to auto-refresh and show the new delivery. Again without constantly polling.

Now with ABAP Channels this is totally possible – I show how to do this in the book -but it is not allowed. That is, although it works perfectly SAP claim that with a forthcoming kernel upgrade the functionality will stop working. They do not want anyone using the SAP GUI and thus the only supported scenario for my use case is when both applications are running in the web. I will point out (and do in the book) this (two web applications talking to each other) works wonderfully as well (naturally) with a very small amount of code needed.

I got phoned up by someone from SAP who begged me not to put this in the book (I first mentioned it in the second edition) on the fairly reasonable grounds that I would get people all excited by what is – in effect – one of the most useful innovations SAP have ever done - and then they would start using this in production and become all upset when SAP switched off the facility.

So in real life I got this working in my development system (in about fifteen minutes) but was never able to use it in production, not because it did not work perfectly but because it could vanish without warning. It still works to this day but will never leave the development system.

This is the "Prisoners Dilemma" - hundreds of companies would want to use it but do not because SAP can switch it off at will. But if all 900 companies did start using it productively then SAP would be stuck and have to leave it on.

So it seems I spend half my time trying to get SAP to add incredibly useful functionality to CL_SALV_TABLE (editing cells) and half my time begging SAP not to remove incredibly useful functionality (the GUI push channel thing).

Matt Demon

The second point worth mentioning is the concept of an „ABAP Daemon“ which is a concept borrowed from other programming languages. This also reminds me of the SAP Business Workflow from 20 years ago because you have a system wide work process which responds to events and responds in whatever way you deem fit, and the work process is indestructible, and the whole thing is controlled programmatically.

In SAP there are always many ways to solve the same problem and you can get really confused trying to work out which one to choose. In this case at least up until now the „ABAP Daemon“ thing has always seemed to me to be a solution looking fro a problem.

Now if you go trawling through the internet you will see people trying to give examples of how you might use such a thing but despite asking time and again I have yet to see a „killer“ usage for this, or indeed a way to solve an existing problem (which can already be solved right now) in an obviously superior fashion. However I eagerly await someone giving me such an example. So go on, go on, make me breathless.

*----------------------------------------------------------------------------------------------*

Code Base my Layer Cake

*----------------------------------------------------------------------------------------------*

In earlier blogs I talked about I was trying to make sure the downloadable code (downloadable via AbapGit from GitHub) reflected not only abstract examples but also a heavily disguised real world business scenario. There were six steps to this – we are already up to number 5.

Code Base Step 5 – Create Package Hierarchy

In prior books the package hierarchy was based upon the chapter structure. Now it will be based upon the business process. It looks like this:-


Package H


NB – this is in the 7.52 ABAP system and is used to demonstrate the ABAP Programming Model for SAP Fairy Dust. The RAP equivalent is done in a different system (BTP) in a different way, though the business model is of course the same.

I wanted lots of different business objects so I could demonstrate different technologies.

For example the BOPF entity for the Monster object is created manually, the others are generated from CDS Views (which is mandatory if you want to later convert them to the RAP equivalent)

For the Monster entity the SEGW definition is created manually. For the delivery entity the SEGW definition is created by „pulling“ from a CDS View. The others are created by „pushing“ from a CDS View which is the recommended technique.

I will note the „Missing Monsters“ report is not mentioned in any examples in the book. It is not even in the GitHub repository as yet but it will be as time goes by. That sounds odd but things will make more sense as the blogs go by.

Code Base Step 6 – Create ABAP Artefacts

Domains / Data Elements

I had a lot of grief with this last time – readers telling me that there were missing domains/data elements in the downloadable code – so this time I created a fresh set all with „4“ near the start of the name.

You might wonder why there are so many of the things i.e. why do the structures and tables have so many fields when just four or five would have been enough to get the assorted points in the examples across?

To be honest this is because right up until the last minute (before starting the book) I thought I was still going to be having a chapter on BRF+ and examples of that technology tend to work best with large numbers of fields.

NARRATOR:  At this stage we have four chapters updated and the very basics of the downloadable code created. Much more importantly the SAP Press Gala party was slated to be held on 23/11/1792 with the guests travelling backwards in time from 2021 via a time tunnel but on that – fateful – night some strange gatecrashers were on their way - and at this stage of the proceedings they had already reached the Castle wherein the party was to be held....

*----------------------------------------------------------------------------------------------*

Plot – loosely based on „House of Frankenstein“ (1944) – Part 4


Lets Build a Monster


*----------------------------------------------------------------------------------------------*

NARRATOR: Evil Criminal Mastermind Frank BOPF and his hunchbacked assistant Slin Shady have escaped from prison in the year 2156 and fled back in time across the BW bridge to the year 1792.  After reviving Count Dracula only for him to be murdered they move on to Castle Frankenstein where – apart from singing and dancing monsters – they encounter werewolf Larry „Talbot“ Ellison. Frank BOPF promises to cure him, and he has already promised to give Slin Shady a new beautiful body to replace his hunchbacked one. Now BOPF is in Castle Frankenstein he could do all that he promised if he so desired but in actual fact his promises are worth jack. He once promised to dramatically simplify how business object transactions are coded in ABAP and look at how that went.

BARON: Ooooooooooooooooo! Look at all my lovely machines. You can use any you want! Are you going to use them to fufill all your promises?

BOPF: (Does John Wayne Impression) The hell I am! I still have some scores to settle and that takes priority!

BARON: He he he! So you want revenge on somebody?

BOPF: Indeed I do. I have already managed to kill Mayor McCheese, the governor of the prison where I was held in the year 2156, now I want to brutally murder the three brothers who grassed me up to the police when I refused to pay them for their work in my evil crimes. I also refused to pay the brothers.

BARON: No worries ducky! I can use my time torpedoes! I can send them through space and time to blow up anyone you so desire, no matter when and where they are!

SLIN: Look – we are going round killing people right left and centre! The BAS Street Kids, Mayor McCheese and now the Code Brothers. Why in the world is the only fuss being made ias about the murder of Count Dracula, who, let’s face it, was already dead to begin with?

BOPF / BARON  / NARRATOR: We’ll tell you later.

BARON: So ... your assistant says the intended victims are the Code Brothers? Didn’t they produce films like „Fargo“ and „No Country for Old men“ and „The Tragedy of Macbeth?“

BOPF: That’s them. Their first names are „No“, „Low“ and „Pro“. They grassed me up when my evil scheme for smuggling wooly jumpers fell through which was about the same time that regrettable incident in the dungeon ruined my rugby world cup presenting career. They also have another brother called „VS“ but he is OK, so let him go.

BARON: OK I have put their names into my targeting system. What time period should I aim for?

BOPF: That time they claimed you could start creating applications without writing even one line of code!

BARON: 1956?

BOPF: No!

BARON: 1976? 1996? 2021?

BOPF: OK - they made that claim in all those years you mentioned as well, but I want you to target the year 2156!

BARON: Okey Kokey! (Presses Button) Bombs Away! Oh those time torpedoes! They are such a wonderful weapon! When I invented them it was a PARADIGM SHIFT!

AUDIENCE: Whooooooooooooooooooo! (Does Mexican Wave) (Sings) Bananas, bananas, one million tons of bananas!

LARRY: Well excuse ME!

ALL: What?

LARRY: Look at you lot! Causally causing wanton death and destruction throughout all of time and space and not caring at all ... and completely missing the main point! Which is that I am about to turn into a werewolf again! (ENTER Monster with a paper mache full moon on a stick) Here I go!

(Hair sprouts from all over his body, he grows two feet in height, his shirt splits a la the Incredible Hulk, huge fangs burst from his mouth, wickedly sharp talons burst from his hands and feet, his eyes glow red and worst of all – he bursts into song!)

*----------------------------------------------------------------------------------------------*

Song – Hungry like the Wolf

https://www.youtube.com/watch?v=oJL-lCzEXgI

*----------------------------------------------------------------------------------------------*

ELLISON: Darkest Dark Mode in the city, night is a wire

Steampunk in the subway, earth is a afire

(Monsters: Do do do do do do do dodo dododo dodo)

Citizen Developer, you want me, give me a sign

And TRY/CATCH my breathing even closer behind

(Monsters: Do do do do do do do dodo dododo dodo)

In touch with the ground (using my Product Footprint Manager)

I'm on the RISE I'm after you

Code Smells All Around, I'm lost in a crowd-sourced development project

And I'm hungry like the wolf

 

Code not one line, Codings a Crime

I'm on the RISE I'm after you

Mouth has gone live, with juices like Structure for Swiss wine and alcohol processing (CH001)

And I'm hungry like the wolf

(Curtain drops behind him with new scenery. He is now in the Forest outside the Castle)

Stalked in the forest, too close to hide

I'll be upon you by the moonlight side

(Monsters: Do do do do do do do dodo dododo dodo)

High blood drumming on your skin, it's so tight

You feel my heat, I'm just a moment behind

(Monsters: Do do do do do do do dodo dododo dodo)

In touch with the ground (using my Product Footprint Manager)

I'm on the RISE I'm after you

A scent and a sound bite, I'm lost and I'm found

And I'm hungry like the wolf

(Curtain drops behind him with new scenery. He is now in a nearby Village. ENTER assorted villagers)

Code not one line, Codings a Crime

I howl and I whine, I'm after you

Mouth has gone live, all the best run SAP inside

And I'm hungry like the wolf

(Eats a Villager)

 

Burning the ground (using my Product Footprint Manager), I break-point from the crowd

I'm on the RISE, I'm after you

Code Smells All Around, I'm lost and I'm found

And I'm hungry like the wolf

(Eats another Villager)

 

Code not one line, Codings a Crime

I'm on the RISE, I'm after you

Mouth has gone live, with juices like Structure for Swiss wine and alcohol processing (CH001)

And I'm hungry like the wolf

(Eats another Villager)

 

Burning the ground (using my Product Footprint Manager), I break-point from the crowd

I'm on the RISE, I'm after you

Scent and a sound bite, I'm lost and I'm found

And I'm hungry like the wolf

(Eats another Villager)

 

Code not one line, Codings a Crime

I'm on the RISE, I'm after you

Mouth has gone live, all the best run SAP inside

(Eats another Villager. Burps)

 

NARRATOR: As we have just seen Ellison rushed to the nearest village where – in werewolf form – he ate at least a dozen villagers. BOPF and the Baron and the Monsters find this hilarious (they are not very nice) and so as not to cut off the source of their laughs BOPF and Slin Shady head to the village to rescue Ellison before the remaining villagers can kill him.

*----------------------------------------------------------------------------------------------*

Clues

*----------------------------------------------------------------------------------------------*

ENTER „APPY“ „MAC“ GYVER

AMG: App App Hooray! I don‘t know if you can still remember but we have a murder victim – namely Count Dracula. I think it is fairly clear he was killed by a Monster – but which one – and where? If you want to win a mystery prize you need to answer that – and more – and supply your reasoning.

  • One Haunted Castle has a ghost called the "blue (or radiant) boy" who according to the owners used to haunt the Pink Room in the castle

  • One Haunted Castle has an Oubliette where the owners would would drop guests through the trap door to be impaled on the spikes 8 feet below

  • In one Haunted Castle there is the ghost who loves to join parties. Her ghost has been seen at functions in the ballroom, clothed in a ballgown of that era

  • One possible anagram for Paul's email address is "Aaron Dolph Human Saucy". Another one is "Honduras Malayan Pouch"

  • The funny thing about Monsters is that what musical instrument they play depends on what colour they are. All Monsters who are the same colour as the Monster called Jimmy only ever play the Trombone..

  • The 20 Foot tall Monster has the Super-Power of X-Ray Vision. Which is pretty pointless really because at that height there is not much to see through. The Baron makes sure any given Monster only has one Super Power i case they get above themselves.

  • The 7 Foot Tall Monster reads "Anticipating Change" (Secrets Behind the SAP Empire) by Dr. Hasso Platnner (pictured). Monsters only ever have one book they read, and each monster reads a different book



Anticipating Change


With each blog at this point I will be giving you more clues and as the blogs go by the clues will become more useful. By the way in the event of a tie break if you are lucky enough to live near one of the haunted castles, a selfie taken in one would give you bonus points. Or in the „Horse and Jockey“ pub in Homebush, Sydney. That is not actually a Haunted Castle but it was where most of the ABAP to The Future Part Four book was written.

And – no naughty posting the identity of the Castles in the comments!

Going back to the subject of logical inferences here is another example - if you get the clue that "The Monster in the Centre Castle reads "Enterprise SOA" that means that no Monsters in Castles 1,2,4 and 5 can read that book so you can colour those cells red in your problem solving spreadsheet. In addition that means that for the centre castle you can colour "Enterprise SOA" green and all the other four books red.

If you keep doing that sort of thing eventually for each grid of values - Monster Colour, Monster Hobby, Monster Favourite Book and so on, you will end up with enough red cells to work out which book each Monster reads in each castle (and what hobby and so on) and this will enable you to make more logical inferences based on previous clues.

*----------------------------------------------------------------------------------------------*

Outro

*----------------------------------------------------------------------------------------------*

NARRATOR: As we leave this weeks episode, four of the chapters have been explained and the downloadable code has started to be created. Meanwhile things are not looking good for the SAP Press Gala Party, what with a werewolf on the loose eating everyone he encounters.  On tip of all that there is still the murder of Count Dracula to be solved! Can you solve the crime and be one of the lucky first few to win prizes? Stay tuned for next weeks exciting episode of „I can see ABAP Moon Rising“

https://blogs.sap.com/2021/12/14/i-can-see-abap-moon-rising-part-five-of-eight/

https://www.sap-press.com/abap-to-the-future_5360/
1 Comment
Labels in this area