MM 관련 프로그램중 재고현황을 조회 프로그램을 만드는데..
MARA 와 MARD를 JOIN 하여 재고목록을 불러옵니다.
인터널 테이블에 데이타를 불러들이는데 너무 많은 시간이 걸립니다.
어떻게 하면 속도가 개선 될수 있을까요?
참고로..
MARA : 2,500,000건 정도
MARD : 64,000,000건 정도 ( 지점별 재고가 있는 자재는 100,000건~500,000건 정도입니다. )
MARD 인덱스는 MANDT , WERKS , LGORT 걸려있습니다.
FORM data_select .
DATA : lv_s_uzeit LIKE sy-uzeit,
lv_e_uzeit LIKE sy-uzeit.
CLEAR : gt_base, gt_list.
REFRESH : gt_base, gt_list.
lv_s_uzeit = sy-uzeit.
SELECT a~matnr b~matkl a~labst
INTO CORRESPONDING FIELDS OF TABLE gt_base
FROM mard AS a INNER JOIN mara AS b
ON a~matnr EQ b~matnr
WHERE a~werks EQ p_werks " 플랜트
AND a~lgort EQ '1000' " 저장위치
AND a~labst GT 0 " 재고가 있는것
AND a~lvorm NE ''
AND b~matkl IN s_matkl " 특정소분류
AND b~mtart IN s_mtart. " 특정자재유형
lv_e_uzeit = sy-uzeit.
MESSAGE s000 WITH '시작시간:' lv_s_uzeit ' 종료시간: ' lv_e_uzeit .
.
.
. 생략..
.
.
.
.
.
ENDFORM.
혹시 재고를 빨리 불러들이는 다른 방법 없을까요?
고수님들의 노하우를 전수좀 해주세요...
mara와 mard를 join하지 않고
일단 s_matkl , s_mtart로 mara data를 select후
for all entries in 구문으로 mard에서 labst gt 0인 데이터를 가져오는게 더 빠르지 않을까요??
올리신 데이터가 mara , mard에 없기 때문에 정확히 테스트는 못해봤지만
이렇게 함 테스트해보세요~~
ㅋㅋ