data: begin of itab occurs 0.
include structure ztrecord.
data: end of itab.
select * from ztrecord into table itab.
case itab-waers.
when 'KRW'.
write: 'The List of Empolyees who are receiving the salary in KRW'.
loop at itab.
write: /, itab-ID+2, itab-name,' ' no-gap, itab-post, itab-erdat,
itab-pay currency itab-waers decimals 0, itab-waers , itab-fee right-justified, '%'.
clear itab.
endloop.
when others.
write: 'The List of Employees who are receving the salary in USD'.
loop at itab.
write: /, itab-ID+2, itab-name,' ' no-gap, itab-post, itab-erdat,
itab-pay currency itab-waers decimals 0, itab-waers , itab-fee right-justified, '%'.
clear itab.
endloop.
endcase.
itab-waers의 값이 'KRW'인 조건이 먹지 않습니다.
디버깅을 돌려보니 아예 조건을 띄어 넘더라구요.
아, 그리고 ztrecord에서의 waers필드의 값이 KRW인 data는 존재 합니다.
조건을 먹게 하려면 어떻게 해야 하나요?
댓글 3
-
DBnoid
2008.12.25 19:47
-
초코
2008.12.25 20:55
select .... into table itab. 의 데이터는 itab 테이블 부분에 들어가고요.
case itab-waers. 의 데이터는 header line 을 보고 판단합니다.
테이블 데이터를 header line에 넣은 적이 없으니 값이 없는 것입니다.
리스트의 waers가 전부 KRW 이거나 전부 USD 인거 같은데요.
다음과 같이 하면 되지 않을까 하네요.
select ... into table itab.
read table itab index 1.
case itab-waers.
when 'KRW'.
write ...리스트 제목 출력
when 'USD'.
write ...리스트 제목 출력
endcase.
loop at itab.
write ...데이터 출력
endloop.
-
멘토
2008.12.27 00:40
부분에 디버깅을 거셔서 select ... into table itab. 요 부분이 실행된 다음
ITAB-WAERS부분 어떤 값이 들어가지는 확인하시는게 좋을거 같습니다.
( 당연 헤더라인이죠 )
1. 만약 윗분처럼 한건만 읽으셔서 처리하셔도 된다면
read table itab index 1.
case itab-waers.
하면 될거 같고 아니면
2. ITAB 여러 통화가 존재한다면
LOOP AT ITAB - ENDLOOP 을 돌리시면서 중복된 통화를 제외한 통화들을 저장하셔서
각 통화별로 출력하시는거 어떨지
itab에 들어가는 행이 달랑 한행인가요? itab에 넣어주는 select 문은 single이 아닌것이 분명 여러행이 들어가 있을듯 한데요
그럼 loop를 돌리면서 통화를 체크해야 하지 않나요?