안녕하세요.
easy abap 2.0 책으로 이제 막 공부해보고 있는 입문자입니다.
책에서
select * from marc where werks = '1101'
IF SY-SUBRC EQ 0.
WRITE marc.
EXIT.
ENDIF.
ENDSELECT.
라는 open sql 관련하여 이해가 안가는 부분이 있어 질문드리고싶습니다.
DB에는 테이블 MARC에 werks, mantnr 이라는 테이블 필드명이 있고,
데이터가 werks, mantnr = {1101, 0001}, {1101, 0002},{1101, 0003} 가 있는데
SY-SUBRC EQ 0.에서 값을 가져오는 구문이 성공하게되면 exit하게되니, 프로그램이 display 하는 값은 1101 의 첫번째 값이 된다고 쓰여있습니다.
sy-subric eq 0. 값을 가져오는 구문이 성공하는 조건을 만족했을 때, write marc 하는거라면,
이미 select 가 된 세 데이터 ({1101, 0001}, {1101, 0002},{1101, 0003} ) 모두 프로그램이 display하는 결과값이 되어야 하는거 아닌가요..?
아직 앞부분밖에 학습하지 않아 그런건지 이해를 못하겠네요...ㅠ
SELECT ~ ENDSELECT.
구문은 데이터를 하나씩 처리하면서 반복합니다.
IF SY-SUBRC = 0.
EXIT.
ENDIF.
구문에서 성공했으면 EXIT 반복을 빠져나오기 때문에 하나만 WRITE합니다.
EXIT을 빼면, 말씀하신 것처럼 모두 데이터가 출력됩니다.