ABAP Keyword Documentation → ABAP - Reference → Processing Internal Data → Internal Tables → Expressions and Functions for Internal Tables
FILTER - Filter Operator
Other versions:
7.31 | 7.40 | 7.54
Syntax
... FILTER type( itab [EXCEPT] [IN ftab] [USING KEY keyname]
WHERE c1 op f1 [AND c1 op f2 [...]] ) ...
Variants
1. ... FILTER type( itab ... )
2. ... FILTER type( itab ... IN ftab ... )
Extras
1. ... EXCEPT
2. ... USING KEY keyname
3. ... WHERE c1 op v1 [AND c1 op v2 [...]]
Effect
A constructor expression with the component
operator FILTER creates a result of a table type specified using type.
The rows are taken from an existing internal table itab in accordance with
the condition after WHERE, converted to the row type of type, and inserted into the target table in accordance with the rules of
INSERT ...
INTO TABLE. In the first variant, the
condition is constructed using single values and in the second variant using values from a filter table ftab.
The following can be specified for type:
- A non-generic table type.
- The
#character as a symbol for the operand type. If the data type required in an operand position is not unique and no fully identifiable, the type ofitabis used (if identifiable).
itab is a
functional operand position. The row type of itab must be convertible to the row type of the target type type.
The addition EXCEPT is used to read the rows that do not meet the WHERE
condition. USING KEY can (or must) be used to specify a table key for evaluating itab or ftab (depending on the variant).
Notes
- Table filtering can also be performed using a
table comprehension or a
table reduction with an
iteration expression for
table iterations with
FOR. The operatorFILTERprovides a shortened format for this special case and is more efficient to execute.
- A table filter constructs the result row by row. If the result contains almost all rows in the source table, this method can be slower than copying the source table and deleting the surplus rows from the target table.
Variant 1
... FILTER type( itab ... )
Effect
Filtering using single values. The columns of a table key of itab are compared
with single values in the WHERE condition. Those rows of itab
are used that meet the WHERE condition or do not meet it when EXCEPT is specified.
Here, the internal table itab must have at least one
sorted key or one hash key used for access. This can be
- either the primary
table key used without specifying
USING KEYor by specifying its nameprimary_keyafterUSING KEY,
- or a secondary table key used by specifying its name after
USING KEY.
This variant of a filter operator is not possible for an internal table itab without sorted key or hash key.
Variant 2
... FILTER type( itab ... IN ftab ...)
Effect
Filtering using values from an internal table ftab. In the WHERE
condition, the columns of itab are compared with the values of the columns
of the table key of the rows of the filter table ftab. Those rows in
itab are used for which at least one row in ftab meets the WHERE
condition or for which there is no row in ftab when EXCEPT is specified.
Here, the filter table ftab must have at least one
sorted key or one hash key used for access. This can be
- either the primary
table key used without specifying
USING KEYor by specifying its nameprimary_keyafterUSING KEY,
- or a secondary table key used by specifying its name after
USING KEY.
This variant of a filter operator is not possible for an internal table ftab
without sorted key or hash key. This variant does not place any requirements on the table keys of itab. ftab is a
functional operand position.
Note
The row types of itab and ftab do not need to be identical.
Examples
Addition 1
... EXCEPT
Effect
If EXCEPT is not specified, those rows from itab
are used that meet the WHERE condition. If EXCEPT
is specified, those rows from itab are used that do not meet the WHERE condition.
Note
The addition EXCEPT is not the same as a negation of the WHERE condition, particularly in the second variant.
Addition 2
... USING KEY keyname
Effect
Table key keyname specified with which the WHERE condition is evaluated.
- In the first variant, a sorted key or a hash key of the table
itabcan be specified. If the primary key ofitabis not a sorted key or hash key,itabmust have a secondary key of this type and it must be specified usingUSING KEY.
- In the second variant, a sorted key or a hash key of the filter table
ftabcan be specified. If the primary key offtabis not a sorted key or hash key,ftabmust have a secondary key of this type and it must be specified usingUSING KEY.
Addition 3
... WHERE c1 op f1 [AND c1 op f2 [...]]
Effect
A condition for the table key used in the FILTER expression must be specified after WHERE:
- In the case of a hash key, precisely one comparison expression
c op ffor each key component. The only relational operator allowed foropis=.
- In the case of a sorted key, an initial part of the key must be covered by
comparison expressions
c op f.opcan be any binary relational operator.
Multiple comparisons can be joined using AND only. There can be no further comparisons alongside those mentioned for key components.
- In the first variant, key components of the internal table
itabmust be specified for the left operandsc1,c2, ... On the right side, data objectsf1,f2, ... must be specified that are compatible with the left side.f1,f2, ... are general expression positions.
- In the second variant, key components of the filter table
ftabmust be specified for the right operandsf1,f2, ... On the left side, components of the internal tableitabmust be specified that are compatible with the right side.
Notes
- The obsolete relational operators cannot be used in the
WHEREcondition.