EXPERT RESPONSE
Well, you can't use DELETE WHERE with dynamic tables, but it is still possible to delete records. Consider a situation where you want to delete all entries in where FIELD1 (one of the fields in the table) is equal to 'X'.
DATA. lp_data TYPE REF TO DATA.
FIELD-SYMBOLS: TYPE ANY,
TYPE ANY.
CREATE DATA lp_data LIKE LINE OF .
ASSIGN lp_data->* to .
ASSIGN COMPONENT 'FIELD1' OF STRUCTURE TO .
LOOP AT INTO .
CHECK EQ 'X'.
DELETE TABLE FROM .
ENDLOOP.
Another possibility is to use, for example, with a table that has key fields kf1 and kf2:
DELETE TABLE WITH TABLE KEY ('KF1') = val1 ('KF2') = val2.
With fully specified keys this is very efficient for HASHED tables, somewhat efficient for SORTED tables, and not very efficient, usually, for STANDARD tables.
As ever, what you actually write depends on precisely what you are trying to achieve.
|