본문 바로가기

SAP/ABAP

COLLECT 구문

최종 작성일: 2024-05-29

목표: Collect 구문 이해하기

 

 

*&---------------------------------------------------------------------*
*& Report ZTEST_COLLECT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZTEST_COLLECT.

* internal table Structure creation
"같은 것 끼리 집계하는 것이 collect 문임

TYPES: BEGIN OF t_product,
       pid(10)     TYPE C,
       pname(40)   TYPE C,
       pamount(10) TYPE P, "pack number (실수)
       END OF t_product.

* Data & internal table declaration
DATA: wa TYPE t_product,
      it TYPE TABLE OF t_product.

* inserting data to the internal table of INDEX 1
wa-pid     = 'IFB1'.
wa-pname   = 'IFB WASHING MACHINE'.
wa-pamount = 31000.
COLLECT wa INTO it.

* inserting data to the internal table of INDEX 1
wa-pid     = 'IFB1'.
wa-pname   = 'IFB WASHING MACHINE'.
wa-pamount = 30000.
COLLECT wa INTO it.

* inserting data to the internal table of INDEX 2
wa-pid     = 'IFB2'.
wa-pname   = 'IFB SPLIT AC'.
wa-pamount = 38000.
COLLECT wa INTO it.

* inserting data to the internal table of INDEX 2
wa-pid     = 'IFB2'.
wa-pname   = 'IFB SPLIT AC'.
wa-pamount = 32000.
COLLECT wa INTO it.

* Reading internal table for all the records
LOOP AT it INTO wa.
  IF sy-subrc = 0.
    WRITE :/ wa-pid, wa-pname, wa-pamount.
  ELSE.
    WRITE 'No Record Found'.
  ENDIF.
ENDLOOP.

wa라는 행을 it라는 인터널 테이블에 쌓는 것/ 그래서 리포트 앞단 부분에 데이터 선언부에서도 같은 데이터 인데 wa는 type으로 행 구문을 가져왔고 it는 'type table of'로 테이블 형태로 가져옴
collect 문은 집계 값으로 같은 필드의 값을 기준으로 숫자로 된 값의 합을 더함./ 위에서 보면 wa이라는 행은 단일 값인데 반해, it라는 테이블에서는 단일 값의 합계값이 들어가 있음.
collect문을 쓰다보니, 같은 행의 값을 가지고 있는 2번째 구문이 시작될 때 tabix가 2로 올라

'SAP > ABAP' 카테고리의 다른 글

ALV로 집계테이블 만들기 (LOOP AT, COLLECT)  (0) 2024.05.31
Loop 구문과 Collect 구문의 구조  (0) 2024.05.29
Loop 구문  (1) 2024.05.29
중첩 Join시 유의 사항  (0) 2024.05.29
중첩 INNER  (0) 2024.05.20