Code analysieren und testen
Korrekte Verwendung von Datentypen und Typkonvertierungen
Verarbeitung von Zeichenfeldern
Code-Pushdown in ABAP SQL verwenden
Performance interner Tabellen verbessern
Implementieren von Berechtigungsprüfungen
Effektiven objektorientierten Code entwerfen
Ausnahmeklassen definieren und mit Ausnahmeklassen arbeiten
Dokumentation zum ABAP-Quelltext hinzufügen

ABAP-Code dokumentieren

Objective

After completing this lesson, you will be able to aBAP-Code dokumentieren.

ABAP-Quelltextdokumentation

Wenn Sie den Cursor auf den Namen einer Klasse, einer Methode oder eines Typs positionieren und F2 drücken, wird ein Dialogfenster mit den entsprechenden Elementinformationen angezeigt.

Sie können diesem Dialog über ABAP Doc Dokumentation hinzufügen. Sie legen diese Dokumentation an, indem Sie Ihrem Quelltext spezielle Kommentarzeilen hinzufügen. Mit ABAP Doc können Sie die folgenden deklarativen Anweisungen dokumentieren:

  • CLASS
  • INTERFACE
  • METHODS
  • TYPES
  • DATA
  • CONSTANTS

Sie können auch die einzelnen Parameter und Ausnahmen von Methoden und Funktionsbausteinen dokumentieren.

ABAP-Doc-Kommentare stehen vor dem Element, das sie dokumentieren. Sie beginnen mit den Zeichen "!. Wenn Sie versuchen, ABAP Doc an einer unzulässigen Stelle in der Klasse anzulegen, gibt das System eine Syntaxwarnung aus und die Dokumentation wird ignoriert.

ABAP-Doc-Kommentare können nicht übersetzt werden. Sie sollten daher sorgfältig überlegen, in welcher Sprache Sie Ihre Dokumentation anlegen möchten.

Ihre ABAP-Doc-Kommentare werden Teil der Elementdokumentation.

ABAP Doc verwendet eine Teilmenge von HTML-Tags, mit denen Sie Ihre Dokumentation formatieren können. Das Beispiel verwendet das <strong> -Tag für die Betonung und ein <br> -Tag für einen Zeilenumbruch. (Beachten Sie, dass ohne das Zeilenumbruch-Tag die beiden Zeilen von ABAP Doc nebeneinander angezeigt werden.)

Neben stark hervorgehobenem Text und Zeilenumbruch können Sie die folgenden Tags verwenden:

Zusätzliche Format-Tags in ABAP Doc

EinsatzmöglichkeitenFormatieren von Tags
Kopf, Ebene 1<h1>...</h1>
Kopf, Ebene 2<h2>...</h2>
Kopf, Ebene 3<h3>...</h3>
Hervorgehobener Text<em>...</em>
Absatz<p>...</p>
Unsortierte Liste<ul><li>...</li>...<li>...</li></ul>
Sortierte Liste<ol><li>...</li>...<li>...</li></ol>

Hinweis

In einem ABAP-Doc-Kommentar können Sie die Code Completion (Strg + Leertaste) verwenden, um Formatierungs-Tags einzufügen.

Mit ABAP Doc können Sie sowohl eine Methode als auch ihre einzelnen Parameter dokumentieren. Um die Methode zu dokumentieren, verwenden Sie die normalen "! Kommentare. Um einen Parameter zu dokumentieren, verwenden Sie die Notation "! @parameter <name> |, und fügen Sie Ihren Kommentar nach dem Pipe-Zeichen (|) ein.

Sie können ABAP Doc für eine Methode und ihre Signatur mit einem Quickfix hinzufügen. Nachdem Sie die Methode deklariert haben, drücken Sie Strg + 1, um die möglichen Quickfixes zu öffnen, und wählen Sie ABAP Doc hinzufügen. Der Editor generiert dann die entsprechende Dokumentation.

Wenn sich die Signatur einer Methode ändert, können Sie Quickfixes verwenden, um die ABAP-Doc-Kommentare gelöschter Parameter zu löschen und ABAP-Doc-Kommentare für neue Parameter hinzuzufügen.

Sie können sicherstellen, dass eine ABAP-Doc-Beschreibung eines Objekts in die Beschreibung in den Objekteigenschaften und in die Objektliste repliziert wird. Verwenden Sie dazu ein Absatz-Tag <p> mit dem Zusatz class="shorttext synchronized".

Änderungen, die Sie an der Beschreibung in den Objekteigenschaften vornehmen, werden in den ABAP-Doc-Kommentar repliziert.

