Lerne und übe ABAP – Geheimer Händedruck

Lerne und übe ABAP. In der ABAP-Übung „Secret Handshake“ implementierst Du ein ABAP-Programm, um eine Dezimalzahl in die entsprechende Abfolge von Ereignissen für einen geheimen Handshake zu konvertieren. Es gibt 40 geniale ABAP Übungen auf exercism. Du kannst diese Übung entweder in Deinem SAP-System ausprobieren oder Dich kostenlos auf der Plattform anmelden und die Übung absolvieren. Du kannst Dir sogar Lösungen von anderen Nutzen ansehen und dadurch Deine Lösung vergleichen.

Aufgabenstellung

Es gibt 10 Arten von Menschen auf der Welt: Diejenigen, die das Binärsystem verstehen, und diejenigen, die es nicht verstehen.

Du und Deine Mitstreiter, die sich mit dem Binärsystem auskennen, beschließen, einen geheimen „Handschlag“ zu entwickeln.

00001 = Zwinkern
00010 = doppeltes Zwinkern
00100 = die Augen schließen
01000 = springen

10000 = Umkehrung der Reihenfolge der Operationen im geheimen Handschlag.

Wandle eine Dezimalzahl in die entsprechende Abfolge von Ereignissen für einen geheimen Händedruck um.

Hier sind ein paar Beispiele:

Bei der dezimalen Eingabe 3 würde die Funktion die folgende string_table zurückgeben:

RowTABLE_LINE
1wink
2double blink

Das liegt daran, dass die Dezimalzahl 3 2+1 in Zweierpotenzen und somit 11 in binärer Form ist.

Betrachten wir nun die Eingabe 19, die 16+2+1 in Zweierpotenzen und somit 10011 im Binärformat ist. Wenn man bedenkt, dass die Addition von 16 (10000 im Binärsystem) die Reihenfolge umkehrt und dass wir bereits wissen, welches Ergebnis bei Eingabe 3 zurückgegeben wird, lautet die für Eingabe 19 zurückgegebene string_table:

RowTABLE_LINE
1double blink
2wink

Beispiel Programmierung

CLASS zcl_secret_handshake DEFINITION
  PUBLIC
  FINAL
  CREATE PUBLIC .

  PUBLIC SECTION.
    METHODS get_commands
      IMPORTING code            TYPE i
      RETURNING VALUE(commands) TYPE string_table.
  PROTECTED SECTION.
  PRIVATE SECTION.
ENDCLASS.



CLASS zcl_secret_handshake IMPLEMENTATION.

  METHOD get_commands.
    " add solution here
    DATA lv_binary_zero TYPE x VALUE 0.
    DATA(lv_binary_code) = CONV xstring( code ).
    DATA(lt_commands) = VALUE string_table( ( `wink` ) ( `double blink` ) ( `close your eyes` ) ( `jump` ) ).
    LOOP AT lt_commands REFERENCE INTO DATA(lr_command).
      IF CONV xstring( 2 ** ( sy-tabix - 1 ) ) BIT-AND lv_binary_code > lv_binary_zero.
        APPEND lr_command->* TO commands.
      ENDIF.
    ENDLOOP.
    IF lv_binary_code BIT-AND CONV xstring( 16 ) > lv_binary_zero.
      DATA(lt_rev_commands) = VALUE string_table( FOR line IN commands
                                                    INDEX INTO i
                                                    ( commands[ lines( commands ) - i + 1 ] ) ).
      commands = lt_rev_commands.
    ENDIF.

  ENDMETHOD.

ENDCLASS.

Erklärung

Die Methode get_commands ist eine Methode der Klasse zcl_secret_handshake. Die Methode erwartet einen numerischen Code als Eingabe und gibt eine Liste von Kommandos als Ausgabe zurück. Die Methode verwendet logische Verarbeitung, um die Ausgabe auf der Grundlage des numerischen Codes zu erzeugen.

Zuerst wird der numerische Code in einen binären Code umgewandelt. Dann wird eine Tabelle mit vier Befehlen erzeugt. In einer Schleife wird für jeden Befehl geprüft, ob er im Binärcode vorhanden ist. Ist dies der Fall, wird der Befehl in eine Ausgabeliste aufgenommen. Am Ende wird geprüft, ob das 16. Wenn ja, wird die Reihenfolge der Befehle in der Ausgabeliste umgekehrt.

Über den Autor

Andreas Geiger

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.

Mehr zu ERP UP

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.

Schreibe einen Kommentar