ABAP - Schlüsselwortdokumentation →  ABAP - Referenz →  Interne Daten verarbeiten →  Eigenschaften von Datenobjekten → 

RTTS - Run Time Type Services

Die RTTS werden durch eine Hierarchie von Typbeschreibungsklassen realisiert, die Methoden für RTTC (Run Time Type Creation) und RTTI (Run Time Type Identification) enthalten. Mit Hilfe dieser Systemklassen ist es möglich,

Konzept

Die Eigenschaften der Typen werden durch die Attribute von Typbeschreibungsobjekten repräsentiert. Für jeden Typ existiert genau ein Typbeschreibungsobjekt. Die Attribute des Typbeschreibungsobjekts enthalten Informationen über die Eigenschaften des Typs. Für jede Typart (z.B. elementarer Typ, Tabelle, Klasse, ... ) gibt es eine Typbeschreibungsklasse mit speziellen Attributen für die speziellen Typeigenschaften. Die Klassenhierarchie der Typbeschreibungsklassen entspricht der Hierarchie der Typarten des ABAP-Typsystems.

Weiterhin haben die Typbeschreibungsklassen für komplexe Typen, Referenzen, Klassen und Interfaces spezielle Methoden, um Referenzen auf Teiltypen zu bestimmen. Mit diesen Methoden kann man durch einen zusammengesetzten Typ zu allen Teiltypen navigieren.

Typbeschreibungsobjekte können nur durch die Methoden von Typbeschreibungsklassen erzeugt werden. Um eine Referenz auf ein Typbeschreibungsobjekt eines Typs zu erhalten, kann man die statischen Methoden der Klasse CL_ABAP_TYPEDESCR nutzen oder Methoden der speziellen Typbeschreibungsklassen aufrufen.

Hinweis

In der Anweisung CREATE DATA können Typbeschreibungsobjekte hinter dem Zusatz HANDLE angegeben werden, um Datenobjekte mit dynamisch erzeugten Datentypen zu erzeugen.

Hierarchie der Typbeschreibungsklassen

CL_ABAP_TYPEDESCR
  |
  |--CL_ABAP_DATADESCR
  |   |
  |   |--CL_ABAP_ELEMDESCR
  |   |   |
  |   |   |--CL_ABAP_ENUMDESCR
  |   |
  |   |--CL_ABAP_REFDESCR
  |   |--CL_ABAP_COMPLEXDESCR
  |       |
  |       |--CL_ABAP_STRUCTDESCR
  |       |--CL_ABAP_TABLEDESCR
  |
  |--CL_ABAP_OBJECTDESCR
     |
     |--CL_ABAP_CLASSDESCR
     |--CL_ABAP_INTFDESCR

Beispiele

Auslesen der Typeigenschaften eines elementaren Typs aus einem Typobjekt, das über die Methode DESCRIBE_BY_DATA erzeugt wird.

TYPES my_type TYPE p LENGTH 16 DECIMALS 6.
DATA  my_data TYPE my_type.

DATA(descr) = cl_abap_typedescr=>describe_by_data( my_data ).

cl_demo_output=>display(
  |Typename: { descr->absolute_name }\n| &&
  |Kind:     { descr->type_kind     }\n| &&
  |Length:   { descr->length        }\n| &&
  |Decimals: { descr->decimals      }\n| ).

Auslesen der Eigenschaften der Komponenten einer Struktur, Hierfür wird die Referenz auf das Typobjekt über einen Down Cast einer Referenzvariable vom Typ CL_ABAP_STRUCT_DESCR zugewiesen.

cl_demo_output=>display( CAST cl_abap_structdescr(
  cl_abap_typedescr=>describe_by_name( 'SYST' ) )->components ).



Weiterlesen
Example Beliebige Datentypen ermitteln
Example Objekttypen ermitteln