Ranges

Aus SAP-Wiki
Wechseln zu: Navigation, Suche

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.

Ranges1.jpg

Der Verwendungsnachweis zum Datenelement wird aufgerufen.

Ranges2.jpg

Es wird nach Tabellentypen gefiltert.

Ranges3.jpg

In der Liste der Fundstellen wird nach einem Begriff "Range" gesucht.

Ranges4.jpg

Der Ranges-Tabellentyp wird mit Doppelklick aufgerufen.

Ranges5.jpg

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

Ranges6.jpg

Anlagen Ranges-Tabellentyp im Data-Dictionary

  • Enno Wulff beschreibt im Tricktresor, wie ein Ranges-Tabellentyp im Data-Dictionary angelegt werden kann.

Web-Links