ABAP Debugger Erweiterung by Alex Gappart exclusive for IT

1. März 2019 in code IT

ABAP Debugger Erweiterung – Pt. 2

by Alex Geppart

Im ersten Part habe ich euch zwei Open Source Helfer zum Erstellen von Testdaten für ABAP Unit Tests vorgestellt, um euch durch diese, die Aufbereitung von Testdaten für Unittests zu vereinfachen. Heute möchten ich euch ein paar Neuheiten vorstellen.

Fast ein Jahr nach der Veröffentlichung meiner ABAP Debugger Erweiterung, hat sich durch kontinuierliches Refactoring einiges verändert. Durch den Fokus auf das Single Responsibility Prinzip hat sich zwar die Anzahl der Klassen in der Implementierung etwas vergrößert, jedoch nur zum Vorteil der Wiederverwendbarkeit und besseren Lesbarkeit.

Der nächste Schritt war die Anpassung der eigentlichen Integration in das Debugging Framework – wobei ich vor allem noch einiges über das ABAP asXML Format Format mitnehmen konnte.  Diese Umstellung war essentiell, um auch bei komplexen Datenkonstrukten alle Daten des Konstrukts zu erhalten und somit nicht nur die oberflächlichen Beschreibungen nutzen zu können. Denn nur bei Verfügbarkeit aller Daten sind ebenfalls Absprünge in der Formatierung zwischen Struktur und interner Tabelle und umgekehrt überhaupt möglich. Doch mehr dazu im letzten Abschnitt.

Eines meiner größeren Ziele war die Formatierung des Value # Konstrukts, durch den Einbau von Umbrüchen und Leerzeichen, von der syntaktisch korrekten Aufbereitung des Konstrukts zu entkoppeln. Diese Formatierung führte mich jedoch an die Grenze der ABAP RegEx Möglichkeiten, da durch die fehlende Unterstützung von Look-Behind in ABAP (bzw. in POSIX) eine ausschließliche Formatierung über RegEx nicht möglich war. Ein Ansatz, den ich aus diesen Gründen schnell verworfen habe. Eine Alternative musste her; diese fand ich jedoch schnell in den Funktionen der Klasse CL_ABAP_STRING_C_READER.

Für den Anwender meiner ABAP Debugger Erweiterung hat sich zusätzlich eine entscheidende Funktion verändert. In der neuen Version gibt es keine Abfrage mehr über die maximale Länge der Zeile.  An dieser Stelle wird nun eine Erweiterungsmöglichkeit angeboten, um seine eigene Pretty-Printer Implementierungen zu schreiben. Dazu ist es nötig, dass eine neue Klasse das Interface ZIF_OP_VALUE_PRETTY_PRINTER implementiert. Weiterhin sollte diese Klasse per Transaktion  SM30 in der Tabelle ZTOP_DVE_CUST einem Anwender zugeordnet werden (siehe Abbildung 1). Im Standard Fall wird die mitgelieferte Klasse ZCL_OP_VALUE_PRETTY_PRINTER automatisch zur Aufbereitung verwendet.
Abbildung 1: Zuordnung Pretty-Printer Klasse zu Anwender

Eine weitere und zentrale Verbesserung betrifft die Darstellung von komplexen Datenkonstrukten (itab in itab, itab in Struktur, etc.), wie oben bereits angesprochen. Durch die neue Integration mittels asXML ist es mir gelungen diese Konstrukte nun auch darstellen zu können. Dies bedeutet, dass man neben den bereits verfügbaren Möglichkeiten, Strukturen und Tabellen einzeln darzustellen, nun auch folgende zusätzliche Möglichkeiten der Aufbereitung vorhanden sind:

Abbildung 1: itab in Struktur und  itab in itab Darstellung 

Jetzt dürft ihr wieder ans Werk. Dazu findet ihr den neuesten Stand des Codings hier. Dieser ist wie immer per ABAPGit in das eigene SAP System übertragbar. Bei Problemen oder Fragen zur neuen Version der ABAP Debugger Erweiterung, kann gern hier ein neues Issue aufgemacht werden. 


Das wird dich sicherlich auch interessieren:

ABAP Debugger Erweiterung – Pt. 1
MicroService Toolbox als Container-Application
SAP Lumira SDK Extensions mit modernen JavaScript-Tools entwickeln

 

Zurück zur Übersicht