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.