首页 文章

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

提问于
浏览
0

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

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

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

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

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

1 回答

  • 4

    您可以使用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.
    

相关问题