Lerne und übe ABAP – Matrix

Lerne und übe ABAP. In der ABAP-Übung „Matrix“ implementierst du ein ABAP-Programm zur Darstellung einer Matrix. Für eine Zeichenkette, die eine Zahlenmatrix darstellt, werden die Zeilen und Spalten der Matrix zurückgegeben. 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 machen. Du kannst sogar die Lösungen anderer Benutzer ansehen und so Deine Lösung vergleichen.

Aufgabenstellung

Gib eine Zeichenkette, die eine Zahlenmatrix darstellt, die Zeilen und Spalten dieser Matrix zurück.

Bei einer Zeichenkette mit eingebetteten Zeilenumbrüchen wie:

9 8 7
5 3 2
6 6 7

die diese Matrix darstellt:

    1  2  3
  |---------
1 | 9  8  7
2 | 5  3  2
3 | 6  6  7

Sollte Dein Code in der Lage sein, auszuspucken:

  • Eine Liste der Zeilen, wobei jede Zeile von links nach rechts gelesen wird, während man sich von oben nach unten durch die Zeilen bewegt,
  • eine Liste der Spalten, wobei jede Spalte von oben nach unten gelesen wird, während man sich von links nach rechts bewegt.

Die Zeilen für unsere Beispielmatrix:

  • 9, 8, 7
  • 5, 3, 2
  • 6, 6, 7

Und die Spalten:

  • 9, 5, 6
  • 8, 3, 6
  • 7, 2, 7

Beispiel Programmierung

CLASS zcl_matrix DEFINITION
  PUBLIC
  FINAL
  CREATE PUBLIC .

  PUBLIC SECTION.
    TYPES integertab TYPE STANDARD TABLE OF i WITH EMPTY KEY.
    METHODS matrix_row
      IMPORTING
        string        TYPE string
        index         TYPE i
      RETURNING
        VALUE(result) TYPE integertab.
    METHODS matrix_column
      IMPORTING
        string        TYPE string
        index         TYPE i
      RETURNING
        VALUE(result) TYPE integertab.
  PROTECTED SECTION.
  PRIVATE SECTION.

ENDCLASS.



CLASS zcl_matrix IMPLEMENTATION.
  METHOD matrix_row.
    " add solution here
    SPLIT string AT '\n' INTO TABLE DATA(lt_string).
    READ TABLE lt_string ASSIGNING FIELD-SYMBOL(<fs_string>) INDEX index.
    SPLIT <fs_string> AT space INTO TABLE DATA(lt_result).
    LOOP AT lt_result ASSIGNING FIELD-SYMBOL(<fs_result>).
      APPEND <fs_result> TO result.
    ENDLOOP.
  ENDMETHOD.

  METHOD matrix_column.
    " add solution here
    SPLIT string AT '\n' INTO TABLE DATA(lt_string).
    LOOP AT lt_string ASSIGNING FIELD-SYMBOL(<fs_string>).
      SPLIT <fs_string> AT space INTO TABLE DATA(lt_column).
      READ TABLE lt_column ASSIGNING FIELD-SYMBOL(<fs_column>) INDEX index.
      APPEND <fs_column> TO result.
    ENDLOOP.
  ENDMETHOD.
ENDCLASS.

Erklärung

Die Methode matrix_row nimmt einen String und einen Index als Eingabe. Der String repräsentiert eine Matrix, in der jede Zeile durch einen Zeilenumbruch (\n) getrennt ist. Die Methode liest die Zeile an der Stelle des angegebenen Index aus dem String und teilt sie in ihre einzelnen Spalten (durch Leerzeichen getrennt) auf. Die einzelnen Spalten werden als Integer in einer Tabelle zurückgegeben.

Die Methode matrix_column nimmt einen String und einen Index als Eingabe. Der String repräsentiert eine Matrix, in der jede Zeile durch einen Zeilenumbruch (\n) getrennt ist. Die Methode zerlegt jede Zeile des Strings in ihre einzelnen Spalten (durch Leerzeichen getrennt) und liest die Spalte an der Stelle des angegebenen Index. Die Werte der ausgewählten Spalte werden als Integer in einer Tabelle zurückgegeben.

Ü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