300x250
728x90

# COLLECT란 


숫자

or

금액 필드

 

값의 합을 구할 때 사용하는 함수이다.

 

예를 들어 중복된 값에 다른 필드들의 값합치고 싶을 때 사용하면 된다. 

 

바로 예제로 가보자.

 

# SAP COLLECT 예제


우선 헤더 테이블 하나

Collect 할 필드의 기준을 잡을 테이블이 필요하다.

 

어떤 기준으로

Collet 할 거냐가 중요하다. 

 

이게 무슨 말이냐면 

 

LT_LIST(헤더 테이블)

 

LT_SUM (필드 기준을 잡은 테이블)

우선 이런 식 테이블 있다 하자.

 

LT_SUM 테이블은 

NAME을 (기준)으로 NUMBER을 합산할 계획이다.

 

데이터를 넣어보자.

 

# SAP COLLECT 사용


 

1.  LT_LIST을  LOOP문을 돌려주면서  LS_SUM에 옮겨준다. 

 

2. LS_SUMCollect 사용 한 뒤? LT_SUM에 담는다.

끝.

 

여기서 중요한 건 위에서 말했듯이 

" LT_SUM 테이블은 NAME을 (기준)으로  NUMBER합산할 계획이다. " 라는 말에서 

 

(무엇)을 (기준)으로 Collect을 할 건지가 중요한 것이다. 

정했다면 TALBE을 만들면 된다.

 

 

만약 내가 NAME이 아닌 STATUS으로

기준을 잡는다면 결괏값도 당연히 달라진다. 

 

기준 NAME 

 

기준 STATUS

 

 

 

 

도움이 되셨으면 클릭 한번 부탁드립니다!!

 

 

 

 

로직.

" 헤더 테이블 "
TYPES: BEGIN OF TY_LIST.
TYPES: KEY(8),
       NAME(30),
       NUMBER     TYPE I,
       STATUS(10),
       END OF TY_LIST.

DATA:
  LT_LIST TYPE TABLE OF TY_LIST.


" 필드 기준을 잡은 테이블 "
TYPES: BEGIN OF TY_SUM.
TYPES: NAME(30),          " 기준 "
       NUMBER   TYPE I,
       END OF TY_SUM.

DATA:
  LS_SUM TYPE TY_SUM,
  LT_SUM TYPE TABLE OF TY_SUM.




APPEND VALUE #(
KEY = '1'
NAME = '사과'
NUMBER = '10'
STATUS = '신선함'
) TO LT_LIST.


APPEND VALUE #(
KEY = '2'
NAME = '바나나'
NUMBER = '20'
STATUS = '썩음'
) TO LT_LIST.


APPEND VALUE #(
KEY = '3'
NAME = '감자'
NUMBER = '30'
STATUS = '신선함'
) TO LT_LIST.


APPEND VALUE #(
KEY = '4'
NAME = '바나나'
NUMBER = '20'
STATUS = '신선함'
) TO LT_LIST.


APPEND VALUE #(
KEY = '5'
NAME = '감자'
NUMBER = '30'
STATUS = '썩음'
) TO LT_LIST.


LOOP AT LT_LIST INTO DATA(LS_LIST).

  MOVE-CORRESPONDING LS_LIST TO LS_SUM.
  COLLECT LS_SUM INTO LT_SUM.

ENDLOOP.



CL_DEMO_OUTPUT=>DISPLAY( LT_SUM ).

 

 

 

728x90

'.ABAP > ..모든 것' 카테고리의 다른 글

SAP 콤마(,) 제거  (0) 2023.01.12
SAP 콤마(,) 찍기, . 없애기  (0) 2023.01.12
SAP Search Help 중복값 제거  (0) 2022.11.22
SAP Memory 조회  (0) 2022.11.11
SAP SET/GET Parameter ID  (0) 2022.11.11