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

时间:2018-06-04 11:43:30

标签: sap abap

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

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

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

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

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

1 个答案:

答案 0 :(得分:5)

你可以用LOOP来做,但使用DELETE更简单:

DELETE it_mseg WHERE amnt GT 10.

如果您仍想使用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.