728x90
๋ฐ์ํ
๋ฐ์ํ
๋ฐ๋ณต๋ฌธ ์ข ๋ฅ
ABAP ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉํ ์ ์๋ ์ํ ๋ฐ๋ณต ๊ตฌ๋ฌธ์ 3๊ฐ์ง๊ฐ ์์ต๋๋ค.
- DO ~ ENDDO ์ํ ๊ตฌ๋ฌธ
- WHILE ~ ENDWHILE ์ํ ๊ตฌ๋ฌธ
- LOOP ~ ENDLOOP ์ํ ๊ตฌ๋ฌธ
๋ฐ๋ณต๋ฌธ ๋ด ๋ช ๋ น์ด ์ข ๋ฅ
EXIT | ์ํ ๊ตฌ๋ฌธ ๋ด์์ EXIT ๋ช ๋ น์ ๋ง๋๋ฉด ์ํ ๊ตฌ๋ฌธ์ ๋น ์ ธ๋์ต๋๋ค. |
CONTINUE | CONTINUE ๋ช ๋ น์ ๋ง๋๋ฉด ์ดํ ํฌ๋ฆฝํธ๋ฅผ ์คํํ์ง ์๊ณ ๋ค์ ์ํ์ ์คํํฉ๋๋ค. |
CHECK | CHECK ๋ช ๋ น์ ๊ฐ์ ๋น๊ตํ์ฌ ์ฐธ์ผ ๊ฒฝ์ฐ์๋ง ์ดํ ๊ตฌ๋ฌธ์ ์ํํ๊ณ ๊ฑฐ์ง์ด๋ฉด ๋ค์ ์ํ์ ์คํํฉ๋๋ค. |
DO ~ ENDDO ๋ฐ๋ณต๋ฌธ
- ์ํ ํ์๋ฅผ ์ง์ ํ ์ ์๋ ๊ตฌ๋ฌธ์ ๋๋ค. ํ์๋ฅผ ์ง์ ํ์ง ์์ผ๋ฉด ๋ฌดํ LOOP๋ฅผ ์ํํฉ๋๋ค.
- ํ์ฌ ์ํ ํ์๋ ์์คํ ๋ณ์ SY-INDEX์ ์ ์ฅ๋ฉ๋๋ค.
DO 3 TIMES.
~~~
ENDDO.
์์
DO 4 TIMES.
WRITE / SY-INDEX.
ENDDO.
WHILE ~ ENDWHILE ๋ฐ๋ณต๋ฌธ
- WHILE ๊ตฌ๋ฌธ์ ๋ค์์ ํํ์์ด ์ฐธ์ด๋ฉด ๋ฐ๋ณต์ํ์ ์ง์ํฉ๋๋ค.
- ํ์ฌ ์ํ ํ์๋ ์์คํ ๋ณ์ SY-INDEX์ ์ ์ฅ๋ฉ๋๋ค.
WHILE gv_flag = 'X'.
~~~
ENDWHILE.
์์
DATA: NUM TYPE I VALUE 5,
STR(10) TYPE C VALUE 'X'.
WHILE STR = 'X'.
WRITE: / SY-INDEX.
IF SY-INDEX > NUM.
WRITE: / 'SY-INDEX > num -> STOP'.
STR = 'A'.
ENDIF.
ENDWHILE.
LOOP ~ ENDLOOP ๋ฐ๋ณต๋ฌธ
- ์ธํฐ๋ ํ ์ด๋ธ์ ๋ผ์ธ์ ์ฐจ๋ก๋๋ก Work Area ๋๋ Header Line์ผ๋ก ์ด๋ํ๋ ๋ฐ๋ณต๋ฌธ์ ๋๋ค.
- ํ์ฌ ์ํ ํ์๋ ์์คํ ๋ณ์ SY-TABIX์ ์ ์ฅ๋ฉ๋๋ค. SY-TABIX๋ ์ธํฐ๋ ํ ์ด๋ธ์ ๋ผ์ธ ๋ฒํธ์ ๋๋ค.
LOOP AT qt itab TO qs wa.
~~~
ENDLOOP.
์์ ๋ฅผ ๋ง๋ค์ง ๋ชปํ์ต๋๋ค. ์ข์ ์์ ์๋ ๋ถ์ ๋๊ธ ๋ถํ๋๋ ค์
๋ฐ์ํ
๋ฐ์ํ
LIST๋ฅผ ์ด์ฉํ Subroutine ํธ์ถ
๋ค์ ๊ตฌ๋ฌธ๊ณผ ๊ฐ์ด LIST๋ฅผ ์ด์ฉํด Subroutine์ ์ฐจ๋ก๋๋ก ํธ์ถํ ์ ์์ต๋๋ค.
PERFORM idx OF <subroutine_1> <subroutine_2> ... <subroutine_n>
์์คํ ์ idx์ ์์์ ๋ฐ๋ผ Subroutine List๋ฅผ ํธ์ถํ๊ฒ ๋ฉ๋๋ค.
์ค์ง Internal Subroutine์์๋ง ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ํ๋ผ๋ฏธํฐ๋ฅผ ์ฌ์ฉํ ์ ์๋ ๋จ์ ์ด ์์ต๋๋ค.
DO 2 TIMES.
PERFORM SY-INDEX OF SUBROUTINE_1 SUBROUTINE_2.
ENDDO.
FORM SUBROUTINE_1.
WRITE / '1 subroutine is called.'.
ENDFORM.
FORM SUBROUTINE_2.
WRITE / '2 subroutine is called.'.
ENDFORM.
728x90
๋ฐ์ํ