최근에 개발을 하면서 Collect 를 많이 사용하고 있다. 이전에는 다른 모듈이라 잘 몰랐는데 재무쪽에서는 Collect 를 참으로 많이 쓰게 되는 것 같다. ( 각각의 합계를 구할 때 정확히 잘 구해지는 것이 아주 편리하다. ) 이전에 Collect 에 대한 포스팅을 한 적이 있다. ( Collect 의 사용 ) 그런데 그 때는 이정도로 많이 사용하지 않아서 아주아주 간단하게 포스팅을 했었는데, 자꾸 쓰다보니 그 정도의 정보로는 부족하겠다라는 생각에 추가적으로 포스팅을 하려고 한다.
Collect 문법은 숫자 또는 금액 필드 외의 나머지는 필드들은 키로 보고 동일한 데이터가 있으면 숫자 필드를 Sum 해주고 없다면 Append 를 해주는 구문이다. 그래서 결국 Internal Table 의 필드의 값들을 맞춰 준다면 각각 필드에 맞는 Sum 을 구할 수 있는 것이다. Collect 는 두가지 방식으로 사용할 수 있는데 Header Line 이 있는 Internal Table 에서 사용하는 구문과 별도의 Structure 를 Internal Table 에 Collect 시켜주는 방식이 있다. 두 방식의 차이는 없으나 형식의 차이이므로 각각 필요에 따라 사용하면 되겠다.
참고 : SAP 공식 홈페이지
REPORT YTEST016. DATA : LT_SFLIGHT1 TYPE TABLE OF SFLIGHT WITH HEADER LINE, LT_SFLIGHT2 TYPE TABLE OF SFLIGHT WITH HEADER LINE. CLEAR : LT_SFLIGHT1, LT_SFLIGHT1[], LT_SFLIGHT2, LT_SFLIGHT2[]. SELECT * INTO CORRESPONDING FIELDS OF TABLE LT_SFLIGHT1 FROM SFLIGHT. SORT LT_SFLIGHT1. LOOP AT LT_SFLIGHT1. " 출발 일자에 상관없이 금액 필드를 합친다. CLEAR LT_SFLIGHT1-FLDATE. COLLECT LT_SFLIGHT1 INTO LT_SFLIGHT2. ENDLOOP. BREAK-POINT.
위의 코드를 돌려보면 확실히 내용을 알 수 있다. ( 디버그 화면을 추가 )
[ ▲ 전체 데이터는 408 건이지만 Collect 가 되면서 데이터 건수는 26건으로 줄어 들었다. ]
[ ▲ 각각의 데이터는 날짜가 있는 원본 데이터 ]
[ ▲ 날짜를 클리어 하고 Collect 를 한 결과 - 금액, 숫자 필드의 합계를 구하였다. ]
'SAP > ABAP' 카테고리의 다른 글
ABAP 파일 업로드, 다운로드시 파일 선택 팝업 생성 (0) | 2014.11.18 |
---|---|
ABAP Report 프로그램 실행시 Tcode 체크 (0) | 2014.11.17 |
ABAP Parameters 에 소숫점 및 마이너스 금액 입력 (0) | 2014.10.21 |
ABAP RANGE 변수를 PERFORM 문의 파라메터로 사용하기 (0) | 2014.09.04 |
ABAP Field Symbol 의 사용 (0) | 2014.09.03 |
ABAP 금액 변환 방법 및 함수 (0) | 2014.08.22 |
ABAP 문자열 대문자, 소문자로 변환하는 방법 Translate (0) | 2014.08.07 |
CR 이 Lock 걸렸을 때 푸는 방법 ( SE09 사용 ) (0) | 2014.08.06 |
Short Dump AC_SYSTEM_FLUSH 에 대처하는 우리의 자세 (0) | 2014.08.01 |
SM30 Maintenance View 실행시 상단 타이틀 깨지는 현상 (0) | 2014.07.30 |