Trainiere und verbessere Deine ABAP-Kenntnisse mit der Übung „Beer Song“. Hier implementierst Du ein ABAP-Programm, das den Text des bekannten Bierliedes „99 Bottles of Beer on the Wall“ ausgibt. Übe Dich in 40 anspruchsvollen ABAP-Übungen auf der Plattform „exercism“. Du kannst entweder direkt in Deinem SAP-System üben oder Dich kostenlos auf der Plattform registrieren und die Übungen absolvieren. Du hast auch die Möglichkeit, die Lösungen anderer Teilnehmer einzusehen und mit Deinen eigenen Lösungen zu vergleichen.
Aufgabenstellung
Sage den Text des beliebten Klassikers auf, des Lieblingsstücks der Exkursion: 99 Bottles of Beer on the Wall.
Beachte, dass nicht alle Strophen identisch sind.
99 bottles of beer on the wall, 99 bottles of beer.
Take one down and pass it around, 98 bottles of beer on the wall.
98 bottles of beer on the wall, 98 bottles of beer.
Take one down and pass it around, 97 bottles of beer on the wall.
97 bottles of beer on the wall, 97 bottles of beer.
Take one down and pass it around, 96 bottles of beer on the wall.
...
3 bottles of beer on the wall, 3 bottles of beer.
Take one down and pass it around, 2 bottles of beer on the wall.
2 bottles of beer on the wall, 2 bottles of beer.
Take one down and pass it around, 1 bottle of beer on the wall.
1 bottle of beer on the wall, 1 bottle of beer.
Take it down and pass it around, no more bottles of beer on the wall.
No more bottles of beer on the wall, no more bottles of beer.
Go to the store and buy some more, 99 bottles of beer on the wall.
Hast Du die Tests bestanden und den Code sauber gemacht? Wenn Du möchtest, kannst Du zusätzlich folgende Dinge ausprobieren:
- Entferne so viel Duplikation wie möglich.
- Optimiere die Lesbarkeit, auch wenn das bedeutet, dass Du Duplikate einführen.
- Wenn Du alle Überschneidungen entfernt hast, hast Du dann eine Menge Konditionale? Versuche, die Konditionale durch Polymorphismus zu ersetzen, falls dies in dieser Sprache möglich ist. Wie lesbar ist es?
Beispiel Programmierung
CLASS zcl_beer_song DEFINITION PUBLIC FINAL CREATE PUBLIC. PUBLIC SECTION. METHODS recite IMPORTING !initial_bottles_count TYPE i !take_down_count TYPE i RETURNING VALUE(result) TYPE string_table. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_beer_song IMPLEMENTATION. METHOD recite. " add solution here DO take_down_count TIMES. DATA(lv_count) = initial_bottles_count - SY-INDEX + 1. DATA(lv_count2) = lv_count - 1. IF SY-INDEX <> 1. result = VALUE #( BASE result ( ) ). ENDIF. IF lv_count > 0. result = VALUE #( BASE result ( |{ lv_count } { COND string( WHEN lv_count = 1 THEN 'bottle' ELSE 'bottles' ) } of beer on the wall, | && |{ lv_count } { COND string( WHEN lv_count = 1 THEN 'bottle' ELSE 'bottles' ) } of beer.| ) ( COND #( WHEN lv_count2 = 0 THEN |Take it down and pass it around, no more bottles of beer on the wall.| ELSE |Take one down and pass it around, { lv_count2 } { COND string( WHEN lv_count2 = 1 THEN 'bottle' ELSE 'bottles' ) } | && |of beer on the wall.| ) ) ). ELSE. result = VALUE #( BASE result ( |No more bottles of beer on the wall, no more bottles of beer.| ) ( |Go to the store and buy some more, 99 bottles of beer on the wall.| ) ). ENDIF. ENDDO. ENDMETHOD. ENDCLASS.
Erklärung
Die Methode recite ist Teil der ABAP-Klasse zcl_beer_song und dient zur Ausgabe des Textes des bekannten Bierliedes „99 Bottles of Beer on the Wall“. Die Methode hat zwei Eingabeparameter: initial_bottles_count und take_down_count. initial_bottles_count gibt die Anzahl der Bierflaschen zu Beginn an, während take_down_count die Anzahl der Flaschen angibt, die heruntergenommen werden sollen.
Innerhalb der Methode wird eine Schleife ausgeführt, die take_down_count mehrmals iteriert. Bei jeder Iteration wird die Anzahl der verbleibenden Bierflaschen berechnet und ein Teil des Liedtextes für diese Anzahl von Flaschen generiert. Der resultierende Liedtext wird in einer Tabelle result gespeichert. Am Ende wird diese Tabelle zurückgegeben.
Über den Autor
Mein Name ist Andreas Geiger und ich bin ein erfahrener Senior SAP Berater. Mit mehr als 10 Jahren Berufserfahrung habe ich mehrere SAP-Projekte erfolgreich abgeschlossen und umfangreiche Kenntnisse in verschiedenen Bereichen wie SAP FI, SAP MM und ABAP erworben. Nun möchte ich mein Wissen mit Dir teilen, um Dir einen Mehrwert zu bieten und Dich bei Deiner täglichen Arbeit mit dem SAP-System zu unterstützen.
ERP UP unterstützen
Wenn Du mit ERP UP zufrieden bist, kannst Du mich gerne unterstützen. Dabei gibt es unzählige Möglichkeiten, wie Du mich einfach und schnell unterstützen kannst. Wie Du genau ERP UP unterstützen kannst, erfährst Du hier. Vielen Dank.