250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 회계원리개념
- 어피티
- 재경관리사개념
- 예금자보호한도
- TSMC
- 재무상태표
- 리비안
- 뉴스레터추천
- 회계원리
- SAP CO
- 오픈AI
- 엔비디아
- 오물풍선
- 뉴닉
- 머니네버슬립
- 재경관리사원가회계
- 뉴스레터
- 바이든
- 트럼프당선
- 파리올림픽
- 계약갱신청구권
- 트럼프
- 서울아파트
- 회계원리 개념
- 돈키레터
- 경제뉴스레터
- 쉬인
- 미스터동
- 뉴스레터정리
- 비트코인
Archives
- Today
- Total
ASAP
[ABAP] LOOP AT GROUP BY 사용법 + 예제 본문
728x90
loop at group by는 인터널 테이블의 특정 키필드를 기준으로 그룹화하여 loop를 실행하는 기능입니다. loop는 두 단계로 실행됩니다.
- Group: group by 조건에 의해 생성된 그룹에 대해 loop를 실행합니다.
- Group Loop: 각 그룹의 행에 접근하기 위해 그룹 내에서 loop를 실행합니다.
예를 들어, 다음과 같은 인터널 테이블이 있다고 가정해 보겠습니다.
TYPES: BEGIN OF ty_sflight,
carrid TYPE sflight-carrid,
connid TYPE sflight-connid,
fldate TYPE sflight-fldate,
END OF ty_sflight.
DATA: it_sflight TYPE STANDARD TABLE OF ty_sflight WITH EMPTY KEY.
SELECT carrid, connid, fldate FROM sflight INTO TABLE @it_sflight UP TO 100 ROWS.
이 인터널 테이블을 carrid 필드로 그룹화하고 각 그룹의 행 수와 첫 번째 행의 날짜를 출력하려면 다음과 같은 코드를 사용할 수 있습니다.
LOOP AT it_sflight INTO DATA(wa) GROUP BY wa-carrid ASCENDING ASSIGNING FIELD-SYMBOL(<group>).
WRITE / |Group { <group>-key } has { lines( <group>-table ) } rows|.
LOOP AT GROUP <group> ASSIGNING FIELD-SYMBOL(<row>).
WRITE / |First row date is { <row>-fldate }|.
EXIT. "only print first row
ENDLOOP.
ENDLOOP.
결과는 다음과 같습니다.
Group AA has 12 rows
First row date is 1997-01-03
Group AB has 11 rows
First row date is 1997-01-03
Group AZ has 11 rows
First row date is 1997-01-03
...
loop at group by는 reduce 연산자와 함께 사용하여 인터널 테이블의 집계나 변환을 쉽게 할 수 있습니다. 예를 들어, 위의 예제에서 각 그룹의 평균 날짜를 구하려면 다음과 같은 코드를 사용할 수 있습니다.
DATA(avg_dates) = VALUE string_table( ).
LOOP AT it_sflight INTO DATA(wa) GROUP BY wa-carrid ASCENDING ASSIGNING FIELD-SYMBOL(<group>).
DATA(avg_date) = REDUCE dat( INIT x = sy-datum FOR <row> IN GROUP <group> NEXT x = x + <row>-fldate / lines( <group>-table ) ).
avg_dates = VALUE #( BASE avg_dates ( |{ avg_date DATE = ENVIRONMENT }| ) ).
ENDLOOP.
WRITE / |Average dates per group: { avg_dates }|.
결과는 다음과 같습니다.
Average dates per group: [1997-01-04][1997-01-04][1997-01-04]...
728x90
'SAP(ABAP) > 문법' 카테고리의 다른 글
[ABAP] POPUP ALV 팝업스크린 코드 (ROW COLOR, 통화키 추가) (0) | 2025.01.14 |
---|---|
[ABAP] Virtual Sort 하는 법, sort 할 때 key 다르게 설정하는 법 (0) | 2023.06.07 |
[SAP/ABAP] ALV Subtotal 맨 위에 표기 (0) | 2023.01.11 |
[ABAP] CLEAR vs REFRESH vs FREE (2) | 2022.08.22 |