Supported by
Supported by Inetum

abapBlame - My new open source project

images/thumbnail.jpg - Thumbnail
ABAP’s versioning system is terribly bad. Besides all its faults, it doesn’t provide an easy way to determine who did what and when. Git, which is a decent versioning tool, let’s you do this through its git-blame command. Due to this, many ABAP programmers got used to sign the code with their name and date every time they add, delete or modify lines in a program. And the more that program is modified, the more difficult it becomes to read it and understand what’s there.

The simplest route to go from SELECT to RANGE

images/thumbnail.jpg - Thumbnail
Today we’ll try to optimize the code to convert a SELECT into a RANGE

It's now so simple to convert a MESSAGE into an EXCEPTION

images/thumbnail.jpg - Thumbnail
Some years agor I showed how to convert a normal MESSAGE into a typified exception. Meanwhile ABAP evolved a lot and now, since version 7.40, that complex solution is no longer needed.

Tree of Z packages - A modest proposal

images/thumbnail.jpg - Thumbnail
If you regularly read Abapinho you probably know by now that I can’t live without ABAP Package Concept. Nowadays the first thing I do when starting a new development is creating an encapsulated package to hold all its objects (in the most complex scenarios, I create it as a main package and then create multiple child sub-packages). I lay here a modest proposal (unlike the original one, mine is not sarcastic) to help organize thing a bit at system level.

Show internal table content on an ALV

images/thumbnail.jpg - Thumbnail
I don’t know for how long has this been available but I just now found out about it. In the debugger it is, after all, super easy to see the content of an internal table in an ALV.

Magical shortcuts to menus

images/thumbnail.jpg - Thumbnail
If you, who are reading this, believe that everything written in Abapinho is literally true, what I’m about to tell you will be a disappointment: when I said magical I didn’t mean that it was supernatural. It is just a nicer way of saying it is surprising and unexpected. I took this liberty just as you’d say “I could kill for a glass of water” knowing that you would never do it. Having made this clear, let’s continue.

Shortcut to save list local file

images/thumbnail.jpg - Thumbnail
SAP is full of hidden corners rarely visited. Abapinho is happy to shed some light on them. The command %pc is equivalent to the menu option System/List/Save/Local file:

IF without IS INITIAL in boolean methods

images/thumbnail.jpg - Thumbnail
My current client’s system is finally being upgraded to 7.50 and, after all these years stuck with the old ABAP, I am now finally able to enjoy the wonders introduced in 7.40. There are dozens of these wonders and I don’t intend to start making a post on all of them as there is already so much quality information on most of them. Besides, Abapinho always tries to write about something new or, at least, not very known. But this simple functionality, although not that extraordinary, pleases me: you no longer need to add IS INITIAL in an IF command when the condition is a method returning a boolean.

SAAB activation variants

images/thumbnail.jpg - Thumbnail
Some time ago we spoke about SAAB and its advantages as a tool to analyse, debug and find problems in our code. In that article we didn’t explore an important aspect of it: Activation variants.

Implicit enhancements in data structures

images/thumbnail.jpg - Thumbnail
We have all used implicit enhancements to add code to the beginning or end of a standard function, form or method. But you may not know that it can also be used to add fields to data structures, whether they’re declared as TYPES or directly as DATA.

Save XML data in an ST (Simple Transformation)

images/thumbnail.jpg - Thumbnail
Some days ago I was using an ST (Simple Transformation) and thought that, even though its job is to convert an input into an output, it is can be used to store XML data. Let’s asy we have the following XML: <cocktails> <cocktail id="gt" nome="Gin Tonic"/> <cocktail id="ws" nome="Whiskey Sour"/> <cocktail id="cl" nome="Campari Laranja"/> </cocktails>

When code smells

images/thumbnail.jpg - Thumbnail
It happens very often that, while programming, I smell something strange. It’s usually hard to identify it right away. It usually starts like a faint fragrance. But, as I become more aware of it, eventually it starts stinking and I understand where it comes from. Even then it is not immediately clear why that particular thing smells bad.

You don't encapsulate for it to be reused

images/thumbnail.jpg - Thumbnail
Since 1998, I hear some ABAPer colleagues saying that it’s not worth encapsulating a particular piece of code in a function or method because it will never be reused again. And then they go to SE38 and create yet another report full of includes. The idea that you should encapsulate your code for it to be reused by you or by others is one of the biggest misunderstandings of the history of our planet.

Refactoring: Extract method

images/thumbnail.jpg - Thumbnail
In SAP’s world, ABAP code will forever stay wherever you leave it. On one given day, Manuel did something badly because he was on a rush or didn’t know any better. One year later António is asked to make a small change to it. António spots Manuel’s mess but he doesn’t improve it because, for some reasons, in SAP, changing something which is working, even if it’s badly implemented, is a tabu. Instead, António will add his code to the existing one and forget about it. This attitude, when adopted by everyone, contributes to an inevitable erosion of the system’s code which, some years later, becomes unmanageable. And still, that’s the rule. The way I see it, this is wrong and goes against the customer’s best interests. Actually, even if the customer doesn’t want me to modify old code because it’s working… I still do it. Who is he to tell me how to program?

A comment on comments

images/thumbnail.jpg - Thumbnail
We learn in school that all code should have comments. Then, in real life, we find that not everyone was paying attention to what was said in school. As a consequence, most code is obscure and without proper comments. I was always careful to comment every relevant step of my code, specially the parts which are obscure or not self-explanatory. But since I recently read Uncle Bob’s Clean Code , my opinion on this changed. Today I believe that the less comments the better. And yet, I don’t see this as contradictory to what I used to think.