data: c type cursor,
wa type sbook.
open cursor c for
select carrid connid fldate bookid smoker
from sbook
where carrid = 'LH'
order by carrid connid fldate smoker bookid.
fetch next cursor c into corresponding fields of wa.
while sy-subrc = 0.
if wa-smoker = ' '. ==> ' ' 의 의미는 null값인가요?
perform nonsmoker using c.
elseif wa-smoker = 'X'.
perform smoker using c.
skip.
else.
exit.
endif.
endwhile.
form nonsmoker using n_cur type cursor.
while wa-smoker = ' ' and sy-subrc = 0.
format color = 5.
write: / wa-carrid, wa-connid, wa-fldate, wa-bookid.
fetch next cursor n_cur into corresponding fields of wa.
endwhile.
endform.
form smoker using s_cur type cursor.
while wa-smoker = 'X' and sy-subrc = 0.
format color = 6.
write: / wa-carrid, wa-connid, wa-fldate, wa-bookid.
fetch next cursor s_cur into corresponding fields of wa.
endwhile.
endform.
null 값 하고 ' ' 값은 다릅니다.
null 값은 아무런 값이 존재하지 않는 것이고, ' '는 space 값을 의미합니다.
질문하고 싶은 것은 initial value와 비교하는 것이겠지요.
IF WA-SMOKER IS INITIAL 은 TYPE C 인경우
IF WA-SMOKER = ' '와 동일합니다.
각 데이터 타입마다 INITIAL VALUE는 다릅니다.
예를들어
TYPE C는 SPACE
TYPE I는 0 이 기본값입니다.
NULL값은 ABAP 언어에서 존재하지 않습니다. 데이터 타입에 따라 초기값이 기본으로 다 세팅됩니다.
다만 테이블 필드 속성의 INITIAL VALUE 설정을 하지 않으면 NULL 값이 테이블에 저장은 됩니다.
http://e-abap.servebbs.net/zb/bbs/zboard.php?id=onepaper&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&keyword=INITIAL&select_arrange=headnum&desc=asc&no=172
CURSOR 구문은 CBO에서는 잘 안쓰는데..물론 표준 프로그램에서는 자주 보입니다.
그냥 공부를 하고 계신건가요?