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

Loop at internal table and delete a row in the internal table using a if statement

我有我的内部 table it_mseg。在这个table中,有一个字段叫做amnt

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

所以最后,当我使用 ALV-Grid 显示 table 时,只会显示字段 amnt 的值小于等于 10 的行。

我知道这是通过 Loop at it_mseg 以某种方式完成的,但我就是做不对。

编辑:我想用一个循环来做,这样我就可以做一些比 GE 10 更复杂的事情。

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

DELETE it_mseg WHERE amnt GT 10.

如果你仍然想用 LOOP 来做(因为你想 check/change 内部 table 中的其他东西):

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.