Christian Schröer
 - 18. Januar 2015

Pretty Printer erweitern Teil 1: Was ist der Pretty Printer?

Ist es möglich, die Einhaltung von Programmier-Richtlinien mit nur einem Klick umzusetzen? In dieser mehrteiligen Blogserie wird gezeigt, wie das Tool ‚Pretty_Printer‘ genutzt und erweitert werden kann, um bei der Einhaltung von Entwicklungsrichtlinien zu unterstützen und somit Codequalität zu steigern.

Sie haben noch nicht mit dem ABAP Pretty Printer gearbeitet? Kein Problem, ich werde das Tool in diesem Blog kurz vorstellen.

Sie arbeiten regelmäßig mit dem ABAP Pretty Printer, wünschen sich jedoch einen größeren Funktionsumfang? Kein Problem, ich zeige Ihnen in diesem Blog, wie Sie den Pretty Printer erweitern können.

Sie nutzen den ABAP Pretty Printer bereits mit eigenen Erweiterungen und sind auf der Suche nach weiteren Anregungen? Auch in diesem Fall lohnt es sich für Sie, die Blogserie zu verfolgen. In den kommenden Artikeln stelle ich verschiedene Erweiterungen vor, welche dem Entwickler das Leben erleichtern um manuelle Code-Formatierung auf ein Minimum zu reduzieren.

Wir sind Ihr Dienstleister für die Entwicklung, die Ihr SAP noch besser macht.
Schon in der Ideenphase unterstützen wir Sie bei der Definition der Anforderungen. Die Konzeption und Umsetzung erfolgt durch unsere SAP Experten.

Sie erhalten die Komplettlösung – Ihr Projekt machen wir zu unserem Projekt. Mit professionellem Projektmanagement sicheren wir den Projekterfolg.

Gerne spreche ich mit Ihnen über Ihre Ausgangslage und zeige Lösungsmöglichkeiten auf. Auf Wunsch unterbreite ich Ihnen im Anschluss ein unverbindliches Angebot.

Kontaktieren Sie mich: Telefon 0211.9462 8572-16 oder per E-Mail info@erlebe-software.de

Ingo Biermann, Fachbereichsleiter

 

Entwicklungsrichtlinien

Entwicklungsrichtlinien sind wichtig in der Software-Entwicklung. Arbeiten mehrere Entwickler an einer Software, so unterstützt die Vereinbarung von

Programmierrichtlinien die Lesbarkeit des Codes. Ein neu ins Projekt hinzukommender Entwickler kann sich so schneller zurechtfinden. Auch die Wartbarkeit der Software wird dadurch verbessert. Oftmals sind andere Personen als die Entwickler für die Wartung zuständig. Deren Arbeit wird durch klar strukturierten und übersichtlichen Quelltext deutlich erleichtert.

Der Pretty Printer

Im ABAP-Editor kann in der Menüleiste der Pretty Printer ausgewählt werden:

Pretty Printer Menüleiste

Pretty Printer in der Menüleiste

Ein Klick auf den Button ruft intern eine Funktion mit dem aktuellen Quelltext als Parameter auf. Diese formatiert den Quelltext und liefert eine überarbeitete Version des Quelltextes zurück. Diese wird dann für den ursprünglichen Quelltext eingesetzt.

Die Art der Formatierung hängt von verschiedenen Einstellungen ab. Diese können wie folgt erreicht werden:

Pretty Printer Formatierung

Formatierung einstellen: „Hilfsmittel > Einstellungen… > ABAP Editor“

Folgende Einstellungsoptionen können vorgenommen werden:

Pretty Printer Einstellungsoptionen

Einstellungsoptionen

 

Der gesetzte Haken bei Einrücken hat verschiedene Auswirkungen. Alle Zeilen werden gemäß der Verschachtelungsebene automatisch eingerückt:

Pretty Printer einrücken

Einrücken deaktiviert

Pretty Printer einrücken

Einrücken aktiviert

Funktions- und Methodenaufrufe werden automatisch eingerückt, insbesondere auch deren Parameter:

Einrückung von Funktions- und Methodenaufrufen

Einrückung von Funktions- und Methodenaufrufen (1)

Pretty Printer Funktions- und Methodenaufrufe

Einrückung von Funktions- und Methodenaufrufen (2)

Der zu einem Funktionsbaustein, einer Methode oder einem Unterprogramm gehörige Code wird um 2 Leerzeichen eingerückt.

Pretty Printer ohne Einrückung

Code ohne Einrückung

Pretty Printer mit Einrückung

Code mit Einrückung

Auch Konvertierung in Groß- und Kleinbuchstaben kann eingeschaltet werden. Bei gesetztem Haken in den Einstellungen sind folgende Optionen wählbar:

Pretty Printer Optionen für Groß- und Kleinschreibung

Optionen für Groß- und Kleinschreibung

Auf Programmtexte in Anführungsstrichen sowie Kommentare haben diese Konvertierungen keinen Einfluss.

Erweiterung des Pretty Printers

Intern ist der Pretty Printer als Funktionsbaustein angelegt.

Pretty Printer als Funktionsbaustein

Pretty Printer als Funktionsbaustein

