Lerne und übe ABAP – Anagramm

Lerne und übe ABAP. In der ABAP-Übung „Anagram“ implementierst Du ein ABAP-Programm, um aus einem Wort und einer Liste von Kandidaten die Unterliste der Anagramme des gegebenen Wortes auszuwählen. 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

Ein Anagramm ist eine Umstellung von Buchstaben, um ein neues Wort zu bilden. Wähle aus einem Wort und einer Liste von Kandidaten die Unterliste der Anagramme des gegebenen Wortes.

Bei „listen“ und einer Liste von Kandidaten wie „enlists“ „google“ „inlets“ „banana“ sollte das Programm eine Liste mit „inlets“ zurückgeben.

Beispiel Programmierung

CLASS zcl_anagram DEFINITION
  PUBLIC
  FINAL
  CREATE PUBLIC .

  PUBLIC SECTION.
    METHODS anagram
      IMPORTING
        input         TYPE string
        candidates    TYPE string_table
      RETURNING
        VALUE(result) TYPE string_table.
    METHODS sort_string
      IMPORTING
        input         TYPE string
      RETURNING
        VALUE(result) TYPE string.
  PROTECTED SECTION.
  PRIVATE SECTION.
ENDCLASS.



CLASS zcl_anagram IMPLEMENTATION.
  METHOD anagram.
    LOOP AT candidates ASSIGNING FIELD-SYMBOL(<fs_candidate>).
      IF sort_string( input ) = sort_string( <fs_candidate> ) AND to_lower( input ) <> to_lower( <fs_candidate> ).
        APPEND <fs_candidate> TO result.
      ENDIF.
    ENDLOOP.
  ENDMETHOD.

  METHOD sort_string.
    DATA lt_input_letters TYPE string_table.

    DATA(lv_input_lower) = to_lower( input ).
    DATA(lv_len) = strlen( lv_input_lower ).
    DATA(lv_index) = 0.
    DO lv_len TIMES.
      lv_index = sy-index - 1.
      APPEND lv_input_lower+lv_index(1) TO lt_input_letters.
    ENDDO.

    SORT lt_input_letters.
    LOOP AT lt_input_letters ASSIGNING FIELD-SYMBOL(<fs_letter>).
      result = |{ result }{ <fs_letter> }|.
    ENDLOOP.
  ENDMETHOD.

ENDCLASS.

Erklärung

Die Klasse zcl_anagram hat zwei Methoden:

  • Die Methode anagram vergleicht jedes Wort im Importparameter (Tabelle) candidates mit dem Eingabewort input. Wenn das sortierte Ergebnis der beiden Wörter gleich ist und das Eingabewort nicht mit dem Vergleichswort übereinstimmt (also ein Anagramm ist), wird das Vergleichswort zum Exportparameter result hinzugefügt.
  • Die Methode sort_string sortiert jeden Buchstaben des Eingabewortes input in eine interne Tabelle und gibt das sortierte Wort als Ergebnis zurück. Dabei wird das Wort in Kleinbuchstaben umgewandelt, um Groß- und Kleinschreibung zu ignorieren.

Ü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