Есть таблица, в которой помимо прочих есть поля SHKZG и MENGE.
Нужно посчитать две суммы по полям MENGE при SHKZG = 'S' и SHKZG = 'N' соответственно.
Делаю таким кодом:
Code:
LOOP AT lt_matdocs WHERE matnr EQ <fs_mat>-matnr.
AT NEW shkzg.
SUM.
IF lt_matdocs-shkzg EQ 'S'.
lv_menge_s = lt_matdocs-menge.
ELSEIF lt_matdocs-shkzg EQ 'H'.
lv_menge_h = lt_matdocs-menge.
ENDIF.
ENDAT.
ENDLOOP.
Почему-то при одном и том же SHKZG он каждый раз заходит в AT NEW shkzg. Т.е. если подряд идет 10 строк с SHKZG = 'S', то проходит не один раз, а 10 раз. Т.е. игнорирует "AT NEW shkzg". И суммы не считает((.
Пока сделал так:
Code:
LOOP AT lt_matdocs WHERE matnr EQ <fs_mat>-matnr AND shkzg = 'S'.
AT FIRST.
SUM.
lv_menge_s = lt_matdocs-menge.
ENDAT.
ENDLOOP.
LOOP AT lt_matdocs WHERE matnr EQ <fs_mat>-matnr AND shkzg = 'H'.
AT FIRST.
SUM.
lv_menge_h = lt_matdocs-menge.
ENDAT.
ENDLOOP.
еще так:
Code:
LOOP AT lt_matdocs WHERE matnr EQ <fs_mat>-matnr.
IF lt_matdocs-shkzg EQ 'S'.
ADD lt_matdocs-menge TO lv_menge_s.
ELSEIF lt_matdocs-shkzg EQ 'H'.
ADD lt_matdocs-menge TO lv_menge_h.
ENDIF.
ENDLOOP.
Какой способ рациональнее и все-таки почему не работает первый способ?