✅ 핵심 요약: CHECK 문

📌 기본 동작

  • CHECK 조건.
    → 조건이 거짓(FALSE) 이면, 해당 루프의 나머지 코드를 실행하지 않고 다음 루프로 건너뜀.
  • 조건이 참(TRUE) 이면, 아래의 코드를 계속 실행함.

🔄 CHECK vs CONTINUE vs IF

구문동작 예시 상황
IF 조건. CONTINUE. ENDIF. 조건이 맞을 때 다음 루프로 넘어감 조금 더 복잡한 조건이 필요할 때
CHECK 조건. 조건이 거짓이면 다음 루프로 넘어감 간단한 조건일 때 코드가 더 간결해짐
IF 조건. (일반 실행) ENDIF. 조건이 참일 때만 코드 실행 명확한 조건 분기 필요할 때

→ CHECK는 사실상 IF NOT 조건. CONTINUE. 와 같음.


🧪 예제 코드: 루프 내 CHECK

 
DO 10 TIMES.
  CHECK sy-index MOD 2 = 0.  "짝수만 출력
  WRITE: / sy-index.
ENDDO.

🔍 결과

Loop: 1
Loop: 3
...
Loop: 15

2번째 루프는 출력이 없음 → sy-index = 2일 때 CHECK sy-index <> 2. 조건은 거짓 → 다음 루프로 넘어감


⚠ CHECK의 위치에 따른 효과

1. ✅ 루프 안에 사용 → 해당 루프만 skip (마치 CONTINUE)

DO 10 TIMES.
  CHECK sy-index MOD 2 = 0.  "짝수만 출력
  WRITE: / sy-index.
ENDDO.

2. ⚠ 루프 밖에서 사용전체 프로그램 블록 종료

DATA a TYPE i VALUE 0.
CHECK a = 1. " 조건 안 맞음 → 전체 프로그램 종료
WRITE: / '이건 실행되지 않음'.

→ 루프 밖에서 CHECK 조건이 false이면 그 블록 자체를 종료하기 때문에 주의!


🧠 정리

  • CHECK는 간단한 조건 필터링에 매우 유용함
  • 루프 내에서는 CONTINUE 대용으로 자주 사용
  • 루프 외부에서는 블록 종료 역할을 하므로 주의 필요
  • 코드를 더 간결하게 만들 수 있어 ABAP 스타일로도 추천됨!

 

🔄 CONTINUE만 써도 되지 않을까?

사실 기능적으로는 CONTINUE 하나만 써도 가능하지않나?
다만, CHECK는 가독성과 간결함에서 큰 장점이 있다고 한다.

1. CHECK는 간단한 필터링 조건에 많이 사용됨.

LOOP AT it_employees INTO wa_emp.
  CHECK wa_emp-department = 'IT'.
  " 아래는 IT 부서에만 해당
  WRITE: / wa_emp-name.
ENDLOOP.

→ 위 코드는 "IT 부서 아닌 사람은 걍 건너뛰어!" 라는 뜻인데, CHECK로 한 줄이면 끝남.

 

2. 똑같은 로직을 IF + CONTINUE로 쓰면:

LOOP AT it_employees INTO wa_emp.
  IF wa_emp-department <> 'IT'.
    CONTINUE.
  ENDIF.
  WRITE: / wa_emp-name.
ENDLOOP.

→ 동작은 똑같지만, 코드가 3줄임.

+ Recent posts