READ TABLE iqals WITH KEY aufnr = iqals_k-aufnr
matnr = iqals_k-matnr
BINARY SEARCH.
를 주게되면 자재가 두건 이상시 쿼리에서 받은값으로 move ~등 작업을 한뒤 결과보기를
조회해 보면 해당 데이터의 필드중 빠지는 값이 오게 됩니다.
BINARY SEARCH.를 빼고
READ TABLE iqals WITH KEY aufnr = iqals_k-aufnr
matnr = iqals_k-matnr.
만 줄때는 값을 바로 나옵니다.
그런데
READ TABLE iqals WITH KEY aufnr = iqals_k-aufnr
matnr = iqals_k-matnr.
로 주었을때
multiselection 부분에서 자재, 오더,호기의 조건을 주는 부분에서
자재, 오더조건만 줄시 또는 다른 조건을 줄시 같은 레코드가 두번 나오는 경우가 있는데요..
그러면서 필드중 나오지 않는 것도 있구요..
이런경우 처리를 어떻게 해줘야 하나요?
댓글 3
-
초보아밥퍼
2008.05.14 19:28
-
풍뎅이
2008.05.14 19:48
select ~
into corresponding fields of table iqals
where ~.
if iqals[] is initial.
message s900.
stop.
else.
sort iqals by matnr aufnr hogi.
delete adjacent duplicates from iqals.
iqals_m[] = iqals[].
delete adjacent duplicates from iqals_m comparing matnr. =>가)
endif.
loop at iqals_m.
select ~
appending corresponding fields of table iqals_k
~
where (where_syntax).
sort iqals_k by matnr aufnr hogi merknr.
==>나)
endloop.
loop at iqals_k.
read table iqals with key aufnr = iqals_k-aufnr
matnr = iqals_k-matnr.
구조는 이렇게 되어 있는데요 가)부분에 delete했구요.
나)부분에도 같은 데이터가 올수 있으므로
DELETE ADJACENT DUPLICATES FROM iqals_k
COMPARING aufnr matnr.
를 넣으라는 말씀이시죠?
-
풍뎅이
2008.05.14 20:54
답변주셔서 감사드립니다..
가), 나)부분 모두 matnr에 대해 delete 시키면 데이터가 더 나오지 않습니다..
가)부분만 delete하고 where (where_syntax).를 조정해주면 잘나오네요..
지금 보시면 iqals_k 인터널 테이블을 loop 돌리시면서 read하시는거 같은데요
우선 첫번째로 BINARY SEARCH를 쓰시려면 sort는 필수입니다.
sort가 없으면 BINARY SEARCH는 무의미 합니다. 참고하시고
두번째로 iqals_k에 aufnr와 matnr 필드의 값이 동일한게 있을겁니다.
그리하면 read했을때 한건 이상이 나오겠지요.
key 값이 정확하다면(<-- 잘생각해보세요)
DELETE ADJACENT DUPLICATES FROM iqals_k
COMPARING aufnr matnr. 로 인터널 테이블에
동일 데이터를 삭제 해주시는게 맞겠죠.
수고하세요