Blog Ben Meijs | Help, wat doen ze met mijn programmeertaal?

De look-and-feel van ABAP is de afgelopen jaren sterk gewijzigd. Dat is niet alleen het gevolg van de introductie van ABAP Objects in release 4.6, maar ook van de nieuwe mogelijkheden die vooral bij basisreleases WAS702 en WAS740 zijn geïntroduceerd.

In mijn vorige blog gaf ik antwoord op de vraag of het toepassen van objectgeoriënteerde principes met ABAP toegevoegde waarde heeft (spoiler alert: het antwoord is ja!). In deze blog sta ik stil bij de vraag of de toepassing van de nieuwe mogelijkheden zoals 'inline declarations' en 'string templates' altijd ten goede komt aan de onderhoudbaarheid van de programmatuur. Maar eerst een stukje geschiedenis…

Er was eens…
Er was eens een programmeertaal die als doel had om gebruikers rapportages te laten bouwen. De naam van die programmeertaal  weerspiegelde dit perfect:  ABAP was de afkorting van „Allgemeiner Berichtsaufbereitungsprozessor“ of "Algemene Rapportgenerator". Dat SAP hier later "Advanced Business Application Programming" van maakte, was een weerspiegeling van SAP's internationale ambities en de uitbreiding van de mogelijkheden van de taal. Met de handvol ABAP/4 statements van R/2 was ik eind jaren ‘80 prima in staat om zowel lijstjes als transacties te programmeren. Voor een simpel programma moest ik vaak wel veel statements gebruiken.

Toen R/3 in 1992 het licht zag, bleek dat SAP had besloten alle functionaliteit met ABAP te bouwen. Je kon als consultant de code van bijvoorbeeld verkooptransacties bekijken, debuggen, uitbreiden en zelfs wijzigen. SAP nam haar eigen programmeertaal dus erg serieus en speelde toen al met de gedachte  om de workbench als ontwikkelplatform aan te gaan bieden. De mogelijkheden van de taal namen toe en de naam ABAP/4 veranderde eerst in 'gewoon' ABAP en vervolgens in ABAP Objects. Een kenmerk van de taal bleef echter dat je veel statements nodig had om iets simpels te doen; denk bijvoorbeeld aan de vele TYPE en DATA definities aan het begin van een programma.

Bye Bye ABAP, hello JAVA?
Aan het begin van deze eeuw kondigde SAP aan dat ze op den duur ABAP zouden gaan vervangen door JAVA ("A Teched to remember")', maar deze soep werd uiteindelijk helemaal niet opgediend. De verdere ontwikkeling van de ABAP-taal ging eerst nog met horten en stoten, maar SAP heeft vooral de afgelopen jaren de ene na de andere uitbreiding het licht doen zien. Vanaf basisrelease WAS702 is er sprake van een groot aantal wijzigingen waarbij enkele trends zichtbaar worden, zoals Code Pushdown (meer door de database en minder door ABAP laten doen), sterke verbetering van de UX (Fiori) en het expressiever maken van de ABAP-taal. Dat laatste kun je ook samenvatten onder de noemer "meer kunnen doen met minder statements". De introductie van Method Chaining, String Templates, Inline Declarations, Constructor Expressions, Table Expressions en SQL Expressions maakte het mogelijk  het benodigde aantal regels ABAP-code sterk te verminderen.

Meer met minder
Als afsluiting van een interne workshop bij Ctac over de nieuwe mogelijkheden van ABAP in 740, organiseerde ik een wedstrijdje "reduceren van het aantal statements in een bestaand programma". Wat bleek? Het terugbrengen van het aantal regels code met 25 to 50% was voor bijna niemand een probleem. Er waren ook enkele collega's die hier nog een schepje bovenop deden en het originele programma terugbrachten tot minder dan de helft van het oorspronkelijke aantal statements. Deze zeer compacte code bracht echter een discussie op gang over de vraag of het compacter maken van de code niet teveel ten koste gaat van de leesbaarheid daarvan. Sindsdien heb ik deze discussie meerdere malen mogen voeren. Waar ik vind dat code beter onderhoudbaar is geworden, omdat er sprake is van minder code die ook nog eens duidelijker in één statement weergeeft wat exact de bedoeling is, vinden sommige andere programmeurs het compactere programma minder goed leesbaar. Tussen de regels door klinkt soms het verwijt dat ik onnodig moeilijk heb gedaan omdat het kan, niet omdat het nodig is. Ik kan niet ontkennen dat ik me daar heel af en toe schuldig aan maak. Ik ben nieuwsgierig en wil weten wat er mogelijk is in de beschikbare versie van de ABAP-taal. Die slimme koppen in Walldorf hebben die opties toch niet zomaar toegevoegd? Maar in de meeste gevallen gebruik ik de nieuwe mogelijkheden om sneller beter onderhoudbare programma's te kunnen ontwikkelen.

We live and learn
Als je niet weet hoe bijvoorbeeld een NEW, VALUE, COND of SWITCH statement werkt, dan zal moderne ABAP-code voor jou minder goed leesbaar zijn. Maar zodra je snapt hoe ze werken, verdwijnt dit begripsprobleem als sneeuw voor de zon. Ik pleit niet voor een ongelimiteerde combinatie van allerlei nieuwe opties, want daardoor kan code inderdaad  onleesbaar worden. Ik pleit echter wel voor uitproberen, voor het bekijken van voorbeeldcode die SAP ter beschikking stelt via transactie ABAPDOCU. Ik ben ervan overtuigd dat voor iedereen geldt dat als je eenmaal gewend bent aan nieuwe mogelijkheden zoals Inline Declarations, je al snel niet meer terug wil. Dus: Just Do It!

 

Meest gelezen