FORM DATA_SELECT .
SELECT
A~MATNR
A~LABST
A~WERKS
* B~LGORT
C~MTART
C~MATKL
C~MEINS
B~MAKTX
C~GROES
* G~WERKS
* d~verpr
INTO CORRESPONDING FIELDS OF TABLE GT_LIST
FROM MARD AS A
INNER JOIN MAKT AS B
ON A~MATNR = B~MATNR AND SPRAS = SY-LANGU
INNER JOIN MARA AS C
ON A~MATNR = C~MATNR
* INNER JOIN mbew AS d
** ON a~matnr = d~matnr
* AND a~werks = d~bwkey "중복된 필드 하나로 조건
WHERE A~WERKS IN R_WERKS
AND A~LGORT IN R_LGORT
AND C~MTART IN R_MTART
AND C~MATKL IN R_MATKL
AND B~MAKTX IN R_MAKTX
AND C~GROES IN R_GROES
AND A~MATNR IN R_MATNR.
LOOP AT GT_LIST. "LABST VERPR
SELECT SINGLE VERPR INTO GT_LIST-VERPR
FROM MBEW WHERE MATNR = GT_LIST-MATNR
AND BWKEY = GT_LIST-WERKS.
MOVE 'KRW' TO GT_LIST-WAERS.
P_COST = GT_LIST-LABST * GT_LIST-VERPR.
GT_LIST-COST = P_COST.
MODIFY GT_LIST.
ENDLOOP.
CLEAR OK_CODE.
ENDFORM. " DATA_SELECT
위에서 보듯이 mara, makt, mard 세개의 테이블을 join했는데요
이걸 mara, makt를 하나로 join하고
mard를 분리해서 join하려고 합니다...
어떻게 해야 할까요!? 고수님들 의 답변 부탁드립니다...
댓글 4
-
아카드05
2009.01.23 18:26
분리해서 join한다는게 무슨 뜻인가요? -
페리
2009.01.23 18:30
mara, makt 로 조인 거시고 itab에 담았다면
mard 쿼리시 itab을 포올엔트리로 itab2에 담으셔요
그 다음에 itab의 matnr으로 itab2를 read해서 itab에 넣어주시면 될듯한데요.
-
MOTO
2009.01.24 01:43
감사함다....
-
띵호아빠
2009.01.24 01:46
1. 우선 MARD 에서 해당하는 데이타를 ITAB 에 읽어서 저장하시고,
2. LOOP AT ITAB
.
. 여기에서 MARA 와 MATK 를 JOIN 해서 나머지 필드들 일거어서 처리하는 것이 빠를듯합니다.
.
ENDLOOP.