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.
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:
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:
Folgende Einstellungsoptionen können vorgenommen werden:
Der gesetzte Haken bei Einrücken hat verschiedene Auswirkungen. Alle Zeilen werden gemäß der Verschachtelungsebene automatisch eingerückt:
Funktions- und Methodenaufrufe werden automatisch eingerückt, insbesondere auch deren Parameter:
Der zu einem Funktionsbaustein, einer Methode oder einem Unterprogramm gehörige Code wird um 2 Leerzeichen eingerückt.
Auch Konvertierung in Groß- und Kleinbuchstaben kann eingeschaltet werden. Bei gesetztem Haken in den Einstellungen sind folgende Optionen wählbar:
Auf Programmtexte in Anführungsstrichen sowie Kommentare haben diese Konvertierungen keinen Einfluss.
Erweiterung des Pretty Printers
Intern ist der Pretty Printer als Funktionsbaustein angelegt.
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:
Nun muss noch in den Erweiterungsmodus geschaltet werden. Dies kann durch die Tastenkombination Umsch+F4 bzw. Klick auf den Button “Erweitern Quelltext” erreicht werden:
Nun können die einzelnen Erweiterungsstellen implementiert werden. Dazu den Cursor in einer Erweiterungszeile platzieren und mit “Rechtsklick -> Erweiterungsimplementierung -> Implementierung anlegen” die Erweiterung einrichten.
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:
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.
Nach Aktivierung des Enhancements kann dann im ABAP Editor durch Klick auf den Pretty Printer Button das Verhalten getestet werden:
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.