Ranges
Der spezielle Tabellentyp RANGES ist sehr praktisch, um flexibel Daten von Datenbanktabellen zu lesen.
Sehr lesenswert hierzu ist auch ein Artikel von Enno Wulff im Tricktresor.
Felder Ranges-Tabelle
Eine Ranges-Tabelle hat immer 4 Felder
- SIGN ('I' = Include) oder 'E' = Exclude)
- OPTION ('EQ' = Equal, 'BT' = Between, etc.)
- LOW (von-Wert, vom Typ des zu typisierenden Feldes)
- HIGH (bis-Wert oder leer, vom Typ des zu typisierenden Feldes)
Anlage Ranges-Tabellentyp
Select-Options
Als Select-Options wird er definiert mit dem Befehl und die Variable ist ein Eingabefeld im Selektionsbildschirm des Reports. Dieser Ranges-Tabellentyp hat zum Tabellenrumpf auch eine Kopfzeile.
Select-Options s_vbeln for vbak-vbeln. "hier am Beispiel VBAK-VBELN
Wird dann die Variable abgefragt
Select * into table lt_vbeln from vbak where vbeln in s_vbeln.
Ruft man dann eine Methode, Funktionsbaustein oder Form-Routine auf, wo der Parameter auf ein Data-Dictionary Ranges-Tabellentyp typisiert ist, darf man nur den Tabellenrumpf vom Select-Options übergeben mit <variable>[], z. B.
perform test using s_vbeln[]. form test using pir_vbeln type FIP_T_VBELN_RANGE. ... endform.
Data
Es kann auch ein Ranges-Tabellentyp definiert werden ohne Feld im Selektionsscreen.
Data: lrt_vbeln type range of vbak-vbeln, "Tabellenrumpf ohne Kopfzeile lrs_vbeln like line of lrt_vbeln. "Kopfzeile
Ranges (obsolet)
Diese Syntax ist obsolet, um einen Ranges-Tabellentyp zu deklarieren.
Ranges: lrt_vbeln2 type range of vbak-vbeln. "Tabellenrumpf mit Kopfzeile.
Verwendung Ranges-Tabellentyp
Häufig wird ein Ranges-Tabellentyp benötigt, um bei einem Parameter flexibler die Daten lesen zu können, z. B. sollen hier bei einer Checkbox vom einem Feld TRUE alle Werte selektiert werden, wenn keine Auswahl getroffen wurde, und nur die Werte TRUE = 'X', wenn der Parameter angehakt wurde.
Data: lrt_true type range of xfeld, lrs_true like line of lrt_true. Parameter: p_true as checkbox. if p_true = 'X'. lrs_true-sign = 'I'. lrs_true-option = 'EQ'. lrs_true-low = 'X'. append lrs_true to lrt_true. endif.
Select * into table lr_table from z_tabelle where true in lrt_true.
Suchen Ranges Tabellentyp zum Datenelement
Datenelement wird in der Transaktion SE11 aufgerufen, hier VBELN.
Der Verwendungsnachweis zum Datenelement wird aufgerufen.
Es wird nach Tabellentypen gefiltert.
In der Liste der Fundstellen wird nach einem Begriff "Range" gesucht.
Der Ranges-Tabellentyp wird mit Doppelklick aufgerufen.
Der strukturierte Zeilentyp wird per Doppelklick aufgerufen.
Man sieht die Felder SIGN, OPTION, LOW und HIGH. LOW und HIGH typisieren auf das Datenelement VBELN und haben dadurch den elementaren Datentyp CHAR und Länge 10.
SIGN typisiert immer auf das Datenelement DDSIGN (CHAR1) und Option auf das Datenelement DDOPTION (CHAR2).
Anlagen Ranges-Tabellentyp im Data-Dictionary
- Enno Wulff beschreibt im Tricktresor: Ranges Tabellentyp definieren, wie ein Ranges-Tabellentyp lokal und im Data-Dictionary (Transktion SE11) angelegt werden kann.