在内部表循环并使用if语句删除内部表中的行

Luc*_*cky 0 sap abap

我有我的内部表it_mseg.在此表中,有一个名为的字段amnt.

it_mseg如果字段amnt大于等于10,我想检查每一行.如果是,我想从内部表中删除它.

因此,最后,当我使用ALV-Grid显示表时,只amnt显示字段值低于10 的行.

我知道这是以某种方式完成的Loop at it_mseg,但我无法做到正确.

编辑:我想用循环来做,所以我可以做一些比GE 10更复杂的事情.

Józ*_*zai 5

您可以使用LOOP来完成它,但使用DELETE更简单:

DELETE it_mseg WHERE amnt GT 10.
Run Code Online (Sandbox Code Playgroud)

如果您仍想使用LOOP(因为您想检查/更改内部表中的其他内容):

LOOP AT it_mseg
     ASSIGNING FIELD-SYMBOL(<ls_mseg>).
  DATA(lv_tabix) = sy-tabix. "save sy-tabix for later use
... "do somthing else
  IF <ls_mseg>-amnt GT 10.
    DELETE it_mseg INDEX lv_tabix.
  ENDIF.
... "do something else
ENDLOOP.
Run Code Online (Sandbox Code Playgroud)