728x90

# LOOP AT [ 인터널 테이블 ] FROM [ 시작 인덱스 ] TO [ 끝 인덱스 ]... 이란?


# 인터널 테이블에서 일부 범위 루프 돌릴 때 쓰는 방법이다.

# 또한, 몇 건 반복을 정해서 돌릴 수도 있다.

- 예를 들어), 25건을 기준으로 잡는다면, [ FROM .. TO ... ]을 통해 25건을 돌린 뒤? 다음 26건부터 돌릴 수 있게 설정할 수 있다. 

 

 

여기서 정리할 것은, 반복 기준을 잡아서 25건씩 돌리는 방법을 알아보자. 

 

 

# 우선 반복을 쓰기 위해서는 WHILE문을 사용해야 한다. 

 

 

# 시작하기 전 


# 우리는 25라인마다 반복해서 1부터 25까지 SUM 한 값저장하는 로직을 짜야한다. 

 

# 다음 인터널 테이블이 있다고 가정해 보자. ( 01 ~ 100 ) 

DATA: BEGIN OF GS_LIST,
  ID   TYPE I,
  SUM  TYPE I,
END OF GS_LIST.

DATA:
  GT_LIST LIKE TABLE OF GS_LIST.

DO 100 TIMES.
  GS_LIST-ID = SY-INDEX.
  GS_LIST-SUM = GS_LIST-SUM + 2.
  APPEND GS_LIST TO GT_LIST.
ENDDO.

 

# SUM 한 값을 저장하는 인터널 테이블 

DATA: BEGIN OF GS_SUM,
  ID      TYPE I,
  RESULT  TYPE I,
END OF GS_SUM,

GT_SUM LIKE TABLE OF GS_SUM.

 

 

 

# WHILE문을 통해서 반복 기준을 잡아보자. 


# 01. 우선 다음과 같이 기초 틀을 잡아보자. 

 

# 02. 이제 다음 로직을 넣어서 [ 반복 기준 ]을 잡아보자. 

# 여기서는 [ 반복 기준 = 25 ] 잡았기 때문에 [ -1 ] 해줘야 한다. 

DATA:
   LV_LINES TYPE I,
   LV_FROM  TYPE I VALUE 1,
   LV_TO    TYPE I.

DESCRIBE TABLE GT_LIST LINES LV_LINES.


WHILE LV_FROM <= LV_LINES.


  LV_TO = LV_FROM + 24.  " [반복 기준] "
  IF LV_TO > LV_LINES.
    LV_TO = LV_LINES.
  ENDIF.



  LV_FROM = LV_TO + 1.
ENDWHILE.

 

 

# [ LOOP AT ... FROM ... TO ... ]을 통해서 값을 가져와보자.


#  01. 다음과 같이 LOOP AT 옵션에 있는 [ FROM ... TO .. ]을 이용해서 25건씩 데이터를 가져올 수가 있다. 

 

# 02. 다음과 같이 [ 반복하면서 할 로직 설정 ] or [ 반복이 끝나면 진행할 로직 설정 ]으로 나뉘게 된다.

# 그렇기 때문에 해당 로직에 따라서 설정하면 된다. 

DATA:
   LV_LINES TYPE I,
   LV_FROM  TYPE I VALUE 1,
   LV_TO    TYPE I,

   LV_SUM TYPE i.

DESCRIBE TABLE GT_LIST LINES LV_LINES.


WHILE LV_FROM <= LV_LINES.


  LV_TO = LV_FROM + 24.  " [반복 기준] "
  IF LV_TO > LV_LINES.
    LV_TO = LV_LINES.
  ENDIF.

  LOOP AT GT_LIST FROM lv_from TO lv_to
    INTO GS_LIST.

    " 반복하면서 첨가할 로직 설정 "
    LV_SUM = LV_SUM + GS_LIST-SUM.
    GS_SUM-RESULT = LV_SUM.

  ENDLOOP.

    " 25 반복이 끝나는 로직 설정 "
    GS_SUM-ID = lv_to.
    APPEND GS_SUM TO GT_SUM.

    CLEAR:
      LV_SUM.


  LV_FROM = LV_TO + 1.
ENDWHILE.

 

# 여기서는 간단하게 했지만, 이런 식으로 기준을 잡아서 로직응용하면 될 것 같다. 

 

 

# 결과 값

 

 

끝..! 


# 이런 식으로 두 개의 로직을 나눠서 원하는 값을 가져오게 할 수 있게 된다. 

실제로 전표를 쳤을 때 아이템 개수너무 많아서 해당 로직으로 해결했던 경험이 있다. 

 

 

도움이 되셨으면 하단에 있는 광고 한번씩 눌러주세유!!

728x90