[ABAP] RANGE 변수

홍예림·2023년 8월 3일
0

SAP ABAP(개편중...)

목록 보기
50/55
post-thumbnail

개념

  • 개별 프로그램 내에서 사용하는 변수
  • 헤더가 있는 인터널테이블 구조
    • sign, options, low, high가 존재함

선언

  • DATA 선언문에서 변수 선언(lr, local range) 후 워크에어리어(ls)로 만들어 사용하기
  • RANGES 구문을 통해 변수 선언 후 직접 사용하기

목적

SELELCTION-SCREEN 에서 파라메터 변수는 셀렉트옵션즈와 다르게, 공백값이 주어지는 경우 공백 자체를 값으로 본다. 따라서 공백 입력 시 분기 처리를 CASE문이나 IF문으로 해주어야 했는데, 레인지 변수에 파라메터를 할당해 사용함으로서 셀렉트옵션즈 형태(공백 분기 불필요)로 사용 가능해진다.

*&---------------------------------------------------------------------*
*& Report ZC526LR0003
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zc526lr0003 MESSAGE-ID zc5m26.

TABLES : mara.

PARAMETERS : pa_matnr TYPE mara-matnr.


START-OF-SELECTION.
  PERFORM get_data.

**********************************************************************


FORM get_data.

  DATA : gt_data  TYPE TABLE OF mara,
         lr_matnr TYPE RANGE OF mara-matnr,
         ls_matnr LIKE LINE OF lr_matnr. <" --- DATA 활용 선언>

*  RANGES : lr_matnr FOR mara-matnr. <" --- RANGES 활용 선언>



  REFRESH lr_matnr.

  IF pa_matnr IS NOT INITIAL.
    ls_matnr-sign   = 'I'. <" --- ITAB이다.>
    ls_matnr-option = 'EQ'.
    ls_matnr-low    = pa_matnr.  <" --- 파라메터 할당>

    APPEND ls_matnr TO lr_matnr. <" --- RANGES를 활용하는경우, 헤더가 있는 ITAB이므로 APPEND lr_matnr만 적는다.>
  ENDIF. <" --- DATA 선언을 활용했으므로, 워크에어리어를 변수에 재할당한다.>


  SELECT *
    INTO CORRESPONDING FIELDS OF TABLE gt_data
    FROM mara
   WHERE matnr IN lr_matnr. <" --- 레인지변수를 사용해 셀렉트옵션즈처럼 활용>

  MESSAGE i000 WITH sy-subrc.

ENDFORM.
profile
SYNC 5반 2023.07 - 2023.12

0개의 댓글