I have an internal table that I want to filter further and further based on whether data is present. I have tried the following, but unfortunately I cannot apply a SELECT an internal table.
How can I solve this problem?
"Here I'm getting the hole database into my internal table SELECT * FROM TABLE INTO CORRESPONDING FIELDS OF TABLE @itab. "This should be my first filter if iv_name is not initial IF iv_name IS NOT INITIAL. SELECT * FROM itab WHERE NAME = @iv_name INTO CORRESPONDING FIELDS OF TABLE @itab. ENDIF. "This should be my second filter if iv_age is not initial IF iv_age IS NOT INITIAL. SELECT * FROM itab WHERE AGE = @iv_age INTO CORRESPONDING FIELDS OF TABLE @itab. ENDIF.
There are several ways in ABAP to achieve your goal. You can use the DELETE keyword to filter the data in an internal table:
IF iv_name IS NOT INITIAL DELETE itab WHERE name NE iv_name. ENDIF.
Another possibility is to use the FILTER keyword, but the prerequisite is, that the internal table is TYPE SORTED or HASHED:
itab = FILTER #( itab WHERE name = iv_name ).