SAP Range 변수란?
# Select-Option와 동일한 구조를 가지고 있는 변수라고 생각하면 된다.
Sign, Option, Low, High에 대한 내용을 알고싶으면 밑에 링크를 클릭
2023.09.03 - [.SAP/..ABAP] - SAP Select-Options 정리
SAP Select-Options 정리
# 셀렉트 옵션( SELECT-OPTION ) 란 - 테이블에서 여러 건을 가져오고 싶을 때, Select에서 옵션을 선택해서 범위 값이나 다중선택을 할 수 있다. - SELECT-OPTION는 FOR구문과 항상 병행해야 하며, 이때 FOR 구
potato98.tistory.com
언제 사용하는가?
인터널 테이블에 있는 값들을 조건으로 만들고 싶다거나?
동적으로 조건값을 계속 변경하고 싶다거나...
예를 들어서
전표유형 값을 가져와서 SELECT의 조건에 넣고 싶을 때 사용한다.
I EQ AA
I EQ AB
I EQ AC
...
이런 식으로 사용한다.
Range 변수를 사용하면서
# Append을 통해서 넣는 방법,
# Field-sysbol을 통해서 넣는 방법,
# SQL을 통해서 넣는 방법
방법은 다양하기 때문에 자신이 생각해서 가장 효율적인 방법을 쓰면 된다.
여기서 알아볼 것은 Append 방법과 SQL 방법이다
Range 예제를 보면서 더 쉽게 이해를 해보자.
SAP Range 활용
# Scarr Table에서 A~로 시작하는 Carrid을 가져와서 조건에 따라 Sflight Table을 Select 해주는 시나리오
1. Range 변수를 통해서 A~로 시작하는 조건을 만들어 보자.
# 여기서는 Range변수를 사용할 때에 Append를 사용한 점
CP라는 연산자를 통해서 ( 포함한다 ) 조건을 설정해 주자.
2. 이제 Scarr Table에서 A~로 시작하는 값을 가져와보자.
# 다음과 같이 A로 시작하는 Carrid을 가져올 수 있는 걸 확인할 수 있다.
# 위에서 설정했던 RANGE 변수를 SFLIGHT 조건문에 바로 넣어도 되지만,
I EQ AA,
I EQ AC,
I EQ AF,
.
.
이런 식으로 사용하기 위해서 다음과 같이 해줬다는 것을 참고 바란다.
또한 이런 식으로 하는 이유는
예를 들어서 A~로 시작하는 데이터를 가져오라 했을 때는 바로 써도 되지만,
AA 빼고 A~로 시작하는 데이터를 가져오라고 했을 때에는 다음과 같이 쓰는게 편하기 때문에 APPEND와 SQL로 나눈 것이다.( 여기서는 AA를 빼지는 않는다 )
3. 이제 Carrid 조건 값들을 Range변수로 옮겨보자.
# 여기서 두 가지 방법이 있다.
# 1. Loop문을 통해서 하나씩 Append 해주는 방법
# LT_TABLE에 있는 값을 LOOP문을 돌면서 LOW에 넣어주는 방식
# 2. SQL을 통해서 데이터를 옮겨주는 방법
# LT_TABLE을 통해서 SELECT 안에서 AS을 통해서 LOW에 넣어주는 방식( 이 방식을 자주 사용한다 )
# 둘 다 값이 똑같이 들어가진다는 걸 알 수 있다.
속도 비교
1. LOOP문을 사용했을 때
2. SQL을 사용했을 때
지금은 데이터가 많지 않지만 데이터가 많을 시에 차이가 많이 난다.
도움이 되셨으면 하단에 있는 광고 한번씩 눌러주세유!!
로직
RANGES:
LR_CARRID FOR SCARR-CARRID.
LR_CARRID-SIGN = 'I'.
LR_CARRID-OPTION = 'CP'.
LR_CARRID-LOW = 'A*'.
APPEND LR_CARRID.
SELECT *
FROM SCARR
INTO TABLE @DATA(LT_TABLE)
WHERE
CARRID IN @LR_CARRID.
RANGES:
LR_ID FOR SCARR-CARRID.
**SELECT 'I' AS SIGN,
** 'EQ' AS OPTION,
** CARRID AS LOW
** FROM @LT_TABLE AS A
** INTO TABLE @LR_ID.
LOOP AT LT_TABLE INTO DATA(LS_TABLE).
LR_ID-SIGN = 'I'.
LR_ID-OPTION = 'EQ'.
LR_ID-LOW = LS_TABLE-CARRID.
APPEND LR_ID.
ENDLOOP.
SELECT *
FROM SFLIGHT
INTO TABLE @DATA(LT_FLIGHT)
WHERE CARRID IN @LR_ID.
CL_DEMO_OUTPUT=>DISPLAY( LT_FLIGHT ).
'.ABAP > ..모든 것' 카테고리의 다른 글
SAP Workbench Request OR Customizing Request 정리 (0) | 2023.09.08 |
---|---|
SAP Select-Options 정리 (0) | 2023.09.03 |
SAP Dropdown List 만들기( SELECTION-SCREEN ) (0) | 2023.08.20 |
SAP 달의 첫 날에서 마지막 날 구하기( 1일부터 28,30,31일 ) (0) | 2023.08.18 |
SAP 파일 선택 or 파일 경로 알아보기 (2) | 2023.07.10 |