Sie können Navigationslinks zur Dokumentation anderer Objekte hinzufügen.

Neben der Verknüpfung mit einem gesamten Objekt können Sie auch eine Verknüpfung zu seinen einzelnen Elementen herstellen. In unserem Beispiel gibt es einen Link auf die Methode GET_AIRPORTS. - Der Link "! {@link zif_1_abap_doc_constants.DATA:auth_create} definiert einen Link auf die Dokumentation der Konstante auth_create im Interface ZIF_1_ABAP_DOC_CONSTANTS.

Verwenden Sie die folgenden IDs für einzelne Elemente:

DATEN
für Konstanten, Variablen und Prozedurparameter im entsprechenden Kontext
DOMA
für Domänen im ABAP Dictionary
INTF
für Interfaces, die in einer Klasse implementiert sind (für den Zugriff auf die Interfacekomponenten)
METH
für Methoden

Verwendung von ABAP Doc zur Dokumentation von Code

In diesem Video erfahren Sie, wie Sie ABAP-Doc verwenden, um Code zu dokumentieren.

Dokumentation zu ABAP-Code hinzufügen

In dieser Übung fügen Sie Ihrem Quelltext Dokumentation hinzu, um die Arbeit damit zu erleichtern.

Vorlage:

  • /LRN/CL_S4D401_EXS_CLASS (globale Klasse)

Lösung:

  • /LRN/CL_S4D401_DCS_ABAP_DOC (globale Klasse)

Aufgabe 1: Vorlage kopieren (optional)

Kopieren Sie die Vorlagenklasse /LRN/CL_S4D401_EXS_CLASS. Wenn Sie die vorherige Übung abgeschlossen haben, können Sie diese Aufgabe überspringen und mit der Bearbeitung Ihrer Klasse ZCL_##_SOLUTION fortfahren.

