본문 바로가기
SAP/ABAP

ABAP 레인지변수(RANGE) & Base 활용 편

by 꿈청(꿈꾸는청년) 2021. 11. 17.
반응형

 

ABAP 레인지변수(Range) 다양하게 쓰다보니 관련 포스팅이 자꾸 늘어나는 것 같습니다 :)

 

오늘은 레인지변수 다양한 활용(?) 하는 선언문을 포스팅하고자 합니다.

 

우선 본론으로 들어가기 전에,

레인지변수(Range)란? 

 

 * ABAP에서 자주 쓰는 문법으로 쉽게 설명한다면 '테이블 구조'를 가질 수 있는 문법이라고 생각하시면 이해하기 쉬울 것입니다. 

   레인지변수에 대한 설명을 모르시면 아래의 링크를 참조해주세요. 

    https://only10.tistory.com/31

 

SAP ABAP RANGE 변수 문법

SAP ABAP RANGE 변수 문법 SAP ABAP RANGE 변수 구문 2020.04.10 업데이트 Range 변수는 범위를 지정해주는 변수라 생각하면 된다. (java하다가 이런 건 처음봄) 기본적으로 데이터 타입에 range변수를 지정해

only10.tistory.com

 

1. 레인지변수 선언 예시

 

2. 레인지변수 LOOP 및 BASE 활용

설명:

#1. 많은 레인지변수 선언 방식 중의 하나로서 3개의 테이블 구조를 가진 lr_range 선언 

각 데이터 값도 상수로 선언 '123', '456',789'

 

#2 SFLIGHT 테이블의 총 행수 대략 356행

#2-1, #2-2 를 걸쳐서 이미 lr_carrid 변수는 총 합이 712

이 상태에서 #2-3을 거치면 #2-1, #2-2 같은 역할을 하게 됩니다.

결과적으로 문법이 간략해지는 것이죠 

 

결과적으로 356 * 3 ==>> lr_range 변수에 담긴 것입니다.

 

 

 

 

  "1. DATA 선언 <==   
  DATA(lr_range) = VALUE RSDSSELOPT_T( sign = 'I' OPTION = 'EQ'
    ( LOW = '123' )
    ( LOW = '456' )
    ( LOW = '789' )
   ).

  "2. LOOP 레인지변수 

  DATA: lr_carrid TYPE RSDSSELOPT_T,
        ls_carrid TYPE RSDSSELOPT.

  SELECT * INTO TABLE @DATA(lt_sflight)
    FROM SFLIGHT.

  "#2-1 레인지변수 다양한 활용 예시
  LOOP AT lt_sflight INTO DATA(ls_sflight).
    ls_carrid-SIGN   = 'I'.
    ls_carrid-OPTION = 'EQ'.
    ls_carrid-LOW    = ls_sflight-CARRID. "SFLIGHT 테이블의 CARRID 항송사 코드를 레인지변수 ls_carrid 담는다.

    APPEND ls_carrid TO lr_carrid.
  ENDLOOP.

  "#2-2 레인지변수 다양한 활용 예시
  LOOP AT lt_sflight INTO ls_sflight.
    ls_carrid = VALUE #( SIGN = 'I' OPTION = 'EQ' LOW = ls_sflight-CARRID ).
    APPEND ls_carrid TO lr_carrid.
  ENDLOOP.

  "#2-3 레인지변수 다양한 활용 예시 
  LOOP AT lt_sflight INTO ls_sflight.
    lr_carrid = VALUE #( BASE  lr_carrid SIGN = 'I' OPTION = 'EQ'
      ( LOW = ls_sflight-CARRID )
    ).
  ENDLOOP.

 

 

끝.

반응형

댓글