Alternative zu CHECK IN “RANGETAB”

Um komfortabel abzufragen, ob ein Wert in einer Liste von Werten enthalten ist, ist eine RANGES-Tabelle/ SELECT-OPTIONS-Tabelle in der Regel die beste Wahl. Hier werden die gültigen, bzw ungültigen Werte in die Tabelle eingetragen und können dann einfach mit “CHECK feld IN RANGETAB” validiert werden.Es gibt aber für den häufigen Fall, dass die Prüfung zu einer kleinen Liste von Werten erfolgen soll, eine übersichtliche Alternative…

Im folgenden soll geprüft werden, ob ein Feld eine bestimmte Materialart enthält:

Standard-Fall

DATA h_mtart TYPE mtart.
RANGES r_mtart FOR  h_mtart.

PARAMETERS: p_mtart type mtart.

CLEAR r_mtart.
r_mtart-sign   = ‘I’.
r_mtart-option = ‘EQ’.
r_mtart-low    = ‘FERT’.
APPEND r_mtart.

r_mtart-low    = ‘HALB’.
APPEND r_mtart.

CHECK p_mtart IN r_mtart.

Alternative

PARAMETERS: p_mtart TYPE mtart.

CHECK ‘FERT/HALB’ CS p_mtart.

Nachteile bei dieser Methode sind:

o Sie kann nicht bei SELECT verwendet werden. Hier können Sie jedoch
SELECT * FROM mara WHERE mtart IN (‘FERT’,’HALB’). verwenden.

o Sie müssen sicherstellen, dass entweder im Vergleichsstring (‘FERT/HALB’) keine Leerzeichen vorhanden sind, oder Sie müssen sicherstellen, dass das zu prüfende Feld nicht leer ist.

o Sie können entweder nur Werte einschließen (Vergleich CS Contains String) oder nur Werte ausschließen (Vergleich NS Contains no String).

 

Enno Wulff
Letzte Artikel von Enno Wulff (Alle anzeigen)

Leave a Comment