RANGE 변수는 Select-Options 와 같은 구조를 가진 ITAB 이며,
두개 모두 SIGN / OPTION / LOW / HIGH 의 구조를 가지고 있다.
LR_CAID_D 는 DATA 로 선언, LR_CAID_R 이 RANGES 로 선언했다.
❗ 디버깅을 통해 위에 선언된 2개의 RANGE 변수의 구조를 확인할 수 있다.
DATA 로 선언하게 되면 해당 Range변수는 헤더가 없는 ITAB 형태 로 데이터를 넣어주기 위해 스트럭처를 만들어야한다.
RANGES 로 선언하게 되면 헤더가 있는 ITAB 형태 로 스트럭처를 만들어줄 필요가 없다.
예시로 체크박스를 체크했을때, 삭제 포함된 데이터들을 같이 출력해야하는 경우가 있다.
이러한 경우, PARAMETER 를 RANGE 변수에 넣어 쿼리문을 바꿔줄 수 있다.
조건을 EQ → IN 으로 변경 가능
이런 식으로 체크박스가 체크되었을 때, RANGE 변수에 값을 넣어 쿼리문에서 IN 구문으로 사용할 수 있다.
RANGE 변수의 경우, 자주 사용하는 경우가 있어서 MACRO 를 정의해놓은 뒤 사용해 놓으면 편하게 사용가능하다.
OPTIONS 에 들어갈 데이터들을 잘 생각해서 넣어야한다.
위에서는 DEL 필드가 공백 혹은 'X' 값만 사용할 수 있어서 EQ 를 썻지만 범위를 지정해줘야하는 경우는 BT 를 써야한다.
원하는 결과를 얻기 위해서 올바른 값을 넣어야 함 👍🏻
( 관계연산자들에 대해 공부할 필요가 있음 )
SPFLI 테이블을 예시로 FLTYPE 필드에는 공백 혹은 'X' 값만 들어갈 수 있다.
셀렉션스크린이 아래와 같이 구성되있다고 가정하면,
1. 체크박스를 체크하면 공백값 만 가져와야한다.
2. 체크하지않으면 구분없이 모두 가져와야한다.
쿼리를 2개를 짜야한다.
Range 변수를 활용하여 쿼리를 1개로 해결할 수 있다.