在内部 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.
我有我的内部 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.