수색…
비고
내부 테이블을 통해 반복 할 때, 일반적 바람직하다 ASSIGN 필드 심볼이 아닌 루프에 INTO 작업 영역. 필드 기호를 지정하면 반복 할 때마다 내부 테이블의 다음 줄을 가리키는 참조가 업데이트되는 반면, INTO 를 사용하면 테이블의 행이 작업 영역에 복사되므로 long / wide 테이블에 비용이 많이 듭니다.
내부 테이블 루프
LOOP AT itab INTO wa.
ENDLOOP.
FIELD-SYMBOLS <fs> LIKE LINE OF itab.
LOOP AT itab ASSIGNING <fs>.
ENDLOOP.
LOOP AT itab ASSIGNING FIELD-SYMBOL(<fs>).
ENDLOOP.
LOOP AT itab REFERENCE INTO dref.
ENDLOOP.
LOOP AT itab TRANSPORTING NO FIELDS.
ENDLOOP.
조건부 루핑
특정 조건과 일치하는 행만 루프로 WHERE 를 추가 할 수 있습니다.
LOOP AT itab INTO wa WHERE f1 = 'Max'.
ENDLOOP.
While 루프
또한 ABAP은 주어진 표현식이 거짓으로 평가 될 때까지 실행되는 기존의 WHILE -Loop을 제공합니다. 시스템 필드 sy-index 는 모든 루프 단계마다 증가합니다.
WHILE condition.
* do something
ENDWHILE
Do Loop
어떤 추가없이 DO -Loop은 끝 또는 적어도 명시 적으로 내부에서 종료 때까지 실행됩니다. 시스템 필드 sy-index 는 모든 루프 단계마다 증가합니다.
DO.
* do something... get it?
* call EXIT somewhere
ENDDO.
TIMES 추가는 코드를 반복하는 매우 편리한 방법을 제공합니다 ( amount 은 유형 i 의 값을 나타냅니다).
DO amount TIMES.
* do several times
ENDDO.
일반 명령
루프를 중단하려면 EXIT 명령을 사용할 수 있습니다.
DO.
READ TABLE itab INDEX sy-index INTO DATA(wa).
IF sy-subrc <> 0.
EXIT. "Stop this loop if no element was found
ENDIF.
" some code
ENDDO.
다음 루프 단계로 건너 뛰려면 CONTINUE 명령을 사용할 수 있습니다.
DO.
IF sy-index MOD 1 = 0.
CONTINUE. " continue to next even index
ENDIF.
" some code
ENDDO.
CHECK 문은 조건이있는 CONTINUE 입니다. 조건이 거짓 이면 CONTINUE 가 실행됩니다. 다른 말로하면 : 루프는 조건이 참일 경우에만 단계를 계속 수행합니다 .
이 CHECK 사례 ...
DO.
" some code
CHECK sy-index < 10.
" some code
ENDDO.
...와 동등합니다 ...
DO.
" some code
IF sy-index >= 10.
CONTINUE.
ENDIF.
" some code
ENDDO.
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow