SELECT SINGLE lifnr INTO itab-lifnr
FROM mara AS a JOIN ekpo AS b
ON a~matnr = b~matnr
JOIN ekko AS c
ON MAX( b~ebeln ) = c~ebeln <=== 1)EKPO-EBELN(최대값) = EKKO-EBELN
WHERE b~ebeln = ( SELECT MAX( ebeln ) FROM matnr WHERE matnr = itab-matnr ).
1) EKPO-EBELN(최대값) = EKKO-EBELN을 주려고 합니다.
MAX를 ON MAX( b~ebeln ) = c~ebeln와 같이 주면 안될것 같은데요
1)EKPO-EBELN(최대값) = EKKO-EBELN의 조건을 어떻게 처리하면 되나요..
댓글 3
-
e-abap
2008.01.03 02:30
-
avtiveman
2008.01.04 02:16
SELECT SINGLE lifnr
INTO itab-lifnr
FROM mara AS a INNER JOIN ekpo AS b
ON a~matnr = b~matnr
INNER JOIN ekko AS c
ON b~ebeln = c~ebeln
WHERE a~matnr = itab-matnr
AND b~ebeln = ( SELECT MAX( ebeln )
FROM EKPO
WHERE matnr = itab-matnr ).
이렇게 하면 될것 같습니다.
sarang.net에도 올리셨더군요.....ㅎㅎ
-
하루나
2008.01.07 17:42
위의 구문은 궁극적으로 해당 자재의 최종 PO의 VENDOR를 구할려고 하시는것 같은데 저렇게 사용해도 수행속도에 영향이 없으신가요?물론 단일하게 구문적으로만 보면 별문제 없어보이지만 저런 구문은 아마도 어떤 조건의 자재 테이블을 LOOPING하면서 쓰실것 같은데 수행 속도를 체크해보셔서 부하가 없는지 생각해 보셔야할듯합니다.
가장 좋은것은 해당 자재의 다른 조건들도 감안해서 인터널 테이블을 자재 테이블 형성하고 그것과 EKPO의 FOR All ENTRIES사용하여 인터널 테이블을 담아서 최대값을 발라내고 다시 그걸가지고 EKKO의 헤더를 FOR All ENTRIES 사용하는게 낫지 않을까 합니다.
불가능한 join 조건 입니다.
먼저 개별 데이터를 가져온 후에 인터널 테이블을 이용하여 처리해야 될거 같네요.
또는 b~ebeln = ( SELECT MAX( ebeln ) FROM ekko WHERE ~). 구문을
ekko 테이블도 사용해도 되겠네요.