제가 하고픈건 날짜를 입력 받아 Z00 TABLE 에서 날짜를 조건으로 조회를 하고
거기서 나온 DATA 중 ID , WK , CD 를 기준으로 다시 U, V, C TABLE 을 조회하고싶습니다.
나름대로 해보려했는데 하단의 제방식으로 RANGE 에 담아서 하다보니
최초의 LT_DT DATA 가 총 300개가 있었다고 한다면
거기에 해당하는 LT_KEY 를 찾고싶은데
다음 LT_KEY는 만개가 넘네요 ㅎㅎㅎ 1:1 이어야 하는데 1: N 이 되어버립니다.
조언좀 부탁드려요.
******** 수정중인 SOURCE ****************
INPUTDT <- 입력받은 날짜 SELECT OPTION.
RANGES LR_ID FOR U-D.
RANGES LR_WK FOR U-WK.
RANGES LR_CD FOR U-CD.
SELECT ID
WK
DT
CD
INTO TABLE LT_DT
FROM Z00
WHERE DT IN INPUT_DT
CLEAR : LT_DT.
LOOP AT LTDT.
CLEAR : LR_ID, LR_WK, LR_CD.
LR_ID-SIGN = 'I'.
LR_ID-OPTION = 'EQ'.
LR_ID-LOW = LT_DT-ID.
APPEND LR_ID.
LR_WK-SIGN = 'I'.
LR_WK-OPTION = 'EQ'.
LR_WK-LOW = LT_DT-WK.
APPEND LR_WK.
LR_CD-SIGN = 'I'.
LR_CD-OPTION = 'EQ'.
LR_CD-LOW = LT_DT-CD.
APPEND LR_CD.
ENDLOOP.
SELECT U~ID
U~WK
U~CD
V~DT
Q~RB
Q~LT
INTO TABLE LT_KEY
FROM ( U INNER JOIN V
ON U~AU EQ V~AU AND
U~AP EQ V~AP ) INNER JOIN Q
ON V~AU EQ Q~AU AND
V~AP EQ Q~AP
WHERE U~ID IN LR_ID
AND U~WK IN LR_WK
AND U~CD IN LR_CD.
**********************************************
그냥 SQL 쿼리라면 조인을 해서 서브쿼리로 IN 으로 해당컬럼을
(A, B, C) IN (SELECT A,B,C, ~~~) 이런식으로 하면 되던데
SAP에서는 이런식의 쿼리는 안되네요.
굳이 서브 쿼리를 이용할 필요가 있나요..
Z00 TABLE 에서 날짜를 조건으로 조회를 한 후 Itab에 넣고
U, V, C TABLE 을 조회할 때 For all Entries In 을 이용하시면 될터 인데...