Generische Parameterschnittstellen

Aus SAP-Wiki
Zur Navigation springenZur Suche springen

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.

GenerischeParameterschnittstelle4.jpg

Parameterdefinition in Methode

Es gibt nun eine statische public Methode FILL_WIKI_TABLE in der Klasse ZREBWIKI.

GenerischeParameterschnittstelle2.jpg


Diese Methode hat einen Importparameter IT_TABLE vom generischen Typ "Standard Table".

GenerischeParameterschnittstelle1.jpg

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.

GenerischeParameterschnittstelle3.jpg

 * 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.

  • Casting.jpg

cl_struc ?= cl_abap_datadescr=>describe_by_data( p_data = <fs_table>

Web-Links