SAP COLLECT 구문 정리
나는 테이블이 상태에도 COLLECT 문이 적용이 될 줄 알았다..
COLLECT 문을 사용하려면 무조건 인터널 테이블이 두개 있어야함.
(조인 할 테이블 1개, 조인 기준이 되는 테이블1개)
(데이터 다 때려넣는 테이블)
DATA:BEGIN OF LT_EKBE OCCURS 0,
EBELN LIKE EKBE-EBELN,
EBELP LIKE EKBE-EBELP,
MENGE LIKE EKBE-MENGE,
SHKZG LIKE EKBE-SHKZG,
GJAHR LIKE EKBE-GJAHR,
BELNR LIKE EKBE-BELNR,
BUZEI LIKE EKBE-BUZEI,
END OF LT_EKBE.
(데이터 다 때려넣는 테이블을 COLLECT할 테이블)
DATA:BEGIN OF CT_EKBE OCCURS 0,
EBELN LIKE EKBE-EBELN,
EBELP LIKE EKBE-EBELP,
MENGE LIKE EKBE-MENGE,
END OF CT_EKBE.
*... PO 입고 이력체크
SELECT * INTO CORRESPONDING FIELDS OF TABLE LT_EKBE
FROM EKBE
FOR ALL ENTRIES IN STAB
WHERE EBELN = STAB-EBELN
AND BEWTP = 'E'.
IF LT_EKBE[] IS NOT INITIAL.
CLEAR:LV_MESSAGE.
LOOP AT LT_EKBE.
MOVE-CORRESPONDING LT_EKBE TO CT_EKBE .
IF LT_EKBE-SHKZG = 'H'.
CT_EKBE-MENGE = CT_EKBE-MENGE * -1.
ENDIF.
COLLECT CT_EKBE. CLEAR CT_EKBE .
ENDLOOP.
LOOP AT CT_EKBE WHERE MENGE > 0.
CONCATENATE
CT_EKBE-EBELN 'This PO has already history of Warehousing.'
INTO LV_MESSAGE SEPARATED BY SPACE.
EXIT.
ENDLOOP.
위 노란색 색칠한 CT_EKBE 헤더를 기준으로 밑에 아이템들이 COLLECT됨.
COLLECT는 문자타입 필드를 기준으로 숫자타입의 필드를 SUM 하는 기능
I,P,F TYPE 만 COLLECT 가 된다