Schritte

  1. Kopieren Sie die Klasse /LRN/CL_S4D401_EXS_CLASS in eine Klasse in Ihrem eigenen Paket (Namensvorschlag: ZCL_##_SOLUTION, wobei ## für Ihre Gruppennummer steht).

    1. Klicken Sie im Project Explorer mit der rechten Maustaste auf die Klasse /LRN/CL_S4D401_EXS_CLASS, um das Kontextmenü zu öffnen.

    2. Wählen Sie im Kontextmenü Duplizieren....

    3. Geben Sie den Namen Ihres Pakets in das Feld Package ein. Geben Sie im Feld NameZCL_##_SOLUTION ein, wobei ## für Ihre Gruppennummer steht.

    4. Wählen Sie Next.

    5. Bestätigen Sie den Transportauftrag, und wählen Sie Finish.

  2. Aktivieren Sie die Kopie.

    1. Drücken Sie Strg + F3, um die Klasse zu aktivieren.

Aufgabe 2: Dokumentation hinzufügen

Fügen Sie der lokalen Klasse LCL_CARRIER und der Factory-Methode GET_INSTANCEeine ABAP-Doc-Dokumentation hinzu.

Vorgeschlagene Dokumentationstexte

TypCodeelementDokumentation
Lokale KlasseLCL_CARRIER

Fluggesellschaft - Eine Factory-Logik stellt sicher, dass es für jede Spediteur-ID nur eine Instanz geben kann.

MethodeGET_INSTANCE

Factory-Methode - gibt eine Instanz dieser Klasse zurück.

Parameteri_carrier_id

Dreistellige Identifikation des Frachtführers.

Parameterr_resultReferenz auf die Instanz - initial, wenn die Instanziierung fehlgeschlagen ist.
AusnahmeZCX_##_FAILEDInstanziierung fehlgeschlagen - Details siehe Ausnahmetext.

Schritte

  1. Verwenden Sie eine Schnellkorrektur, um der lokalen Klasse LCL_CARRIEReine ABAP-Doc-Dokumentation hinzuzufügen.

    1. Navigieren Sie in Ihrer globalen Klasse zur Definition der lokalen Klasse LCL_CARRIER.

    2. Positionieren Sie in der Anweisung CLASS … DEFINITION den Cursor auf lcl_carrier, und drücken Sie Strg + 1, um die verfügbaren Quickfixes aufzurufen.

    3. Wählen Sie aus der Liste der verfügbaren Quickfixes die Option ABAP-Doc hinzufügen.

      Ergebnis

      Die Schnellkorrektur passt den Code wie folgt an:
      ABAP
      12
      "! CLASS lcl_carrier DEFINITION CREATE PRIVATE.
  2. Pflegen Sie die Dokumentation mit dem Text aus der Tabelle.

    Hinweis

    Wenn Sie die Eingabetaste drücken, fügt der Editor eine neue Zeile ein, die mit "! beginnt.
    1. Passen Sie den Quelltext wie folgt an:

      ABAP
      123
      "! Flight Carrier - "! A factory logic ensures that there can only be one instance for each carrier ID. CLASS lcl_carrier DEFINITION CREATE PRIVATE.
  3. Zeigen Sie die ABAP-Elementinformationen für die lokale Klasse LCL_CARRIER an, um die Ausgabe anzuzeigen.

    1. Positionieren Sie in der Anweisung CLASS … DEFINITION den Cursor auf lcl_carrier, und drücken Sie F2, um die Elementinfo anzuzeigen.

    2. Der ABAP-Doc-Text wird unter der Überschrift Dokumentation angezeigt.

  4. Verwenden Sie eine Schnellkorrektur, um ABAP-Doc-Dokumentation zur statischen Methode GET_INSTANCE der lokalen Klasse LCL_CARRIER hinzuzufügen.

    1. Navigieren Sie in der Klasse LCL_CARRIER zur Definition der Methode GET_INSTANCE.

    2. Positionieren Sie in der Anweisung CLASS-METHODS den Cursor auf get_instance, und drücken Sie Strg + 1, um die verfügbaren Quickfixes aufzurufen.

    3. Wählen Sie aus der Liste der verfügbaren Quickfixes die Option ABAP-Doc hinzufügen.

      Ergebnis

      Die Schnellkorrektur passt den Code wie folgt an:
      ABAP
      12345
      "! "! @parameter i_carrier_id | "! @parameter r_result | "! @raising zcx_##_failed | CLASS-METHODS get_instance
  5. Pflegen Sie die Dokumentation zur Methode mit dem Text aus der Tabelle.

    1. Passen Sie den Quelltext wie folgt an:

      ABAP
      12345
      "! Factory method - returns an instance of this class. "! @parameter i_carrier_id | "! @parameter r_result | "! @raising zcx_##_failed | CLASS-METHODS get_instance
  6. Pflegen Sie die Dokumentation zu den Methodenparametern und zur Ausnahme mit den Texten aus der Tabelle.

    1. Passen Sie den Quelltext wie folgt an:

      ABAP
      12345
      "! Factory method - returns an instance of this class. "! @parameter i_carrier_id | Three-character identification of the carrier. "! @parameter r_result | Reference to the instance - initial if instantiation failed. "! @raising zcx_##_failed | Instantiation failed - evaluate the exception text for details. CLASS-METHODS get_instance
  7. Zeigen Sie die ABAP-Elementinformationen für die Methode GET_INSTANCE der lokalen Klasse LCL_CARRIER an, um die Ausgabe anzuzeigen.

    1. Positionieren Sie in der Anweisung CLASS-METHODS den Cursor auf get_instance, und drücken Sie F2, um die Elementinfo anzuzeigen.

    2. Die ABAP-Doc-Texte werden unter der Überschrift Dokumentation angezeigt.

Aufgabe 3: Formatierte Dokumentation hinzufügen

Fügen Sie formatierte ABAP-Doc-Dokumentation für die Methode FIND_PASSENGER_FLIGHT der lokalen Klasse LCL_CARRIER hinzu. Fügen Sie optional eine ähnliche ABAP-Doc-Dokumentation für die Methode FIND_CARGO_FLIGHT hinzu.

Vorgeschlagene Dokumentationstexte

TypCodeelementDokumentation
MethodeFIND_PASSENGER_FLIGHT

Suchen Sie nach einem Passagierflug zwischen zwei Flughäfen, die

  • auf oder nach einem bestimmten Datum liegt und
  • hat eine Mindestanzahl verfügbarer Plätze übrig
Parameteri_airport_from_id

Abflugflughafen

Parameteri_airport_to_idAnkunftsflughafen
Parameteri_from_dateErstes mögliches Flugdatum
Parameteri_sitzeMindestanzahl verfügbarer Plätze
Parametere_flightGefundener Flug (Objektreferenz)
Parametere_days_laterAnzahl der Tage nach dem Wunschtermin

Schritte

  1. Verwenden Sie eine Schnellkorrektur, um der Methode FIND_PASSENGER_FLIGHT der lokalen Klasse LCL_CARRIEReine ABAP-Doc-Dokumentation hinzuzufügen.

    1. Navigieren Sie in der Klasse LCL_CARRIER zur Definition der Methode FIND_PASSENGER_FLIGHT.

    2. Platzieren Sie in der METHODS-Anweisung den Cursor auf find_passenger_flight, und drücken Sie Strg + 1, um die verfügbaren Quickfixes aufzurufen.

    3. Wählen Sie aus der Liste der verfügbaren Quickfixes die Option ABAP-Doc hinzufügen.

      Ergebnis

      Die Schnellkorrektur passt den Code wie folgt an:
      ABAP
      12345678
      "! "! @parameter i_airport_from_id | "! @parameter i_airport_to_id | "! @parameter i_from_date | "! @parameter i_seats | "! @parameter e_flight | "! @parameter e_days_later | METHODS find_passenger_flight
  2. Pflegen Sie die Dokumentation zur Methode mit dem Text aus der Tabelle. Stellen Sie sicher, dass Sie den Passagierflug als stark hervorgehobenen Text formatieren, und verwenden Sie eine unsortierte Liste für die Flugeigenschaften.

    Hinweis

    Sie müssen sich nicht auswendig an die Formatanweisungen erinnern. Drücken Sie Strg + Leertaste, um eine Formatanweisung über die Quelltextvervollständigung einzufügen.
    1. Passen Sie den Quelltext wie folgt an:

      ABAP
      123456789101112
      "! Search for a <strong>passenger flight</strong> between two airports that "! <ul> "! <li>lies on or after a given date and</li> "! <li>has a minimum number of available seats left</li> "! </ul> "! @parameter i_airport_from_id | "! @parameter i_airport_to_id | "! @parameter i_from_date | "! @parameter i_seats | "! @parameter e_flight | "! @parameter e_days_later | METHODS find_passenger_flight
  3. Pflegen Sie die Dokumentation zu den Methodenparametern mit den Texten aus der Tabelle. Stellen Sie sicher, dass Sie Abfahrt und Ankunft als hervorgehobenen Text formatieren.

    1. Passen Sie den Quelltext wie folgt an:

      ABAP
      123456789101112
      "! Search for a <strong>passenger flight</strong> between two airports that "! <ul> "! <li>lies on or after a given date and</li> "! <li>has a minimum number of available seats left</li> "! </ul> "! @parameter i_airport_from_id | <em>Departure</em> airport "! @parameter i_airport_to_id | <em>Arrival</em> airport "! @parameter i_from_date | First possible flight date "! @parameter i_seats | Minimum number of available seats "! @parameter e_flight | Found flight (object reference) "! @parameter e_days_later | Number of days after the requested date METHODS find_passenger_flight
  4. Zeigen Sie die ABAP-Elementinformationen für die Methode FIND_PASSENGER_FLIGHT der lokalen Klasse LCL_CARRIER an, um die Ausgabe anzuzeigen.

    1. Positionieren Sie in der Anweisung METHODS den Cursor auf find_passenger_flight, und drücken Sie F2, um die Elementinfo anzuzeigen.

    2. Die ABAP-Doc-Texte werden unter der Überschrift Dokumentation angezeigt.

  5. Optional: Fügen Sie eine ähnliche formatierte ABAP-Doc-Dokumentation für die Methode FIND_CARGO_FLIGHT hinzu.

    Hinweis

    Kopieren Sie die ABAP-Doc-Dokumentation für die Methode FIND_PASSENGER_FLIGHT, fügen Sie sie ein, und passen Sie sie an die Methode FIND_CARGO_FLIGHT an.
    1. Passen Sie den Quelltext wie folgt an:

      ABAP
      123456789101112
      "! Search for a <strong>cargo flight</strong> between two airports that "! <ul> "! <li>lies on or after a given date and</li> "! <li>has a minimum number of available capacity left</li> "! </ul> "! @parameter i_airport_from_id | <em>Departure</em> airport "! @parameter i_airport_to_id | <em>Arrival</em> airport "! @parameter i_from_date | First possible flight date "! @parameter i_cargo | Minimum number of available capacity "! @parameter e_flight | Found flight (object reference) "! @parameter e_days_later | Number of days after the requested date METHODS find_cargo_flight

Aufgabe 4: Links hinzufügen

Fügen Sie die folgende ABAP-Doc-Dokumentation für die lokale Klasse LCL_FLIGHT hinzu:

Vorgeschlagene Dokumentationstexte

TypCodeelementDokumentation
Lokale KlasseLCL_FLIGHT

Abstrakte Oberklasse für die Klassen lcl_passenger_flight und lcl_cargo_flight

Jede Instanz wird durch die Attribute carrier_id, connection_id und flight_date eindeutig identifiziert.

Fügen Sie Links zur Dokumentation der lokalen Unterklassen LCL_PASSENGER_FLIGHT und LCL_CARGO_FLIGHT sowie zu den öffentlichen Attributen carrier_id, connection_id und flight_date hinzu.

Schritte

  1. Verwenden Sie eine Schnellkorrektur, um ABAP-Doc-Dokumentation zur lokalen Klasse LCL_FLIGHT hinzuzufügen.

    1. Navigieren Sie in Ihrer globalen Klasse zur Definition der lokalen Klasse LCL_FLIGHT.

    2. Positionieren Sie in der Anweisung CLASS … DEFINITION den Cursor auf lcl_flight, und drücken Sie Strg + 1, um die verfügbaren Quickfixes aufzurufen.

    3. Wählen Sie aus der Liste der verfügbaren Quickfixes die Option ABAP-Doc hinzufügen.

      Ergebnis

      Die Schnellkorrektur passt den Code wie folgt an:
      ABAP
      12
      "! CLASS lcl_flight DEFINITION ABSTRACT.
  2. Pflegen Sie die Dokumentation mit dem Text aus der Tabelle.

    1. Passen Sie den Quelltext wie folgt an:

      ABAP
      12345678
      "! Abstract superclass for classes "! lcl_passenger_flight and "! lcl_cargo_flight "! Every instance is uniquely identified by attributes "! carrier_id, "! connection_id, and "! flight_date. CLASS lcl_flight DEFINITION ABSTRACT.
  3. Fügen Sie nach lcl_cargo_flight einen Zeilenumbruch ein.

    1. Passen Sie den Quelltext wie folgt an:

      ABAP
      12345678
      "! Abstract superclass for classes "! lcl_passenger_flight and "! lcl_cargo_flight <br/> "! Every instance is uniquely identified by attributes "! carrier_id, "! connection_id, and "! flight_date. CLASS lcl_flight DEFINITION ABSTRACT.
  4. Fügen Sie einen Link zur Dokumentation der lokalen Klasse LCL_PASSENGER_FLIGHT und einen Link zur Dokumentation der lokalen Klasse LCL_CARGO_FLIGHT hinzu.

    Notiz

    Beachten Sie, dass diese ABAP-Doc-Dokumentation auf globaler Klassenebene und nicht innerhalb der lokalen Klasse LCL_FLIGHT liegt. Das bedeutet, dass ein Punkt am Anfang einer Verknüpfung die globale Klasse adressiert. Um eine lokale Klasse derselben globalen Klasse anzusprechen, muss dem Klassennamen ein Punkt vorangestellt werden.
    1. Passen Sie den Quelltext wie folgt an:

      ABAP
      12345678
      "! Abstract superclass for classes "! {@link .lcl_passenger_flight} and "! {@link .lcl_cargo_flight} <br/> "! Every instance is uniquely identified by attributes "! carrier_id, "! connection_id, and "! flight_date. CLASS lcl_flight DEFINITION ABSTRACT.
  5. Fügen Sie nun Links zu den Attributen carrier_id, connection_id und flight_date der lokalen Klasse LCL_FLIGHT hinzu.

    Notiz

    Wenn Sie ein Attribut oder ein anderes Datenobjekt in einer Verknüpfung referenzieren möchten, müssen Sie DATA: unmittelbar vor dem Objektnamen einfügen.
    1. Passen Sie den Quelltext wie folgt an:

      ABAP
      12345678
      "! Abstract superclass for classes "! {@link .lcl_passenger_flight} and "! {@link .lcl_cargo_flight} <br/> "! Every instance is uniquely identified by attributes "! {@link .lcl_flight.DATA:carrier_id}, "! {@link .lcl_flight.DATA:connection_id}, and "! {@link .lcl_flight.DATA:flight_date}. CLASS lcl_flight DEFINITION ABSTRACT.
  6. Zeigen Sie die ABAP-Elementinformationen für die lokale Klasse LCL_FLIGHT an, um die Ausgabe anzuzeigen. Wählen Sie die Links, um zu überprüfen, ob sie funktionieren.

    1. Positionieren Sie in der Anweisung CLASS … DEFINITION den Cursor auf lcl_flight, und drücken Sie F2, um die Elementinfo anzuzeigen.

    2. Der ABAP-Doc-Text wird unter der Überschrift Dokumentation angezeigt.

  7. Aktivieren Sie abschließend Ihren Quelltext.

    1. Drücken Sie Strg + F3, um den Quelltext zu aktivieren.