Цикл во внутренней таблице и удаление строки во внутренней таблице с помощью оператора if - PullRequest
0 голосов
/ 04 июня 2018

У меня есть внутренняя таблица it_mseg.В этой таблице есть поле с именем amnt.

. Я хочу проверить для каждой строки в it_mseg, является ли поле amnt больше 10. Если это так, я хочу удалитьэто из внутренней таблицы.

Чтобы в конце, когда я отображаю таблицу с использованием ALV-Grid, будут отображаться только те строки, где значение поля amnt меньше 10.

Я знаю, что это как-то сделано с Loop at it_mseg, но я просто не могу понять это правильно.

РЕДАКТИРОВАТЬ: я хочу сделать это с помощью цикла, чтобы я мог сделать что-то более сложное, чем просто GE 10.

1 Ответ

0 голосов
/ 04 июня 2018

Вы можете сделать это с 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.
...