
Mit Filtern schränken Sie die Anzeige von Datensätzen in der ALV-Ausgabe ein. Dazu geben Sie Bedingungen an, die ein Datensatz in einem bestimmten Feld erfüllen muss, um angezeigt oder herausgefiltert zu werden.
Zu Filterobjekten können Sie folgende Einstellungen vornehmen:
Filterbedingungen eines Feldes erzeugen, holen oder löschen
Einstellungen zur Filterbedingung vornehmen
Groß- und Kleinschreibung ignorieren
Filtern einer Spalte verbieten
Filtern nach den Werten eines anderen Feldes
Registerkarte zum Filtern oder Drucktaste Filter in Toolbar ein- und ausblenden
Filterbedingungen eines Feldes erzeugen, holen oder löschen
Anders als bei der Sortierbedingung können Sie zu jedem Feld beliebig viele Filterbedingungen erzeugen.
Sie können nur zu solchen Spalten eine Filterbedingung erzeugen, zu denen Sie dies nicht ausdrücklich verboten haben (siehe unten).
Das Filtern ist eine Eigenschaft eines Feldes in der ALV-Ausgabe (siehe Felder). Um die Filterbedingung eines Feldes zu erzeugen, zu holen oder zu löschen, verwenden Sie Methoden der Interface-Klasse IF_SALV_WD_FILTER (implementierende Klasse CL_SALV_WD_FIELD).
Methoden zum Erzeugen, Holen und Löschen von Filterbedingungen
|
Funktion |
Methode |
|
Eine bestimmte Filterbedingung holen |
GET_FILTER_RULE |
|
Alle Filterbedingungen des Feldes holen |
GET_FILTER_RULES |
|
Filterbedingung erzeugen |
CREATE_FILTER_RULE |
|
Bestimmte Filterbedingung löschen |
DELETE_FILTER_RULE |
|
Alle Filterbedingungen des Feldes löschen |
DELETE_FILTER_RULES |
Die Filterbedingung eines Feldes ist repräsentiert durch ein Objekt der Klasse CL_SALV_WD_FILTER_RULE.
Wenn Sie Ihrer ALV-Ausgabe eine neue Datentabelle mit neuer Struktur zuweisen, werden die Filterbedingungen aller Felder automatisch gelöscht.
Einstellungen zur Filterbedingung vornehmen
Eine Filterbedingung besteht aus folgenden Angaben:
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. Sie geben immer den unteren Wert an (LOW_VALUE), für einen Bereich auch den oberen Wert (HIGH_VALUE).
Operator, über den Feldwert und Vergleichswert verglichen werden
Mit dieser Angabe (OPERATOR) legen Sie fest, wie der Zellenwert zum Vergleichswert stehen muss (z. B. größer, kleiner oder gleich).
Einschluss oder Ausschluss
Mit dieser Angabe legen Sie fest, ob die Zeilen angezeigt werden, die der Bedingung entsprechen, oder ob sie gerade nicht angezeigt werden.
Um Einstellungen zu einer Filterbedingung zu ändern, verwenden Sie Methoden der Klasse CL_SALV_WD_FILTER_RULE.
Methoden zu Einstellungen zur Filterbedingung
|
Funktion |
Methode |
|
Vergleichswert (Untergrenze) festlegen |
SET_LOW_VALUE |
|
Vergleichswert (Untergrenze) holen |
GET_LOW_VALUE |
|
Obergrenze eines Vergleichsbereichs festlegen |
SET_HIGH_VALUE |
|
Obergrenze eines Vergleichsbereichs holen |
GET_HIGH_VALUE |
|
Operator festlegen |
SET_OPERATOR |
|
Operator holen |
GET_OPERATOR |
|
Einschluss oder Ausschluss festlegen |
SET_INCLUDED |
|
Einschluss oder Ausschluss holen |
GET_INCLUDED |
Groß- und Kleinschreibung ignorieren
Standardmäßig berücksichtigt der Filter Groß- und Kleinschreibung bei der Suche nach Datensätzen, die der Filterbedingung entsprechen. Wenn Sie also den Vergleichswert angeben, müssen Sie die genaue Schreibweise einhalten, um die gewünschten Treffer zu erhalten.
Sie können einstellen, dass der Filter die Groß- und Kleinschreibung ignoriert. Dazu verwenden Sie Methoden der Interface-Klasse IF_SALV_WD_FIELD_SETTINGS (implementierende Klasse CL_SALV_WD_CONFIG_TABLE).
Methoden zur Groß- und Kleinschreibung
|
Funktion |
Methode |
|
Groß- und Kleinschreibung ignorieren |
SET_FILTER_IGNORING_CASE |
|
Prüfen, ob Groß- und Kleinschreibung ignoriert wird |
IS_FILTER_IGNORING_CASE |
Filtern einer Spalte verbieten
Sie können für ein Feld gezielt das Filtern verbieten. Dies hat folgende Auswirkungen:
Wenn eine ALV-Ausgabe gefiltert ist, wird automatisch eine Filterzeile angezeigt, in der zu jeder Spalte der aktuelle Filter erkennbar ist: Der Benutzer kann hier auf schnelle Weise einen Filter eingeben.
Wenn Sie für ein Feld das Filtern verbieten, ist in dieser Filterzeile die entsprechende Zelle leer und nicht eingabebereit.
Im Dialogfenster Einstellungen wird auf der Registerkarte Filter die entsprechende Spalte nicht mehr angeboten.
Wenn Sie in Ihrer Anwendung für dieses Feld eine Filterbedingung definiert haben, hat der Filter in der ALV-Ausgabe keine Auswirkung.
Um das Filtern eines Feldes zu verbieten, verwenden Sie Methoden der Interface-Klasse IF_SALV_WD_FILTER (implementierende Klasse CL_SALV_WD_FIELD).
Methoden zum Verbieten von Filtern
|
Funktion |
Methode |
|
Filtern für ein Feld verbieten |
SET_FILTER_ALLOWED |
|
Prüfen, ob Filtern erlaubt ist |
IS_FILTER_ALLOWED |
Filtern nach den Werten eines anderen Feldes
Sie können ein Feld angeben, nach dem das aktuelle Feld gefiltert wird, wenn das Feld selbst nicht das gewünschte Ergebnis liefert oder zu komplizierte Eingaben erfordert. Dazu verwenden Sie Methoden der Interface-Klasse IF_SALV_WD_COLUMN_SERVICE_REF (implementierende Klasse CL_SALV_WD_COLUMN).
Methoden zum Filtern nach den Werten eines anderen Feldes
|
Funktion |
Methode |
|
Feldnamen des anderen Feldes festlegen |
SET_FILTER_FIELDNAME |
|
Feldnamen des anderen Feldes holen |
GET_FILTER_FIELDNAME |