Ansicht
Dokumentation

ABENUSE_PRETTY_PRINTER_GUIDL - USE PRETTY PRINTER GUIDL

ABENUSE_PRETTY_PRINTER_GUIDL - USE PRETTY PRINTER GUIDL

CL_GUI_FRONTEND_SERVICES - Frontend Services   General Material Data  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Verwendung des Pretty Printers

Die Ausrichtung von ABAP-Anweisungen im Quelltext ist nicht syntaktisch festgelegt. Es soll maximal eine Anweisung pro Zeile geben, die technisch gesehen beliebig eingerückt und umgebrochen sein kann. Dadurch lassen sich Kontrollstrukturen sichtbar machen, und durch das Einfügen von Leerzeilen können zusammenhängende Quelltextpassagen optisch gruppiert werden. Leerzeichen können in ABAP-Anweisungen aber nicht beliebig eingestreut oder weggelassen werden. Zum Beispiel müssen Tokens immer durch mindestens ein Leerzeichen getrennt sein (insbesondere auch Operanden und Operatoren), während bei einem Methodenaufruf keine Leerzeichen zwischen dem Bezeichner der Methode und der öffnenden Klammer stehen dürfen.

Während beispielsweise Sprachen mit C-artiger Syntax, bei denen Anweisungsblöcke innerhalb von Kontrollstrukturen durch geschweifte Klammern begrenzt werden, eine unerschöpfliche Quelle für Diskussionen darüber liefern, was die am besten geeignete Art und Weise der Einrückung ist, ist diese bei ABAP offensichtlich: Zu jeder blockeinleitenden Anweisung (beispielsweise IF) gibt es eine zugehörige abschließende Anweisung (in diesem Fall ENDIF). Die einzige Ausnahme stellen hier Ereignisblöcke zu den Ereignissen des ABAP-Laufzeit-Frameworks dar. Diese werden durch eine Anweisung (beispielsweise START-OF-SELECTION) eingeleitet, jedoch nicht mit einer zugehörigen schließenden Anweisung, sondern durch den nächsten Ereignisblock abgeschlossen. Ereignisblöcke sollen aber nur noch in Ausnahmefällen verwendet werden. Blockeinleitende und -abschließende Anweisungen werden auf gleicher Ebene angeordnet, der Blockinhalt wird eingerückt.

Der Pretty Printer kann jederzeit (sogar im Anzeigemodus) den Quelltext bezüglich der Einrückung von Kontrollstrukturen und Groß-/Kleinschreibung von Schlüsselwörtern und Bezeichnern anpassen.

Pretty Printer einheitlich und durchgängig verwenden

Formatieren Sie Ihren Quelltext einheitlich mit dem Pretty Printer. Wo der Pretty Printer nicht ausreicht, sind entsprechend manuelle Nacharbeiten vorzunehmen.

Wir empfehlen, die für die Lesbarkeit von Quelltext unerlässlichen Einrückungen durch den Pretty Printer vornehmen zu lassen. So ist garantiert, dass sich die Einrückung durchgängig an der logischen Kontrollstruktur orientiert und die Einrückungstiefe für jedes Programm gleich ist. Eine rein manuelle Durchführung dieser Formatierung ist fehleranfällig und nicht sinnvoll.

Auch wenn sich der Quelltext mittels des Pretty Printers jederzeit (im Rahmen der angebotenen Einstellungsmöglichkeiten) an einen anderen Stil anpassen lässt, soll ein einheitlicher und durchgängiger Stil gewählt werden. Der Grund hierfür ist, dass die Versionsverwaltung und Korrektur-Workbench nicht darauf ausgerichtet sind, reine Stilunterschiede zwischen Quelltextversionen zu ignorieren. Deshalb empfehlen wir folgende Pretty-Printer-Einstellungen für eine einheitliche Quelltextformatierung, die sich mit den Erwartungen und Gewohnheiten der Mehrzahl der ABAP-Entwickler deckt:

  • Anweisungen einrücken
