본문 바로가기

SAP/ABAP

RANGE 변수

1. 선언법    

* 기본적인 선언법 

1) RANGES 변수명 FOR 테이블-필드.

 

2) DATA 변수명 TYPE RANGE OF 필드

 

3) 레인지변수 필드별로 각각 선언하기 

 

 

 

 

 

4) 스탠다드 레인지변수 타입 이용 ( RSDSSELOPT , RANGES_MATNR 등) 

단 이렇게 선언하면, 헤더와 바디의 이름이 같아 헷갈린다. 고로 나는 스탠다드 레인지변수 타입을 이용하여 헤더와 바디 따로 선언하는 것을 선호한다. 다음처럼. 

 

  DATA LS_R_JOBNAME TYPE RSDSSELOPT,
              LT_R_JOBNAME TYPE TABLE OF RSDSSELOPT. 

 

* .  RSDSSELOPT는 스탠다드 레인지변수 타입으로 아래와 같은 스트럭쳐. 

  5) 매크로 이용 

DEFINE __set_range.
    &1-sign   &2.             "&1 : 레인지변수명    "&2 ~ &5 : 레인지변수 옵션 
    &1-option &3.
    &1-low    &4.
    &1-high   &5.
    COLLECT &1.
    CLEAR &1.
END-OF-DEFINITION.

 

 __SET_RANGE LR_DOCNO  'I'  'EQ'  LV_DOCNO  ' '.

2. 사용법 

1) 스트럭쳐에 담아준 후 APPEND 

* 구 구문 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

* 신 구문 

  LS_R_RULID = VALUE #( SIGN = 'I' OPTION = 'BT' LOW = SO_RULID-LOW  HIGH = SO_RULID-HIGH ).
  APPEND LS_R_RULID TO LT_R_RULID. CLEAR SO_RULID.

  

 

  DATA LT_RANGE_DATE TYPE TABLE OF RANGE_DATE

    APPEND VALUE #SIGN   'I'

                                    OPTION 'EQ'

                                    LOW    SY-DATLO TO LT_RANGE_DATE.

 

 2) 바로 꽂기 

DATA : LT_R_DATE TYPE RANGE_DATE_T.

 

  LT_R_DATE = VALUE #(

    ( SIGN = 'I' OPTION = 'EQ' low = SY-DATLO high = '' )

  ).

 

 

다만 LOOP 안에 있는 경우에는 때마다 한줄씩 쌓여야..! 쌓이게 하는 키워드 BASE 이용하자! 

      LOOP AT LT_ORG_LIST INTO DATA(LS_ORG_LIST).

        LT_R_PNE_ORG VALUE #BASE LT_R_PNE_ORG

        SIGN 'I' OPTION 'EQ' LOW LS_ORG_LIST-INTERNAL_ID HIGH '' )

        ).

      ENDLOOP.