Mit Filtern schränken Sie die Anzeige von Datensätzen in der ALV-Ausgabe ein. Dazu geben Sie Bedingungen an, die ein Datensatz in einer bestimmten Spalte erfüllen muss, um angezeigt oder herausgefiltert zu werden.
Analog zum Sortierungsobjekt können Sie zu jeder Spalte maximal ein Filterobjekt erzeugen. Jedes Filterobjekt kann eine oder mehrere Filterbedingungen enthalten.
Die Gesamtheit aller Filterobjekte ist repräsentiert durch ein Objekt vom Typ CL_SALV_FILTERS. Die Filtereinstellungen einer Spalte sind repräsentiert durch ein Objekt vom Typ CL_SALV_FILTER. Die einzelnen Filterbedingungen in einem Filterobjekt sind repräsentiert durch Objekte vom Typ CL_SALV_SELOPT.
In einer Filterbedingung machen Sie verschiedene Angaben dazu, welche Datensätze angezeigt werden sollen:
· Die Spalte, in der sich die geprüften Inhalte befinden
· Der Vergleichswert, auf den die Zeilen geprüft werden. Dies kann ein einzelner Wert sein oder ein Bereich, innerhalb dem der geprüfte Wert liegen muss.
· Die Bedingung, also ein Operator, der festlegt wie der Zellenwert zum Vergleichswert stehen muss (z. B. größer, kleiner oder gleich)
· Einschluss oder Ausschluss, also ob die Zeilen, die der Bedingung entsprechen, angezeigt werden, oder ob sie gerade nicht angezeigt werden
Es sollen alle Einträge angezeigt werden, die in der Spalte CARRID den Wert AA enthalten.
...
gr_filter->add_filter(
columnname = 'CARRID'
sign = 'I'
option = 'EQ'
low = 'AA' ).
...
§ Mit dem Parameter columname legen Sie den Spaltennamen fest
§ Mit dem Parameter low (oder high) legen Sie den Vergleichswert fest
§ Mit dem Parameter option legen Sie die Bedingung fest
§ Mit dem Parameter sign legen Sie fest, ob es sich um eine ein- oder eine ausschließende Bedingung handelt
Zu Filterobjekten können Sie folgende Einstellungen vornehmen:
· Filterobjekte und Filterbedingungen holen
· Filterobjekt und Filterbedingung erzeugen und löschen
· Filtern einer Spalte verbieten
Für all diese Funktionen gilt:
Darstellungsart ALV-Werkzeug |
Klass. ABAP-Liste |
Fullscreen |
Im Container |
Einfache, zweidimensionale Tabelle |
Ja |
Ja |
Ja |
Hierarchisch-sequenzielle Liste |
Ja |
|
|
Baumstruktur |
|
Nein |
Nein |
In jeder ALV-Hauptklasse, in der Filtern möglich ist, existiert die Methode GET_FILTERS, die das FILTERS-Objekt der ALV-Ausgabe (also alle Filterobjekte der Spalten) zurückgibt. Über dieses FILTERS-Objekt erhalten Sie mit den Methoden GET bzw. GET_FILTER das Filterobjekt der gewünschten Spalte, sofern dort eines vorhanden ist. Über das Filterobjekt wiederum erhalten Sie dessen Filterbedingungen.
Methoden
Funktion |
Klasse |
Methode |
FILTERS-Objekt holen |
CL_SALV_TABLE CL_SALV_HIERSEQ_TABLE |
GET_FILTERS |
Alle Filterobjekte holen |
CL_SALV_FILTERS |
GET |
Alle Filterobjekte einer Hierarchieebene holen |
CL_SALV_HIERSEQ_LEVEL |
GET_FILTERS |
Bestimmtes Filterobjekt holen |
CL_SALV_FILTERS |
GET_FILTER |
Prüfen, ob eine Spalte gefiltert ist (ein Filterobjekt existiert) |
IS_FILTER_DEFINED |
|
Alle Filterbedingungen eines Filterobjekts holen |
CL_SALV_FILTER |
GET |
Zu einer Spalte können Sie maximal ein Filterobjekt erzeugen. Zu jedem Filterobjekt jedoch können Sie beliebig viele Filterbedingungen erzeugen.
Sie können Filterobjekte entweder einzeln oder alle gemeinsam löschen. Die Filterbedingungen eines Filterobjekts können Sie nur gemeinsam löschen.
Sie können nur zu solchen Spalten ein Filterobjekt erzeugen, zu denen Sie dies nicht ausdrücklich verboten haben (siehe Abschnitt Filtern einer Spalte verbieten).
Wenn Sie zu einer Spalte das erste Filterobjekt definieren, wird automatisch eine Filterbedingung erzeugt. Die Einstellungen dazu legen Sie über die Parameter der Methode ADD_FILTER fest. Alle weiteren Filterbedingungen zu derselben Spalte erzeugen Sie über die Methode ADD_SELOPT.
Alle Angaben zur Filterbedingung verwalten Sie über die Methoden der Klasse CL_SALV_SELOPT.
Methoden
Funktion |
Klasse |
Methode |
Filterobjekt erzeugen |
CL_SALV_FILTERS |
ADD_FILTER |
Einzelnes Filterobjekt löschen |
REMOVE_FILTER |
|
Alle Filterobjekte löschen |
CLEAR |
|
Filterbedingung erzeugen |
CL_SALV_FILTER |
ADD_SELOPT |
Alle Filterbedingungen löschen |
CLEAR |
|
Vergleichswert oder Bereich festlegen |
CL_SALV_SELOPT |
SET_LOW SET_HIGH |
Vergleichswert holen |
GET_LOW GET_HIGH |
|
Bedingung (Operator) festlegen |
SET_OPTION |
|
Bedingung (Operator) holen |
GET_OPTION |
|
Ein- oder Ausschluss festlegen |
SET_SIGN |
|
Ein- oder Ausschluss holen |
GET_SIGN |
Wenn Sie Ihrer ALV-Ausgabe eine neue Datentabelle mit neuer Struktur zuweisen, werden alle Filterobjekte automatisch gelöscht.
Standardmäßig können Sie oder der Nutzer zu jeder Spalte einen Filter definieren. Sie können für jede einzelne Spalte festlegen, ob dafür ein Filterobjekt definiert werden darf.
Methoden
Funktion |
Klasse |
Methode |
Filtern einer Spalte verbieten |
CL_SALV_FILTERS |
SET_FILTER_ALLOWED |
Prüfen, ob für eine Spalte das Filtern verboten ist |
IS_FILTER_ALLOWED |