1. Möglichkeiten der Strukturerweiterungen
Strukturen und Tabellen, die von SAP im ABAP Dictionary definiert wurden, können nachträglich durch Kunden auf folgende Weise erweitert werden:
Von Erweiterungen dieser Art sind nicht nur die erweiterten Strukturen und Tabellen selbst betroffen, sondern auch alle abhängigen Strukturen, welche die Erweiterung als Include oder Unterstruktur übernehmen. So können zum Beispiel Erweiterungen mittels Append, die sich bei der Ausgangsstruktur nur am Ende auswirken, bei abhängigen Strukturen zu Verschiebungen auch innerhalb dieser Strukturen führen.
2. Probleme durch Strukturerweiterungen
In Programmen ohne aktive Unicodeprüfung können Strukturerweiterungen vor allem bei Typprüfungen und im Zusammenhang mit tiefen Strukturen zu Syntax- und Laufzeitfehlern führen. In Programmen mit aktiver
Unicodeprüfung sind darüber hinaus Zuweisungen, Operandenprüfungen und Zugriffe mit Offset und Länge betroffen. Problematisch sind hier Änderungen, wenn zum Beispiel in eine rein zeichenartige Struktur numerische oder tiefe Komponenten eingefügt werden und dadurch die Struktur ihren zeichenartigen Charakter verliert. Erweiterungen sind auch deshalb problematisch, weil die Fragmentsicht verändert wird und darauf aufbauende Prüfungen bei Zuweisungen und Vergleichen beeinflußt werden.
3. Klassifikation der Erweiterungen im Dictionary
Damit die Auswirkungen von Strukturerweiterungen überhaupt erkennbar sind, können Strukturen und Tabellen im ABAP Dictionary unter Zusätze ® Erweiterungskategorie nach folgenden Schema klassifiziert werden:
Stufe |
Kategorie |
Bedeutung |
1 |
Nicht klassifiziert |
Die Struktur hat keine Erweiterungskategorie |
2 |
Nicht erweiterbar |
Die Struktur darf nicht erweitert werden |
3 |
Erweiterbar und zeichenartig |
Alle Strukturkomponenten und deren Erweiterungen müssen zeichenartig sein. |
4 |
Erweiterbar und zeichenartig oder numerisch |
Die Struktur und deren Erweiterung darf keine tiefen Datentypen enthalten. |
5 |
Beliebig erweiterbar |
Die Struktur und deren Erweiterung darf Komponenten enthalten, deren Datentyp beliebig ist. |
Als zeichenartig werden an dieser Stelle die Elemetartypen C, D, N und T bezeichnet, als numerisch die Elementartypen F, I, P und X. Nicht unterstützt werden die tiefen Typen STRING und XSTRING.
Bei Strukturen und Tabellen mit Includes oder Unterstrukturen dürfen die Erweiterungskategorien der Includes und Unterstrukturen nicht größer als diejenigen der Ausgangsstruktur sein. Enthält die Ausgangsstruktur zum Beispiel ein Include der Stufe 4, dann sind für die Ausgangsstruktur die darüber hinausgehenden Stufen 2 und 3 nicht erlaubt
Strukturerweiterungen im Dictionary können sich auch auf interne Strukturen in ABAP-Programmen auswirken, wenn Dictionary-Strukturen im Quelltext als Include oder Unterstruktur verwendet werden. Bei der ABAP-Programmprüfung werden diese Abhängigkeiten implizit berücksichtigt. Dies schließt auch nicht klassifizierte Strukturen ein, die erweiterbare Includes oder Unterstrukturen enthalten.
4. Behandlung der Erweiterung in der Programmprüfung
Die ABAP-Programmprüfung nutzt die Klassifikation der Strukturerweiterung im Dictionary, um für alle Stellen im Quelltext Warnungen auszugeben, die Probleme im Zusammenhang mit Strukturerweiterungen erkennen lassen. Die Warnungen sind abhängig von den Auswirkungen der zulässigen Strukturerweiterungen in drei Klassen eingeteilt:
Klasse |
Art der Prüfung |
Bedeutung |
A |
Syntaxprüfung |
Jede Erweiterung unter Ausschöpfung der Erweiterungs-kategorien führt zu einem Syntaxfehler. |
B |
Erweiterte Prüfung |
Zulässige Erweiterungen können, müssen aber nicht in jedem Fall zu einem Syntaxfehler führen. |
C |
Erweiterte Prüfung |
Keine Syntaxfehler, jedoch semantische Probleme durch geändertes Programmverhalten |
Alle Prüfungen zu Strukturerweiterungen werden nur in Programmen mit aktiver
Unicodeprüfung durchgeführt, wobei aber ausschließlich statisch und nicht zur Laufzeit geprüft wird. Die Prüfung schließt auch nicht klassifizierte Strukturen und Tabellen ein, sofern die Ausgangsstruktur erweiterbare Includes oder Unterstrukturen beinhaltet.