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

Abap 循环内部表并使用if语句删除内部表中的一行,abap,Abap,我有我的内部表格it\mseg。在此表中,有一个名为amnt的字段 如果字段amnt大于等于10,我想检查it\mseg中的每一行。如果是,我想从内部表中删除它 因此,在最后,当我使用ALV Grid显示表格时,只会显示字段amnt值小于等于10的行 我知道这在某种程度上是通过循环完成的,但我就是做不好 编辑:我想用循环来做,所以我可以做一些比GE 10更复杂的事情。你可以用循环来做,但用删除来做更简单: DELETE it_mseg WHERE amnt GT 10. 如果仍要使用循环执行此

我有我的内部表格
it\mseg
。在此表中,有一个名为
amnt
的字段

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

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

我知道这在某种程度上是通过
循环完成的,但我就是做不好


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

你可以用循环来做,但用删除来做更简单:

DELETE it_mseg WHERE amnt GT 10.
如果仍要使用循环执行此操作(因为要检查/更改内部表中的其他内容):

在it处循环\u mseg
正在分配字段-SYMBOL()。
数据(lv_tabix)=sy tabix。“保存sy tabix以备将来使用
…“还有别的事吗
如果-amnt GT 10。
删除它_msegindex lv_tabix。
恩迪夫。
... “做点别的吧
结束循环。

Hmm是的,但是如何使用循环?如果我想做一些比GT 10更复杂的事情。那么我建议你在问题帖中添加这些信息,因为Jozsef的答案正好符合你提出的要求。@Lucky:我在我的答案中添加了这些。如果你想有更复杂的条件,请使用“GT 10”“您必须相应地修改它。
DELETE it_mseg
的行为与
DELETE it_mseg INDEX lv_tabix
相同,但现在您可以删除lv_tabix定义并减少错误位置DELETE it_mseg是最好的方法,而不是使用循环。我个人认为从循环的内部表中删除元素是不合适的
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.