안녕하세요 오늘은 DO ~ ENDDO 구문을 알아보도록 하겠습니다.
이번에는 DO ~ ENDDO를 활용하여 구구단을 출력해보려고 합니다.
DO ~ ENDDO는 LOOP처럼 DO와 ENDDO사이를 지속적으로 반복하는 구문입니다.
때문에 아래 로직은 DO ~ ENDDO 사이에 써져 있는 구구단 로직을 9번 반복 실행한다고 생각해주시면 됩니다.
(소스코드)
소스코드를 한번 분석해보겠습니다.
일단 DO ~ ENDDO에선 SY-INDEX라는 값만 생각해주시면 됩니다.
간단히 말해 SY-INDEX는 DO ~ ENDDO 구문을 몇 번째 수행하고 있느냐를 확인 할 수 있는 겁니다.
[구구단 1단 출력을 위한 로직 해석]
구구단 1단 출력을 예시로 들어보겠습니다.
1. LV_NUMBER1이라는 곳에 SY-INDEX를 넣어줬습니다.
즉, 맨 처음 수행되었기 때문에 SY-INDEX에는 1이 들어가고 이를 LV_NUMBER에 전달해줬습니다.
그럼 LV_NUMBER에 1이 들어있겠죠??
2. 그 상황에서 또 하단에 DO ~ ENDDO를 9번 돌려주는 로직이 있습니다.
하단의 DO ~ ENDDO구문 또한 처음 실행해줬기 때문에 해당 DO ~ ENDDO의 SY-INDEX가 1이 됩니다.
그러니 LV_NUMBER2에도 1이 들어오게됩니다.
그리고 내부의 DO ~ ENDDO를 두번째 실행하게되면 SY-INDEX가 2가 되고 3번째 실행하게 되면 3이 됩니다.
이렇게 되어 ( 1 * 1 = 1 ), ( 1 * 2 = 2 ), ( 1* 3 = 3 )..... ( 1 * 9 = 9)까지 완성이 되는 겁니다.
3. 이렇게 반복 실행하다 9번이 넘어가게되면 빠져나와 다시 상단의 DO ~ ENDDO구문으로 갑니다.
왜냐면 상단의 DO ~ ENDDO도 9번 돌려주기로 했는데 이제 1번 돌았기 때문에( 1단만 수행하였기 때문에)
2번째( 2단 ) 를 수행하러 가는 겁니다.
상단의 DO ~ ENDDO는 한번 실행해줬기 때문에 SY-INDEX가 2가 되게 됩니다.
그 다음 LV_NUMBER1에 '2'를 넣어주고 2단을 시작하게됩니다.
이해가 어려우실 수도 있지만 한번 씩 수행해보실 것을 추천드립니다.
감사합니다.
SY 시스템 변수에 대해 더 알고싶으시면 일단 아래 링크에서 SY에 관한 글을 보고 오시는걸 추천드립니다.
https://arartexixi.tistory.com/23
(결과값)
'- SAP ABAP 구문' 카테고리의 다른 글
헤더라인과 인터널 테이블 (0) | 2022.12.12 |
---|---|
SY-TABIX와 SY-INDEX의 차이에 대해서 알아보기 (0) | 2022.11.10 |
SAP 시스템 변수 SY (SYST) (0) | 2022.11.09 |
CASE 문 (0) | 2022.11.08 |
ABAP RANGE 타입 (SIGN, OPTION, LOW, HIGH, SELECT-OPTIONS) (0) | 2022.11.08 |