You are on page 1of 6
Lektion: RTTS (Run Time Type Services) Uberblick iiber die Lektion P Web AS 6.1 Objects tber SAP Standardklas Beide Konzepte vereint bilden die RTTS (Run Time Type Services). Mit der Einflthrung von ABAP Objects wurde ein auf Klassen beruhendes RITLKonzept (Run Time Type Idetifiation ur B |— cL_ABAP.RerDEScR Beschrebung vn Klassen urd deren Objekten ee Abbildung 169: Dynamische Typanalyse mit RTTI-Klassen sschreibungs nut ‘Typ existiert dann zur Laufveit genau ein Beschreibungsobjekt. Die Attribute des Beschreibungsobjekts enthalten dann Informationen iiber die Eigenschafien des Typs. RTTS-Vererbungsbaum Oberklasse Sawa even pane paves Cee Maca : seen ies SS Sue ponierearity _——— esr ‘get relative name {— ci aBar_compcexoescr ‘OnterticheAttibute | ei ABae_staucroescn absolute Name ‘type_kind L__cinsar rasiepescr | engin ecimals cL ARAP_omuEcroEscR \ =e | | ‘CL_ABAP_INTEDESCR -— Einige wehtge tibite ind Noten a tor Oberasso >) Nn Typescieburg Abbildung 170: RTT! Methoden und Attribute der Wurzelklasse Als Beispiel erweitern wir die vorhandene Anwendung mit dem Reisebiiro und dessen Geschafispartner. In diesem vereinfachten Beispiel wurde zuvor festgelegt, dass eine Instanz der Fahrzcugvermietungsklasse LCL_RENTAL als Reaktion auf ein Ereignis die auslisende Fahrzeaginstanz in die separate Liste mt_vehicles aufnimmt, Diese auslésenden Instanzen konnten bisher Busse (LCL_BUS) oder Lastkraftwagen (LCL_TRUCK) sein. Dieses Beispiel wird nun erweitert Das Fahrzeugvermietungsunternehmen interessiert sich nun ausschlicBlich fiir Busse. Dic Referenz auf die auslésende Fabrzeuginstanz ist im Parameter SENDER der Ereignisbehandlermethode enthalten. Sein dynamischer Objekttyp soll analysiert werden, um festzustellen, ob es sich um einen Bus oder einen Lastwagen handelt. Ein funktionaler RTTI-Methodenaufruf liefert die Referenz auf die Beschreibungsinstanz zur ibergebenen Fahrzeuginstanz. Die abstrakte Klasse CL_ABAP_TYPEDESCR enthilt diese DESCRIBE_BY_OBJECT_REF-Methode. Deren Returning-Parameter ist als Referenz auf diese Oberklasse typisiert. . Da der Aktualparameter R_DESCR jedoch auf die Unterklasse CL_ABAP_CLASSDESCR typisiert ist, ist bei der ‘Zuweisung ein Down-Cast notwendig, RTTC (Run Time Type Creation)/ Typ-Erzeugung zur Laufzeit Zu SAP Web AS 6.40 wurden mit RTTC die Typklassen des RTTI erginzt um die ‘Méglichkeit, Typen zur Lautzeit zu erzeugen. Die Figenschafien der Typen werden durch Attribute von Typabjekten realisiert Far jeden Typ existier also ein Typobjekt, dessen Attribute die Eigenschafien des Typs beschreiben, © RTTC - Run Time Type Creation ee eeT Ea) ‘Statische Methodenautrufe clawar_oavanesce | eee | abap_elemdescr=>get_| |.) }—icuinsar-evetinescr’ | > ereate(.) Fem —— Lana FanLenescR | I> cL step tetodescrercreate..) ct Anan onsecroceon | cnane-ctassosscn a (cx naar wrevescr ie Margen te RTC 27 > \_Typebjelten zur Lauteot! Abbildung 173: RTTC - Dynamische Typ-Erzeugung sr Methoden der CL_ABAP_TYPEDESCR EINGABE Vernendbare Methoden describe _by_name COS 5 ric erste AUSGABE ‘spilt describe_by_oblect ref CL_ABAP_STRUCTDESCR Ofentiche Atrbute A dette decimals DATA: ~ Retuning- Parameter ~ gs spfli TYPE spelt, / ist ypisiet as ge descr FYFE AUP 50 ci pune STROCIDESE, | Referens auf ) PE abap_conpdzsct. \ capap_Typevesc _/ = START -OF-SELECTION ge_desce LOOP AT 90. WRITE a5) ENDLOOP. cl_abap_typedescr=>describe by data( gs_spfli ). desse-Scomponents INTO g3_conp. mp=nane Objekt der Kasse CL_ABAP_TABLEDESCR itab ‘mana carr | connidl Referens auf Typobjokt Ein Typ ist vollstandig festgelegt durch sein Typobjekt. = FUrjeden Typ gibt es ein Lautzelt-Typobjekt (RTTS-Instanz). = Das Laufzeit-Typobjekt beschreibt den Datentyp vollstandig. = Ein Typobjekt ist programmiokal, transient und anonym (namenios). = Ein Typobjekt Ist auerdem uniéschbar und unveranderbar, Abbildung 174: RTTC - Typobjekte zur Typbeschrelbung i _ shor aach komplexere Datentypen wie Am Beispiel einer internen Tabelle soll dies demonstriert werden. Objekt der Klasse CL_ABAP_TABLEDESCR eer = ssc LO san ran ‘Typeiner intemeri ( Tabotefactoord utd) PARMETERS! pa_tab YP Dé02L-tabrame: ernamischan DATA Zelentye 4 ad = V yoedescr=>describe hy_name{ pa_tab ). elds and key for internal table def pounique pokey Abbildung 175: RTTC - Erzeugen eines Tabellentypen imag cer inter i Die Frage, die sich nun stellt ist, was soll programmtechnisch weiter mit dem soeben erzeugien Tabellentypen erfolgen? Man kénnte ihn zum Beispiel zur Erzeugung einer internen Tabelle zur Laufzeit verwenden: DATA gt_itab TYPE REF To DATA, go_table_Type TYPE REF 10 cl_abap_tabledescr, * creation of internal tabletype with static method CREATE DATA gt_itsb TYPE HANDLE go_table_Type. AUSGABE e CL ABAP_TYPEDESCR EINGABE Verwendace Methoden < >—* escnse ant CL_ABAP_OBJECTDESCR Abbildung 172: RTTI - Objektlypeigenschatften abfragen

You might also like