Welcome to the ABAP Code Retreat
Last Saturday morning (january 21st 2017) we welcomed 18 eager developer at our office in the Meern. It was time for the first Dutch ABAP Code Retreat. A whole day worth of ABAP programming, under the guidance of Damir Majer and Christian Drumm, via a (probably) different approach as we use in our daily work.
Networking
Besides improving our ABAP skills, networking with fellow SAP developers is also an important factor during the ABAP Code Retreat. With some cookies, cake and coffee this was a great way to start this day. Even in between the various session there was plenty of time to discuss our daily work and problem-solving-approaches with other developers.
Introduction of the day
The first formal moment of the day started with an introduction of Damir and Christian. They introduced themselves and told us why they started ABAP Code Retreats.
Session 1: ABAP Push Channels
After the introduction of Damir and Christian, we started with the first session by Roel van den Berge about ABAP Push Channels. Roel showed us how to use this relatively new framework to push an event from ABAP and receive it in a SAP UI5 application where the event was processed.
In his demo he had a SAP UI5 program which showed a list of all ST22 backend system dump which occurred in the last 24 hours. Once an event from the backend has been pushed (via ABAP Push Channels) the SAP UI5 program reacted by refreshing the list and showing us the new dumps from ST22. Roel explained that since ABAP Push Channels uses Websockets, other programming languages (think Java, Javascript, C# etc) can also use this framework to communicate with a SAP backend systems.
Session 2: ABAP in Eclipse
After a short break Christian took the stage and gave an extended demo of ABAP in Eclipse. He showed us how to connect to the backend system and generally how to use Eclipse in your daily ABAP work. Since we were expected to work in Eclipse on our assignments later today, this was a really welcome introduction to the subject. Christian also highlighted a feature missing in our SAP GUI, which made me switch to Eclipse for my daily work at the customer; Extract Method.
You simply select some lines of coding, execute the ‘Extract Method’ from the context menu, and a new method is created containing the selected lines of code. A call to this new method is placed at the position where the code was before. This makes refactoring a whole lot easier.
Session 3: TDD (Test Driven Development)
For the third session Damir talked about TDD. He explained that focusing on writing test first (based on the requirements), forces you to split up your code in reusable, single-purpose methods. It encourages simple designs and improves maintainability of your code.
Then Damir continued and showed us how to actually write these units tests in ABAP (using Eclipse of course).
Lunch
After these 3 interesting topics it was already past 12:30, time for lunch!
Getting our hands dirty: The Game of Life
After lunch, Damir explained our challenge for the day; The Game of Life:
https://en.wikipedia.org/wiki/Conway's_Game_of_Life
We were supposed to work out a part of the assignment using the TDD approach. We did this in 4 iterations, with a slightly different angle in each iteration. Each iteration lasted 45 minutes (time-boxed) and before starting the next, we did some sort of retrospective of the last iteration. And on top of that, with each new iteration you got a new partner with which you got to work on the Game of Life, pair programming style. This means, 2 programmers using 1 computer together, sliding the keyboard and mouse back and forth.
Iteration 1
The first iteration was all about taking one part of the problem, and start with writing a unit test before writing any code. But this meant breaking up the problem first. This took up quite some time for most, partly because the Game of Life is not something you ‘implement’ in a few minutes, but also because pair programming takes some time to getting used to. But at the end of the first iteration most of us already got some working unit tests. Time for the first retrospective...
Iteration 2
For the next iteration we had to switch partners, throw away everything we created in the first iteration and start all over again. Most new teams got a lot further with the unit tests and implementation of the Game of Life.
Iteration 3
‘Finish the implementation and forget about the unit tests’ were the instructions in the next iteration. This was what some developers were waiting for….
Iteration 4
In the last iteration we were meant to add unit tests for the (partly) finished implementation. But I guess most teams were so focused into finishing the Game of Life implementation that they just continued doing just that.
After the last retrospective, most of us were convinced that TDD could indeed improve your code. On top of that, a lot of developers were also convinced that using Eclipse instead of the SAP GUI can be beneficial for their daily work.
We ended this successful day around 17:00 by thanking our guest speakers Damir Majer, Christian Drumm and Roel van den Berge with a proper speaker present.

More information about ABAP Code Retreats in general can be found at:
https://wiki.scn.sap.com/wiki/display/events/ABAP+CodeRetreat
Details and presentations held at this ABAP Code Retreat can be found at:
https://wiki.scn.sap.com/wiki/display/events/ABAP+CodeRetreat+de+Meern+Netherlands+21th+January+2017