Generische Parameterschnittstellen
Siehe Dynamische/Generische Programmierung.
Siehe Kategorie: Dynamische/Generische Programmierung.
Methoden, Funktionsbausteine und Methoden können generische Parameter haben, der konkreter Typ sich erst zur Laufzeit entscheidet.
Generischer Importabelle in Methode
Hier soll eine beliebige Standardtabelle in eine Methode importiert werden. Diese Tabelle hat eine beliebige Anzahl von Spalten. Diese Tabelle wird ausgelesen und letztlich in einer MediaWiki-Syntax für eine Tabelle in eine einfache Ausgabestruktur ZREB_DATA_S gefüllt. Diese Tabelle wird dann später in die Zwischenablage gefüllt und in eine MediaWiki-Tabelle ausgegeben. Die Struktur ZREB_DATA_S hat nur ein Feld der Länge 900.
Parameterdefinition in Methode
Es gibt nun eine statische public Methode FILL_WIKI_TABLE in der Klasse ZREBWIKI.
Diese Methode hat einen Importparameter IT_TABLE vom generischen Typ "Standard Table".
Coding der Methode
Die Importtabelle kann nun in der Methode ausgelesen werden und auch deren Felder generisch angesprochen werden.
Dazu wird die RTTI-Klasse CL_ABAP_STRUCTDESCR verwendet.
* Datendeklarationen DATA: ls_wiki_table TYPE zreb_data_s. DATA cl_struc TYPE REF TO cl_abap_structdescr. "Run Time Type Services FIELD-SYMBOLS <fs_comps> TYPE abap_compdescr. FIELD-SYMBOLS <fs_any> TYPE any. "generisches Field-Symbol FIELD-SYMBOLS <fs_table> TYPE any. "generisches Field-Symbol * Erste Zeile mit Überschrift wird ausgelesen ins generische Field-Symbol <FS_TABLE> READ TABLE it_table ASSIGNING <fs_table> INDEX 1. * Die Beschreibung vom Field-Symbol <FS_TABLE> wird mit Hilfe der Methode DESCRIBE_BY_DATE * der Klasse CL_ABAP_DATADESCR dem Objekt CL_STRUC zugewiesen. cl_struc ?= cl_abap_datadescr=>describe_by_data( p_data = <fs_table> ). * Die Überschriften werden nun ausgelesen mit "LOOP AT <objekt>->COMPONENTS ASSIGNING <fieldsymbol>". * Mit "ASSIGN COMPONENT <fs_comps>-name OF STRUCTURE <FIELDSYMBOL1> TO <FIELDSYMBOL2>" * wird nun die konkrete Ausprägung der 1., 2., .. Spalte der ersten Zeile ausgelesen in <FS_ANY>. LOOP AT cl_struc->components ASSIGNING <fs_comps>. ASSIGN COMPONENT <fs_comps>-name OF STRUCTURE <fs_table> TO <fs_any>. "in <FS_ANY> steht Feldwert ls_wiki_table-data = ls_wiki_table-data && <fs_any> && '!!'. ENDLOOP. ...
Hierarchie der Typklassen
aus der SAP-Hilfe die Hierarchie der Typklassen.
cl_struc ?= cl_abap_datadescr=>describe_by_data( p_data = <fs_table>