Lerne und übe ABAP – Individuelle Schilder

Verbessere Deine Kenntnisse in ABAP durch die Übung „Custom Signs“. Hierbei wirst Du einen Code schreiben, um einem Schildhersteller bei der Erstellung von personalisierten Nachrichten für seine Schilder zu unterstützen. Auf der Übungsplattform „exercism“ stehen Dir 40 praktische ABAP-Aufgaben zur Verfügung, die Du entweder in Deinem SAP-System oder direkt auf der Plattform absolvieren kannst. Zudem hast Du die Möglichkeit, Lösungen von anderen Nutzern zu vergleichen und zu lernen. Eine kostenlose Anmeldung auf der Plattform ist erforderlich.

Aufgabenstellung

In dieser Übung wirst Du einen Code schreiben, der einer Schilderfirma hilft, individuelle Nachrichten für ihre Schilder zu erstellen.

Erstelle ein Anlassschild

Implementiere die Methode build_sign( ), die einen String als Parameter occasion und einen String mit dem Namen einer Person als Parameter name akzeptiert. Die beiden Parameter werden in eine Stringvorlage eingebettet, um die Nachricht auf dem Schild auszugeben.

build_sign( occasion = 'Birthday' 
            name     = 'Rob').
" => "Happy Birthday Rob!"

Ein Geburtstagsschild erstellen

Implementiere die Methode build_birthday_sign( ), die ein Alter akzeptiert, und basierend auf dem Alter einen Teil der Nachricht auf dem Schild bestimmt. Wenn das Alter 50 oder älter ist, enthält das Schild das Wort „reif“, andernfalls enthält das Schild das Wort „jung“.

build_birthday_sign( 45 ).
" => "Happy Birthday! What a young fellow you are."

Erstelle ein Zeichen für den Schulabschluss

Implementiere die Methode graduation_for( ), die einen Namen als String-Parameter und ein Jahr als numerischen Parameter annimmt und String-Templates verwendet, um eine Phrase für ein Zeichen zu erstellen, das einen Zeilenumbruch verwendet, um die beiden Zeilen der Nachricht zu trennen.

graduation_for( name = 'Hannah' 
                year = 2022 ).
" => "Congratulations Hannah!\nClass of 2022"

Berechne die Kosten für ein Zeichen

Implementiere die Funktion cost_of( sign currency ), die eine Zeichenkette, die den Inhalt des Zeichens enthält, und eine Zeichenkette, die die Währung darstellt, annimmt. Das Zeichen hat einen Basispreis von 20 in der angegebenen Währung. Zusätzlich kostet jeder Buchstabe 2. (Leerzeichen werden in die Berechnung einbezogen.) Der zurückgegebene Satz enthält die Kosten für die Erstellung des Zeichens, geschrieben mit zwei Ziffern nach dem Dezimalpunkt, gefolgt von der Währungszeichenfolge.

costOf( sign     = 'Happy Birthday Rob!'
        currency = 'euros');
// => "Your sign costs 58.00 euros."

Beispiel Programmierung

CLASS zcl_custom_signs DEFINITION
  PUBLIC
  FINAL
  CREATE PUBLIC.

  PUBLIC SECTION.

    "! Build a sign that includes both of the parameters.
    METHODS build_sign IMPORTING occasion      TYPE string
                                 name          TYPE string
                       RETURNING VALUE(result) TYPE string.

    "! Build a birthday sign that conditionally formats the return string.
    METHODS build_birthday_sign IMPORTING age           TYPE i
                                RETURNING VALUE(result) TYPE string.

    "! Build a graduation sign that includes multiple lines
    METHODS graduation_for IMPORTING name          TYPE string
                                     year          TYPE i
                           RETURNING VALUE(result) TYPE string.

    "! Determine cost based on each character of sign parameter that builds
    "! the template string that includes the currency parameter.
    METHODS cost_of IMPORTING sign          TYPE string
                              currency      TYPE string
                    RETURNING VALUE(result) TYPE string.

ENDCLASS.



CLASS zcl_custom_signs IMPLEMENTATION.

  METHOD build_sign.
    result = |Happy { occasion } { name }!|.
  ENDMETHOD.

  METHOD build_birthday_sign.
    result = |Happy Birthday! What a { cond #( when age < 50 then 'young' else 'mature' ) } fellow you are.|.
  ENDMETHOD.

  METHOD graduation_for.
    result = |Congratulations { name }!\nClass of { year }|.
  ENDMETHOD.

  METHOD cost_of.
    result = |Your sign costs { conv i( 20 + strlen( sign ) * 2 ) decimals = 2 } { currency }.|.
  ENDMETHOD.

ENDCLASS.

Erklärung

Diese ABAP-Klasse, zcl_custom_signs, definiert vier öffentliche Methoden, die einen Schilderhersteller bei der Erstellung kundenspezifischer Meldungen für Schilder unterstützen. Die Methoden sind

  • build_sign – Diese Methode nimmt eine Nachricht und einen Namen als Eingabeparameter und gibt ein Schild zurück, das beide Parameter enthält.
  • build_birthday_sign – Diese Methode nimmt das Alter einer Person als Eingabeparameter und gibt ein Geburtstagsschild zurück, das entsprechend dem Alter der Person formatiert ist.
  • graduation_for – Diese Methode nimmt den Namen einer Person und das Jahr des Abschlusses als Eingabeparameter und gibt ein mehrzeiliges Abschlusszeichen zurück.
  • cost_of – Diese Methode nimmt ein Schild und eine Währung als Eingabeparameter und gibt die Kosten des Schildes in der angegebenen Währung zurück. Die Kosten werden auf der Grundlage der Länge des Zeichenparameters berechnet.

Alle Methoden sind Teil der öffentlichen Schnittstelle dieser Klasse und können daher von anderen ABAP-Programmen aufgerufen werden.

Ü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