I_CHECK-SELECT_MARK = SELECT_MARK.
I_CHECK-ZZSEQUENCE = ZFEMSCASHFW-ZZSEQUENCE.
I_CHECK-ZZFLOWTYPE = ZFEMSCASHFW-ZZFLOWTYPE.
APPEND : I_CHECK.
이렇게 인터널 테이블이 APPEND로 인해서 저 3필드의 데이터값을 저장하게 되는데요
PERFORM CHECK_DEAL.
이 문장을 만나서 PERFORM문안에서
수행할때
DATA : BEGIN OF L_CHECK OCCURS 0.
INCLUDE STRUCTURE I_CHECK.
DATA : END OF L_CHECK.
READ TABLE I_CHECK INTO L_CHECK.
LOOP AT I_CHECK.
IF L_CHECK-SELECT_MARK EQ I_CHECK-SELECT_MARK
AND L_CHECK-ZZSEQUENCE EQ I_CHECK-ZZSEQUENCE.
ELSE.
IF L_CHECK-SELECT_MARK NE I_CHECK-SELECT_MARK
AND L_CHECK-ZZSEQUENCE NE I_CHECK-ZZSEQUENCE.
ELSE.
MESSAGE E996 WITH ZFEMSCASHFW-ZZSEQUENCE ZFEMSCASHFW-ZZFLOWTYPE.
ENDIF.
ENDIF.
ENDLOOP.
이 로직에서LOOP AT I_CHECK를 만나 IF문을들어가면서 데이터값이
1번돌때 ' ' 00042 001
2번돌때 'X' 00042 002
원래는 이렇게 2번째의 값을 가지고 있어야 정산인걸로 아는데
1번의 값을 가지고는 IF문을 수행해버리는데요.
로직이 잘못 되어진건가요???
READ TABLE I_CHECK INTO L_CHECK.
이 문장은 왜 넣으신건지? 이것으로 L_CHECK 값이 결정되는거 같은데...
저렇게 구현하시면 I_CHECK의 헤더에 데이터가 있으면 헤더값이 L_CHECK로 가고
없으면(clear i_check) 첫번째 index값이 L_CHECK로 갈거에요...
천천히 디버깅하시면서 잘 생각해보시면 답이 나올듯합니다..
(전체적인 프로그램의 방향을 몰라 자세히 답변드리지 못함)