Dies ermöglicht den Einbau eigener Formatierungsroutinen, um den Pretty Printer gemäß eigener Richtlinien anzupassen. Als Funktionsbaustein ist der Pretty Printer implizit erweiterbar. Dazu im Function Builder oder im Object Navigator den Funktionsbaustein mit Namen „PRETTY_PRINTER“ der Funktionsgruppe SPPR auswählen und ggf. auf den Tabreiter ‚Quelltext‘ wechseln.

Nun in der Menüleiste auf „Bearbeiten -> Erweiterungsoptionen -> Implizite Erw.-Optionen einblenden“ klicken.

Im Quelltext sollten nun an mehreren Stellen, mindestens aber am Anfang und Ende der Funktionsdefinition, Erweiterungspunkte sichtbar werden:

Pretty Printer Erweiterungspunkte in der Funktionsdefinition

Erweiterungspunkte am Anfang und am Ende der Funktionsdefinition

Nun muss noch in den Erweiterungsmodus geschaltet werden. Dies kann durch die Tastenkombination Umsch+F4 bzw. Klick auf den Button „Erweitern Quelltext“ erreicht werden:

Pretty Printer: Umschalten in den Erweiterungsmodus

Umschalten in den Erweiterungsmodus

Nun können die einzelnen Erweiterungsstellen implementiert werden. Dazu den Cursor in einer Erweiterungszeile platzieren und mit „Rechtsklick -> Erweiterungsimplementierung -> Implementierung anlegen“ die Erweiterung einrichten.

Pretty Printer Implementation der Erweiterungsstellen

Implementation der Erweiterungsstellen

Im aufgehenden Popup kann nun die Art der Implementierung ausgewählt werden, die Optionen sind Deklaration und Coding. Wir wählen Coding. Anschließend müssen noch eine Bezeichnung und eine kurze Beschreibung der Erweiterung gepflegt werden. Dann werden Paket und Transportauftrag festgelegt.

Im Quelltext sind nun weitere Zeilen erschienen:

Pretty Printer Quelltext um zwei Zeilen ergänzt

Quelltext um zwei Zeilen ergänzt

An Stelle des Sterns kann nun eigener Quelltext eingefügt werden. In diesem kann der Quelltext, welcher als interne Tabelle mit den Programmzeilen abgespeichert ist, modifiziert werden. Der unformatierte Quelltext liegt in Tabellenform als Variable otext vor, der formatierte Quelltext wird schließlich in ntext abgespeichert.

Damit ergeben sich je nach Stelle des Enhancements zwei Möglichkeiten:

Enhancement am Anfang des Funktionsbausteins:

Die Tabelle otext kann gemäß eigener Wünsche verändert werden. Die formatierten Zeilen werden dann im Anschluss vom Pretty Printer formatiert. Dies bietet sich dann an, wenn die Standardfunktionalität das gewünschte Verhalten nicht mehr ändert.

Enhancement am Ende des Funktionsbausteins:

Die Tabelle ntext kann gemäß eigener Wünsche verändert werden. Die Zeilen sind bereits durch den Pretty Printer bearbeitet und werden im Nachhinein nicht mehr geändert. Hier sollten alle Änderungen durchgeführt werden, welche sonst durch den Pretty Printer geändert würden.

Für die Arbeit mit den Quelltext-Tabellen ist es hilfreich, deren Zeilentyp zu kennen. Dieser ist nicht aus dem Funktionsbaustein heraus ablesbar, ich empfehle die Verwendung des Zeilentyps abaptxt255.

Wir hängen wir nun eine Zeile an otext beim Enhancement zu Beginn des Funktionsbausteins an, welche einen Kommentar beinhaltet.
WICHTIG: Erweiterungen am Pretty Printer werden für jeden User aktiviert. Dies ist in den meisten Fällen nicht gewünscht. Eine Prüfung auf den eigenen Usernamen wird daher dringend empfohlen.

Pretty Printer Prüfung auf eigenen Usernamen

Prüfung auf eigenen Usernamen

Nach Aktivierung des Enhancements kann dann im ABAP Editor durch Klick auf den Pretty Printer Button das Verhalten getestet werden:

Pretty Printer Aktivierung des Enhancements

Aktivierung des Enhancements (1)

Pretty Printer Aktivierung des Enhancements

Pretty Printer Aktivierung des Enhancements (2)

Ausblick

In diesem Blog haben wir die Funktionalitäten des Pretty Printers diskutiert und Erweiterungen besprochen.

Mit diesen Voraussetzungen lässt sich der Pretty Printer sehr stark individualisieren. In den nächsten Blogs werde ich verschiedene Erweiterungen vorstellen, welche dem Programmierer das Leben erleichtern sollen.

Da voller Zugriff auf den kompletten Quelltext besteht, ist es tatsächlich möglich, die Einhaltung eines Großteils der Richtlinien zur Programmierung mit nur einem Klick zu gewährleisten.

Haben Sie Fragen zu diesem Blog oder einem verwandten Thema? Möchten Sie über die verschiedenen Möglichkeiten diskutieren, die sich hiermit ergeben? Dann nutzen Sie die Kommentarfunktion.

Ich freue mich über Ihr Feedback.


SHARE



Schreiben Sie einen Kommentar

Bitte füllen Sie alle mit * gekennzeichneten Felder aus. Ihre E-Mail Adresse wird nicht veröffentlicht.