RANGES: R_PO_DTL FOR ZSCMT011-PO_DTL_SEQ.
R_PO_DTL-SIGN = 'I'.
R_PO_DTL-OPTION = 'EQ'.
R_PO_DTL-LOW = I_PO_DTL.
SELECT DISTINCT ITEM_CODE DESCRIPTION SPECIFICATION PO_NO
FROM ZSCMT011
INTO (T_LIST-KDMAT, T_LIST-KDKTX, T_LIST-SPECIFICATION,
T_LIST-PO_NO)
WHERE PO_NO = I_PO_NO
AND PO_DTL_SEQ IN R_PO_DTL.
APPEND T_LIST.
CLEAR T_LIST.
ENDSELECT.
ZSCMT011 테이블에서 PO_NO = 4500449337 로 주고 검색하면 3개의 ROW가 나옵니다.
PO_NO PO_DTL_SEQ
4500449337 000010
4500449337 000020
4500449337 000030
제가 만약 WHERE절에 들어갈 I_PO_NO = 4500449337 , R_PO_DTL-ROW = 000010 을 준다면
SELECT 결과가 1개의 ROW만 나와야 하는거 아닌가요??
그런데 SELECT 돌려보면 T_LIST 에 3개의 ROW가 담겨있습니다.
도대체 왜 이런 결과가 나오는지.. RANGE변수 OPTION 이 EQ이면 WHERE AND절에 PO_DTL_SEQ = 10. 이런조건이
들어가게 되는거아닌지??제가 생각을 잘못하고있는건지 답변좀 부탁드립니다.
소스를 전부 올려주신건지 모르겠지만..
R_PO_DTL-SIGN = 'I'.
R_PO_DTL-OPTION = 'EQ'.
R_PO_DTL-LOW = I_PO_DTL.
여기서 append 문장이 필요합니다..
append를 하지 않으면 r_po_dtl 은 initial이나 다름없어요..
그래서 AND PO_DTL_SEQ IN R_PO_DTL 이 문장은 없는거나 마찬가지죠..
디버깅해보시면 알 수 있습니다.