🧠 핵심 주제: 중첩 반복문 (Nested Do Loops)

💡 개념

  • 반복문 안에 또 다른 반복문을 넣는 것을 중첩 반복문
  • 예를 들어, "15번 반복하는 바깥 반복문" 안에 "10번 반복하는 내부 반복문"을 두면, 총 15 × 10 = 150번 내부 코드가 실행됨!

📘 코드 구성 요약

1. 변수 선언

DATA a TYPE i.   " 외부 루프 카운터
DATA b TYPE i.   " 내부 루프 카운터
DATA c TYPE i.   " 총 반복 횟수 누적용

2. 외부 루프: 15번 반복

DO 15 TIMES.
  a = a + 1.    " 외부 루프 카운트 증가

3. 내부 루프: 10번 반복

  CLEAR b.      " 내부 루프 시작 전 초기화
  DO 10 TIMES.
    b = b + 1.  " 내부 루프 카운트 증가
    WRITE: / 'Inner loop', b.
  ENDDO.

4. 내부 루프 완료 후 누적 처리

  c = c + b.    " 내부 루프 횟수를 누적
  WRITE: / 'Outer loop', a.
ENDDO.

5. 총 반복 횟수 출력

WRITE: / 'Total inner loops = ', c.

6. 출력 결과

Outer loop       1
Inner loop       1
Inner loop       2
Inner loop       3
Inner loop       4
Inner loop       5
Inner loop       6
Inner loop       7
Inner loop       8
Inner loop       9
Inner loop       10
Outer loop       2
Inner loop       1
Inner loop       2
...              ...
Inner loop       10
...              ...
Outer loop       15
Inner loop       1
...
Inner loop       10
Total inner loops = 150

🛠 시스템 변수 SY-INDEX란?

  • SY-INDEX는 각 루프에서 현재 반복 횟수를 자동으로 알려주는 SAP 내장 시스템 변수
  • 내부 루프와 외부 루프 각각에서 SY-INDEX는 별도로 관리됨

루프 위치 sy-index의 값
외부 루프 1, 2, ..., 15
내부 루프 1, 2, ..., 10 (반복마다 초기화됨)

⚠️ 주의할 점

  • 중첩 루프는 전체 실행 횟수가 매우 많아질 수 있으니 꼭 주의해야함
  • 예: DO 10_000 TIMES. 안에 DO 50_000 TIMES. → 무려 5억 번 반복!
  • 현실에서는 이런 구조로 대용량 데이터 처리 시 성능 이슈 발생 가능성이 있음!

📌 정리


항목 설명
DO n TIMES. n번 반복
SY-INDEX 루프 반복 횟수를 알려주는 시스템 변수
중첩 루프 루프 안에 또 루프. 반복 수 곱해짐
CLEAR 내부 루프 변수 초기화용
누적 변수 c 전체 반복 횟수 세기 위한 용도
성능 주의 너무 많은 반복은 피하거나 개선 필요

 

+ Recent posts