Lerne und übe ABAP – Wortzahl

Lerne und übe ABAP. In der ABAP-Übung „Word Count“ implementierst Du ein ABAP-Programm, um das Vorkommen jedes Wortes in einem Satz zu zä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

Zähle in einem Satz die Vorkommen jedes Wortes in diesem Satz.

Für die Zwecke dieser Übung kannst Du davon ausgehen, dass ein Wort immer eines der folgenden sein wird:

  1. Eine Zahl, die aus einer oder mehreren ASCII-Ziffern besteht (z. B. „0“ oder „1234“) ODER
  2. Ein einfaches Wort, das aus einem oder mehreren ASCII-Buchstaben besteht (z. B. „a“ oder „they“) ODER
  3. Eine Verkürzung zweier einfacher Wörter, die durch ein einzelnes Apostroph verbunden sind (z. B. „it’s“ ist „its“)

Bei der Zählung von Wörtern kannst Du von den folgenden Regeln ausgehen:

  1. Bei der Zählung wird nicht zwischen Groß- und Kleinschreibung unterschieden (d. h. „You“, „you“ und „YOU“ sind 3 Verwendungen desselben Wortes).
  2. Die Zählung ist ungeordnet; die Tests ignorieren, wie Wörter und Zählungen geordnet sind.
  3. Mit Ausnahme des Apostrophs in einer Verkürzung werden alle Formen der Interpunktion ignoriert.
  4. Die Wörter können durch eine beliebige Form von Leerzeichen getrennt werden (z. B. „\t“, „\n“, “ „)

Zum Beispiel für den Satz „"That's the password: 'PASSWORD 123'!", cried the Special Agent.\nSo I fled.“ die Zählung würde lauten:

  • thats: 1
  • the: 2
  • password: 2
  • 123: 1
  • cried: 1
  • special: 1
  • agent: 1
  • so: 1
  • i: 1
  • fled: 1

Beispiel Programmierung

CLASS zcl_word_count DEFINITION
  PUBLIC
  FINAL
  CREATE PUBLIC .

  PUBLIC SECTION.
    TYPES:
      BEGIN OF return_structure,
        word  TYPE string,
        count TYPE i,
      END OF return_structure,
      return_table TYPE STANDARD TABLE OF return_structure WITH KEY word.
    METHODS count_words
      IMPORTING
        !phrase       TYPE string
      RETURNING
        VALUE(result) TYPE return_table .
  PROTECTED SECTION.
  PRIVATE SECTION.
ENDCLASS.


CLASS zcl_word_count IMPLEMENTATION.

  METHOD count_words.
    "Add solution here
    DATA(lv_str) = replace( val = to_lower( phrase ) sub = `'` with = space occ = 0 ).    
    lv_str = replace( val = lv_str sub = `\n` with = ` ` occ = 0 ).
    lv_str = replace( val = lv_str sub = `\t` with = ` ` occ = 0 ).
    lv_str = replace( val = lv_str regex = `[^a-z0-9]` with = ` ` occ = 0 ).
    SPLIT condense( lv_str ) AT ` ` INTO TABLE DATA(lt_str).
 
    LOOP AT lt_str ASSIGNING FIELD-SYMBOL(<fs_string>).
      READ TABLE result ASSIGNING FIELD-SYMBOL(<fs_result>) WITH TABLE KEY word = <fs_string>.
      IF sy-subrc = 0.
        <fs_result>-count = <fs_result>-count + 1.
      ELSE.
        APPEND VALUE #( word  = <fs_string> 
                        count = 1 ) TO result.
      ENDIF.
    ENDLOOP.
  ENDMETHOD.
ENDCLASS.

Erklärung

Die Methode count_words gehört zur ABAP-Klasse zcl_word_count. Die Methode verarbeitet einen Eingabestring phrase und berechnet die Anzahl der Vorkommen jedes Wortes im Eingabestring. Dazu wird der Eingabestring zunächst auf Rechtschreibung, Zeilenumbrüche und Tabulatoren überprüft und bereinigt. Anschließend wird der Eingabestring in einzelne Wörter zerlegt und jedes Wort in einer internen Tabelle result gezählt. Wenn das Wort bereits in der Tabelle vorhanden ist, wird der Zähler für das Wort erhöht. Wenn das Wort noch nicht in der Tabelle vorhanden ist, wird ein neuer Eintrag mit dem Wort und einem Zähler von 1 erzeugt. Die Methode gibt dann die interne Tabelle result zurück, die die Anzahl der Vorkommen jedes Wortes im Eingabestring enthält.

Ü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