루프돌릴 내부테이블(itab) 비교할 기준레코드(record)
키1 키2 키3 코드 키1 키2 키3
a 1 b a d => 코드 1, 2, 4
b 2
e 3
b a d 4
위처럼 인터널테이블을 루프돌려서
내부테이블 레코드값과 기준레코드 값을 비교해서 해당하는 코드를 구해와야하는데..
내부테이블의 필드값이 null인 경우에는 모든 필드값 포함하게 해야되서..
첫번째 출에 키2가 a일때 코드1을 가져오게 되는데
기준레코드에 (b a d) b d는 상관없이 키2가 a기만하면
코드1 을 가져와야하는 식입니다.
키1에 b를 가지고 있으므로 코드2도 해당하고,
키1: b, 키2: a, 키3: d 도 해당함으로 코드3 도 가져와야합니다.
감기약먹어서 걸려서 머리도 띵하고 아무생각도 안나네요.
어떤식으로 로직을 짜야하는지...
도움 부탁드립니다.
댓글 5
-
엉큼고냥이
2008.10.08 01:12
-
hogun
2008.10.08 01:31
다시 생각해보니 or이면
위에 예시테이블에는 없지만
예를 들어 itab 에
키1 키2 키3 코드
a a a 4
경우는 기준레코드(b a d)랑
다르니깐 코드값을 가져오면 안되는데
or 일경우 키2값이 a 로 맞으니깐 코드4도
가져오지않습니까..null값일 경우만 모든 값허용인데..
제가 약기운에 머리가 완전 먹통이 되어버렸네요..
-
보나
2008.10.08 02:05
if ( itab-키1 = rec-키1 or itab-키1 = ' ') and
( itab-키2 = rec-키2 or itab-키2 = ' ') and
( itab-키3 = rec-키3 or itab-키3 = ' ').
로직~
endif. -
보나
2008.10.08 02:06
맞나 몰겠네요 -0-;;;
쾌차하세요 ^^
-
hogun
2008.10.08 02:25
제 질문에는 맞는 답 같습니다.
로직은 실상 더 많은 조건이 붙어서 적용해봐야 알겠는데..
오늘은 우선 일찍 들어갈려구요. 집에 가고 싶은 생각뿐이네요.
답변 정말 감사합니다.
loop at itab.
if 레코드키1 = itab-키1 or 레코드키2 = itab-키2 or 레코드키3 = itab-키3.
aa-코드값 = itab-코드. "aa는 결과값 코드를 담을테이블
endif.
endloop.
이렇게 하면 간단하지 않을까요?