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_SUM을 Collect 사용 한 뒤? 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 |