SELECT A~VKORG
A~VKBUR
A~BSTNK
A~BSTDK
A~KUNNR
B~MEINS
B~WAERK
A~VBELN AS SVBELN " Sales Document
B~POSNR
B~MATNR
B~KWMENG
B~KZWI1
D~VBELN AS DVBELN " Delevery Document
C~VGPOS
C~LFIMG
C~KZWI6
C~MBDAT
INTO CORRESPONDING FIELDS OF TABLE IT_DATA
FROM VBAK AS A JOIN VBAP AS B
ON B~VBELN = A~VBELN
JOIN LIPS AS C
ON C~VGBEL = B~VBELN
AND C~VGPOS = B~POSNR
JOIN LIKP AS D
ON D~VBELN = C~VBELN
WHERE A~VKORG EQ P_VKORG
AND A~VKBUR IN S_VKBUR
AND A~BSTNK IN S_AUFNR
AND A~KUNNR IN S_KUNNR
AND B~MATNR IN S_MATNR
AND A~BSTDK IN S_BSTDK.
이정도 join은 다른 레포트에서는 순간적으로 select 하던데,,
여기서는 10초정도 걸리드라구요,,
그래서 디버깅을 해보니,
JOIN LIPS AS C
ON C~VGBEL# = B~VBELN
AND C~VGPOS# = B~POSNR
JOIN LIKP AS D
ON D~VBELN# = C~VBELN
이렇게 필드명 옆에 '#' 표시가 되어있구,, 디버깅 자체에서도 이 select문이 몇초 딜레이 되드라구요,,
왜그럴까요 헉
LIPS 테이블의 아래필드는 key필드가 아닙니다. index도 생성도 안되어 있고요.
이런경우 join을 걸지 않는것이 정석 입니다.
VGBEL 참조 문서의 문서 번호
VGPOS 참조품목의 품목번호
어떤분의 소스는 이렇게 되어 있네요. 참고하세요.
SORT gt_ekpo BY ebeln vgpos2.
SORT gt_likp BY vgbel vgpos.
LOOP AT gt_ekpo.
CLEAR : gt_likp2, it_menge, it_menge[], it_menge2, it_menge2[].
SELECT ps~vbeln ps~posnr ps~lfimg kp~lfdat kp~lifex
kp~lifnr AS likp_lifnr
ps~vgbel ps~vgpos
INTO CORRESPONDING FIELDS OF TABLE gt_likp
FROM likp AS kp
INNER JOIN lips AS ps
ON kp~vbeln = ps~vbeln
WHERE ps~vgbel = gt_ekpo-ebeln
AND ps~vgpos = gt_ekpo-vgpos2.