SAP/ABAP

[SAP ABAP] ABAP 루프문(Loops) - DO, DO n TIMES, WHILE, SELECT ... ENDSELECT, LOOP AT ... ENDLOOP

로블리제 2024. 7. 22. 11:12

 

1. DO 루프

애는 계속 무한반복을 하게 된다. 그래서 IF 문을 사용해서 EXIT를 사용해 빠져나올 수 있게 해줘야 한다. 특정 조건에 만족하면 해당 루프를 빠져 나오게끔 처리해줘야한다.

대부분 그거를 IF로 조건이 맞으면 빠져나와 라는 구문을 써준다.

abap코드 복사
DO.
  Statements
  IF <abort_condition>. 
  EXIT. 
  ENDIF.
ENDDO.

  • 설명: DO ... ENDDO 구조는 무한 루프입니다. EXIT 문을 사용하여 특정 조건(<abort_condition>)이 만족되면 루프를 빠져나갑니다.
  • Loop Counter: sy-index 시스템 변수가 루프의 반복 횟수를 카운트합니다.

 

2. DO n TIMES 루프

n 자리에 반복하고자 하는 숫자 또는 변수를 입력한다. 그러면 n번만큼 반복하게 된다.

abap코드 복사
DO n TIMES.
  Statements
ENDDO.

  • 설명: 루프를 n번 반복합니다.
  • Loop Counter: sy-index 시스템 변수가 루프의 반복 횟수를 카운트합니다.

 

3. WHILE 루프

while - endwhile

조건이 참이면 반복을 하고 거짓이면 반복 중단을 한다.

abap코드 복사
WHILE <condition>.
  Statements
ENDWHILE.

  • 설명: 주어진 조건이 참(true)인 동안 루프를 반복합니다.
  • Loop Counter: sy-index 시스템 변수가 루프의 반복 횟수를 카운트합니다.

 

4. SELECT ... ENDSELECT 루프

abap코드 복사
SELECT ... FROM <dbtab> ...
  Statements
ENDSELECT.

  • 설명: 데이터베이스 테이블에서 데이터를 선택하여 각 행에 대해 루프를 실행합니다.
  • Database Table Rows: sy-dbcnt 시스템 변수가 선택된 행(row)의 수를 카운트합니다.

 

5. LOOP AT <internal table> ... ENDLOOP

abap코드 복사
LOOP AT <internal table> ...
  Statements
ENDLOOP.

  • 설명: 내부 테이블의 각 행에 대해 루프를 실행합니다.
  • Row Index for Internal Table: sy-tabix 시스템 변수가 내부 테이블에서 현재 행(row)의 인덱스를 나타냅니다.

 

정리 

  • DO 루프: 무한 루프. EXIT를 사용해 조건을 만족할 때 빠져나옵니다. 루프 횟수는 sy-index로 카운트.
  • DO n TIMES 루프: n번 반복하는 루프. 루프 횟수는 sy-index로 카운트.
  • WHILE 루프: 조건이 참인 동안 반복하는 루프. 루프 횟수는 sy-index로 카운트.
  • SELECT ... ENDSELECT 루프: 데이터베이스 테이블의 각 행에 대해 반복. 선택된 행의 수는 sy-dbcnt로 카운트.
  • LOOP AT <internal table> ... ENDLOOP: 내부 테이블의 각 행에 대해 반복. 현재 행의 인덱스는 sy-tabix로 나타냅니다.