Unbedingt erforderlich, um die logische Struktur des Programms sichtbar zu machen. Dabei darf es maximal eine Anweisungpro Programmzeile geben.
  • Keinen Standardkommentar einfügen
Der Standardkommentar enthält lediglich redundante Informationen und wird bei Änderungen am Quelltext nicht angepasst.
  • Schlüsselwörter groß
Erleichtert das Verstehen des Quelltextes auch in ausgedruckter Form, wo im Allgemeinen keine Syntaxeinfärbungen verfügbar sind.

Für den richtigen Einsatz von Leerzeilen an den Grenzen zwischen zusammenhängenden Quelltextblöcken muss manuell gesorgt werden. Syntaktische Einheiten wie Klassen, Methoden, Kontrollblöcke oder semantische Einheiten eines Programms sollten je nach ihrer Größe und Bedeutung durch ein bis zwei Leerzeilen voneinander getrennt werden. Es sollten jedoch nie mehr als zwei Leerzeilen aufeinander folgen.

Hinweis

Aus Gründen der Schönheit würden wir für den Pretty Printer lieber die Einstellung Schlüsselwort klein empfehlen. In allen für die ABAP-Entwicklung nötigen Werkzeugen werden nämlich die Namen von Repository-Objekten und etwa auch die Bezeichner von Datenobjekten im ABAP Debugger groß dargestellt. Mit der Einstellung Schlüsselwort klein würde dann auch das Format von Quelltexten zu diesen Anzeigen passen, wie zum Beispiel beim Einlesen von Spalten COLUMN aus einer Datenbanktabelle DBTAB:

select COLUMN1 COLUMN2 ...
       from DBTAB
       into corresponding fields of ITAB
       where COLUMN = FIELD.

Zudem würde die großgeschriebene Darstellung von Bezeichnern auch besser dazu passen, dass viele dynamische Operandenpositionen in ABAP nach wie vor eine Großschreibung erfordern. Ein prominentes Beispiel ist der quasi statische Aufruf von Funktionsbausteinen. Mit der Einstellung Schlüsselwort klein würde der Aufruf eines Funktionsbausteins FUNCTION_MODULE so aussehen:

call function 'FUNCTION_MODULE' exporting PARAMETER = FIELD.

Die Einstellung Schlüsselwort klein wurde jedoch erst relativ spät in den Pretty Printer eingeführt und konnte sich nicht mehr gegen die allgemeingebräuchliche Einstellung Schlüsselwort groß durchsetzen. Außerdem sind auch die ABAP-Syntaxdiagramme und Beispielprogramme der ABAP-Dokumentationen sowie alle relevanten Veröffentlichungen mit der Einstellung Schlüsselworte groß formatiert, sodass eine Empfehlung für die Einstellung Schlüsselworte klein dann doch eher zur allgemeinen Verwirrung beitragen würde und nicht sehr hilfreich für die Akzeptanz der Programmierrichtlinien wäre.

Folgender Quelltext zeigt das Beispiel aus obigem Quelltext ohne Einrückungen und in reiner Kleinschreibung. Die Hervorhebung der ABAP-Wörter, die hier in Fettschrift und im ABAP Editor durch Farbgebung erfolgt, könnte in einem Programmausdruck verloren gehen, was das Programm noch weniger lesbar machen würde.

class class definition.
public section.
methods meth.
endclass.
class class implementation.
method meth.
data: itab type table of dbtab,
wa type dbtab.
select *
from dbtab
into table itab
where column = ' '.
if sy-subrc <> 0.
return.
endif.
loop at itab into wa.
...
endloop.
endmethod.
endclass.






Addresses (Business Address Services)   ROGBILLS - Synchronize billing plans  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 8227 Date: 20240523 Time: 105723     sap01-206 ( 162 ms )