Lerne und übe ABAP. Als angehende Magierin muss Elyse einige Grundlagen üben. Sie hat einen Stapel Karten, die sie manipulieren möchte. In der ABAP-Übung „Elyses Enchantments“ implementierst Du ein ABAP-Programm, um Elyse das Zaubern beizubringen. Dabei lernst Du wichtige Operationen auf interne Tabellen. 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
Als angehende Magierin muss Elyse einige Grundlagen üben. Sie hat einen Kartenstapel, den sie manipulieren möchte.
Um die Sache ein wenig zu vereinfachen, verwendet sie nur die Karten 1 bis 10, sodass ihr Kartenstapel durch eine interne Zahlentabelle dargestellt werden kann. Die Position einer bestimmten Karte entspricht der Tabellenzeile. Das heißt, Zeile 1 bezieht sich auf die erste Karte, Zeile 2 auf die zweite Karte usw.
Abrufen einer Karte von einem Stapel
Um eine Karte auszuwählen, gib die Karte an der Indexposition aus dem angegebenen Stapel zurück.
data(stack) = value #( ( 1 ) ( 2 ) ( 4 ) ( 1 ) ). data(card) = get_Item( stack = stack position = 3 ). " card = 4
Eine Karte im Stapel austauschen
Führe einen Taschenspielertrick aus und tausche die Karte an der Indexposition gegen die angegebene Ersatzkarte aus. Geben Sie den angepassten Stapel zurück.
data(stack) = value #( ( 1 ) ( 2 ) ( 4 ) ( 1 ) ). data(new_Stack) = set_Item( stack = stack position = 3 replacement = 6 ). " new_Stack = 1, 2, 6, 1
Einfügen einer Karte an der Spitze des Stapels
Füge eine neue Karte am oberen Ende des Stapels ein, damit eine Karte erscheint. Gib den angepassten Stapel zurück.
data(stack) = value #( ( 5 ) ( 9 ) ( 7 ) ( 1 ) ). data(new_Stack) = insert_Item_at_Top( stack = stack new_Card = 8 ). " new_Stack = 5, 9, 7, 1, 8
Eine Karte aus dem Stapel entfernen
Lasse eine Karte verschwinden, indem du die Karte an der angegebenen Position aus dem Stapel entfernst. Gib den angepassten Stapel zurück.
data(stack) = value #( ( 3 ) ( 2 ) ( 6 ) ( 4 ) ( 8 ) ). data(new_Stack) = remove_Item( stack = stack position = 3 ). " new_Stack = 3, 2, 4, 8
Die oberste Karte vom Stapel entfernen
Lasse eine Karte verschwinden, indem du die oberste Karte vom Stapel entfernst. Gib den angepassten Stapel zurück.
data(stack) = value #( ( 3 ) ( 2 ) ( 6 ) ( 4 ) ( 8 ) ). data(new_Stack) = remove_Item_from_Top( stack ). " new_Stack = 3, 2, 6, 4
Einfügen einer Karte am unteren Ende des Stapels
Füge eine neue Karte am unteren Ende des Stapels ein, damit eine Karte erscheint. Gib den angepassten Stapel zurück.
data(stack) = value #( ( 5 ) ( 9 ) ( 7 ) ( 1 ) ). data(new_Stack) = insert_Item_at_Bottom( stack = stack new_Card = 8 ). " new_Stack = 8, 5, 9, 7, 1
Eine Karte vom unteren Ende des Stapels entfernen
Lasse eine Karte verschwinden, indem du die Karte am unteren Ende des Stapels entfernst. Gib den angepassten Stapel zurück.
data(stack) = value #( ( 8 ) ( 5 ) ( 9 ) ( 7 ) ( 1 ) ). data(new_Stack) = remove_Item_from_Top( stack ). " new_Stack = 5, 9, 7, 1
Überprüfen der Größe des Stapels
Rückgabe der Größe des Stapels (Anzahl der Zeilen).
data(stack) = value #( ( 3 ) ( 2 ) ( 6 ) ( 4 ) ( 8 ) ). data(size_of_Stack) = get_Size_of_Stack( stack ). " size_of_Stack = 5
Beispiel Programmierung
CLASS zcl_elyses_enchantments DEFINITION PUBLIC FINAL CREATE PUBLIC . PUBLIC SECTION. TYPES ty_stack TYPE STANDARD TABLE OF i WITH EMPTY KEY. "! Get card at position METHODS get_item IMPORTING stack TYPE ty_stack position TYPE i RETURNING VALUE(result) TYPE i. "! Replace card at position METHODS set_item IMPORTING stack TYPE ty_stack position TYPE i replacement TYPE i RETURNING VALUE(result) TYPE ty_stack. "Add card to stack METHODS insert_item_at_top IMPORTING stack TYPE ty_stack new_card TYPE i RETURNING VALUE(result) TYPE ty_stack. "! Remove card at position METHODS remove_item IMPORTING stack TYPE ty_stack position TYPE i RETURNING VALUE(result) TYPE ty_stack. "! Remove top card (last row) METHODS remove_item_from_top IMPORTING stack TYPE ty_stack RETURNING VALUE(result) TYPE ty_stack. "! Add card to bottom of stack (first row) METHODS insert_item_at_bottom IMPORTING stack TYPE ty_stack new_card TYPE i RETURNING VALUE(result) TYPE ty_stack. "! Remove bottom card (delete first row) METHODS remove_item_from_bottom IMPORTING stack TYPE ty_stack RETURNING VALUE(result) TYPE ty_stack. "! Count cards METHODS get_size_of_stack IMPORTING stack TYPE ty_stack RETURNING VALUE(result) TYPE i. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_elyses_enchantments IMPLEMENTATION. METHOD get_item. "Implement solution here result = stack[ position ]. ENDMETHOD. METHOD set_item. "Implement solution here result = stack. result[ position ] = replacement. ENDMETHOD. METHOD insert_item_at_top. "Implement solution here result = stack. INSERT new_card INTO TABLE result. ENDMETHOD. METHOD get_size_of_stack. "Implement solution here result = lines( stack ). ENDMETHOD. METHOD insert_item_at_bottom. "Implement solution here INSERT new_card INTO TABLE result. INSERT LINES OF stack INTO TABLE result. ENDMETHOD. METHOD remove_item. "Implement solution here result = stack. DELETE result INDEX position. ENDMETHOD. METHOD remove_item_from_bottom. "Implement solution here result = stack. DELETE result INDEX 1. ENDMETHOD. METHOD remove_item_from_top. "Implement solution here result = stack. DELETE result INDEX lines( stack ). ENDMETHOD. ENDCLASS.
Erklärung
Die Klasse zcl_elyses_enchantments ist eine ABAP-Klasse, die Methoden zur Verwaltung eines Kartenstapels bereitstellt. Der Typ ty_stack ist als Standardtabelle mit leerem Schlüssel und ganzen Zahlen (Typ „i“) definiert.
Die Methode get_item gibt die Karte an der angegebenen Position zurück. Der Stack und die gewünschte Position werden als Eingabeparameter übergeben.
Die Methode set_item ersetzt die Karte an der angegebenen Position. Als Eingabeparameter werden der Stack, die gewünschte Position und die Ersatzkarte übergeben.
Die Methode insert_item_at_top fügt eine Karte oben in den Stapel ein. Als Eingabeparameter werden der Stapel und die neue Karte übergeben.
Die Methode get_size_of_stack zählt die Anzahl der Karten im Stapel und gibt sie zurück. Als Eingabeparameter wird der Kartenstapel übergeben.
Die Methode insert_item_at_bottom fügt eine Karte am unteren Ende des Stapels (erste Zeile) ein. Als Eingabeparameter werden der Stack und die neue Karte übergeben.
Die Methode remove_item entfernt die Karte an der angegebenen Position. Als Eingabeparameter werden der Stapel und die gewünschte Position übergeben.
Die Methode remove_item_from_bottom entfernt die unterste Karte (erste Zeile) aus dem Stapel. Als Eingabeparameter wird der Stack übergeben.
Die Methode remove_item_from_top entfernt die oberste Karte (letzte Zeile) vom Stapel. Als Eingabeparameter wird der Stack übergeben.
Ü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.