수색…


비고

내부 테이블을 통해 반복 할 때, 일반적 바람직하다 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