Anonyme Speicherobjekte sind Objekte, auf die im ABAP-Programm indirekt über eine Referenz zugegriffen wird. Solche Objekte können nicht direkt im Programm, aber im Debugger mit Hilfe bestimmter Namenskonventionen angesprochen werden.
Zu den anonymen Speicherobjekten gehören:
Im Fall von Strings und internen Tabellen reicht es, den Variablennamen anzugeben, um auf die Daten des Objekts zugreifen zu können. Namen zur Beschreibung anonymer Datenobjekte sind notwendig, da jedes Speicherobjekt eindeutig identifiziert werden muss. So können beispielsweise beim String-Sharing mehrere String-Variablen auf eine gemeinsame Speicheradresse zeigen.
Bei Instanzen von Klassen, die mit der Anweisung CREATE OBJECT angelegt wurden, und anonymen Datenobjekten, die mit der Anweisung CREATEDATA angelegt wurden, sind nur deren Referenzen im Programm ansprechbar. In diesem Fall verwenden Sie Referenz-Semantik, da das Objekt erst dereferenziert werden muss, um auf seine Daten zugreifen zu können.
Die Namen anonymer Speicherobjekte müssen in geschweifte Klammern gesetzt werden. Sie enthalten eine Abkürzung, gefolgt von einem Doppelpunkt und der internen Identifikation.
● Für die Abkürzungen gelten folgende Vereinbarungen:
Abkürzung |
Speicherobjekt |
S |
String |
T |
Interne Tabelle |
O |
Instanz einer Klasse |
A |
Anonymes Datenobjekt |
C |
Klasse |
● Für die internen Identifikationen gelten folgende Vereinbarungen:
○ Bei Strings, internen Tabellen, Klasseninstanzen und anonymen Datenobjekten folgt die interne Identifikation der Form <x> oder <x>.<y>. Dabei gibt x die intern verwendete Objektidentifikation und y die Identifikation der internen Shared Objects Version an.
○ Bei Klasseninstanzen können Sie ein Ausrufezeichen und den Namen einer Oberklasse angeben, um zu gewährleisten, dass das Objekt aus Sicht dieser Oberklasse angezeigt wird.
○ Bei Klassen geben Sie anstelle der Identifikation den Klassennamen ein.
● Im Anschluss an die interne Identifikation oder den Klassennamen können Sie einen Stern eingeben, der einen Kommentar oder nicht interpretierte Zusatzinformationen einleitet.
In der folgenden Tabelle finden Sie Beispiele möglicher Namen.
Name |
Erläuterung |
{S:1} |
String mit der internen Identifikation 1 |
{S:1.3} |
String mit der internen Identifikation 1 und der internen Shared Objects Version 3 |
{O:3*\CLASS=MY_CLASS} |
Instanz der Klasse my_class mit der internen Identifikation 3 |
{O:1!MY_SUPER_CLASS}-ATTR |
Attribut attr der Klasseninstanz mit der internen Identifikation 1 aus der Sicht der Oberklasse my_super_class |
{C:MY_CLASS}-ATTR |
Klassenattribut attr der Klasse my_class |