LOOP AT it_display.
AT NEW pernr.
IF it_display-ptotal <> 0 OR it_display-jtotal <> 0.
it_display-inwon = 1.
MODIFY it_display. CLEAR it_display.
ENDIF.
ENDAT.
ENDLOOP.
================================
loop 문을 돌면서 at new event 를 사용하려고 합니다.
그런데 그 안에 어떤 필드에 값이 0이 아니면 inwon 필드에 1이라고 넣어주는 로직이 들어갑니다.
위의 로직대로 실행하면
기존에 있던 데이터들이
문자는 **** 로 찍히고 금액은 0 으로 바뀌네요.
어떻게 해야하나요~
고수님들의 친절한 답변 부탁드립니다~~
at .. endat 안에서는 internal table의 헤더에 있는 문자필드는 ****로 숫자필드는 0으로 변경됩니다.
(at .다음에 지정하는 필드는 원래값 유지됨)
at ... endat을 사용하기 전에, 변수나 스트럭쳐에 값을 옮겨 놓고 at ... endat 안에서는 그 변수의 값을 사용하시면 됩니다.
아래 로직 참고하세요.
data: lt_display like it_display.
LOOP AT it_display.
move-corresponding it_display to lt_display. <--- 1. data를 변수에 이동..
AT NEW pernr.
IF lt_display-ptotal <> 0 OR lt_display-jtotal <> 0. <--- 2. 변수의 값을 이용하여 처리한다.
lt_display-inwon = 1.
move-corresponding lt_display to it_display.
MODIFY it_display from . CLEAR it_display.
ENDIF.
ENDAT.
ENDLOOP.