ABAP-LOOP

유재용·2025년 3월 19일

ABAP

목록 보기
9/11

ABAP LOOP 문 가이드

기본 개념

ABAP 프로그래밍에서 LOOP 문은 내부 테이블의 데이터를 순차적으로 처리하는 데 사용되는 중요한 제어 구조입니다. 테이블의 각 행에 접근하여 처리할 수 있게 해줍니다.

기본 구문

LOOP AT itab INTO wa.
  " 처리 로직
ENDLOOP.

구성요소 설명

  • LOOP AT: 루프를 시작하는 키워드입니다.
  • itab: 순회할 내부 테이블의 이름입니다.
  • INTO: 테이블의 각 행을 저장할 워크 에어리어(변수)를 지정합니다.
  • wa: 워크 에어리어의 이름입니다.
  • ENDLOOP: 루프의 끝을 나타냅니다.

고급 옵션

WHERE 조건 사용

LOOP AT itab INTO wa WHERE field1 = 'VALUE'.
  " 조건에 맞는 행만 처리
ENDLOOP.

인덱스 사용

LOOP AT itab INTO wa FROM 3 TO 8.
  " 3번째부터 8번째 행까지만 처리
ENDLOOP.

현재 인덱스 확인

LOOP AT itab INTO wa.
  sy-tabix. " 현재 처리 중인 행의 인덱스
ENDLOOP.

ASSIGNING 사용

LOOP AT itab ASSIGNING <fs>.
  " 필드 심볼을 사용하여 직접 테이블 항목 수정 가능
ENDLOOP.

반복 중단하기

LOOP AT itab INTO wa.
  IF wa-field = 'EXIT'.
    EXIT. " 루프를 완전히 종료
  ENDIF.
  
  IF wa-field = 'CONTINUE'.
    CONTINUE. " 현재 반복을 건너뛰고 다음 행으로
  ENDIF.
ENDLOOP.

실용적인 예제

1. 내부 테이블 값 조회

DATA: itab TYPE TABLE OF scarr,
      wa_scarr TYPE scarr.

SELECT * FROM scarr INTO TABLE itab.

LOOP AT itab INTO wa_scarr.
  WRITE: / wa_scarr-carrid, wa_scarr-carrname.
ENDLOOP.

2. 조건에 따른 값 수정

LOOP AT itab INTO wa.
  IF wa-amount < 0.
    wa-status = 'ERROR'.
    MODIFY itab FROM wa.
  ENDIF.
ENDLOOP.

3. FIELD-SYMBOLS 활용

FIELD-SYMBOLS: <fs> TYPE any.

LOOP AT itab ASSIGNING <fs>.
  <fs>-field = 'NEW VALUE'. " 직접 테이블 값 수정
ENDLOOP.

성능 고려사항

  • 대용량 테이블을 처리할 때는 WHERE 조건을 사용하여 처리할 데이터를 제한하는 것이 좋습니다.
  • 데이터를 수정해야 할 경우 ASSIGNING을 사용하면 성능이 향상됩니다.
  • 불필요한 루프 내 연산은 피하고, 가능하면 루프 외부로 이동시키는 것이 좋습니다.

주의사항

  • 루프 내에서 테이블 구조를 변경하면 예기치 않은 결과가 발생할 수 있습니다.
  • 대용량 테이블을 처리할 경우 성능 이슈에 주의해야 합니다.
  • 루프 내부에서 DELETE 문을 사용할 때는 sy-tabix를 주의 깊게 관리해야 합니다.
profile
ABAP 개발자

0개의 댓글