Deleting entries from a dynamic table
I have dynamic internal table . How do I delete entries from this table on the basis of some condition?

    Requires Free Membership to View

    When you register, you will start receiving targeted emails from my award-winning team of editorial writers. Our goal is to keep you informed on the hottest topics and biggest challenges faced by SAP professionals today.

    Hannah Smalltree, Editorial Director

    By submitting your registration information to SearchSAP.com you agree to receive email communications from TechTarget and TechTarget partners. We encourage you to read our Privacy Policy which contains important disclosures about how we collect and use your registration and other information. If you reside outside of the United States, by submitting this registration information you consent to having your personal data transferred to and processed in the United States. Your use of SearchSAP.com is governed by our Terms of Use. You may contact us at webmaster@TechTarget.com.

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.

This was first published in April 2008