쌓고 쌓다
Function Module에서 SELECT-OPTIONS 사용하기 본문
SELECT-OPTIONS를 Function Moudle에서 가져와 SELECT 조건으로 사용하고 싶다.

어떻게 화면에서 입력한 SELET-OPTIONS를 Function Module에서 사용할 수 있을까?

화면의 SELECT-OPTIONS에 사용된 타입은 CHAR 40짜리 타입이다.

SELECT-OPTIONS로 선언한 변수의 타입을 보면
SIGN, OPTION은 공통이고
사용하는 필드의 타입에 맞춰 C(40)으로 맞춰진것을 보인다.
만약 타입이 CHAR 45라면 C(45)로 구성된다.
우리는 SIGN, OPTION과 타입을 맞춘 LOW, HIGH를 구성하여
Function Module에 던져주면 SELET-OPTIONS를 사용할 수 있다.
1. SIGN, OPTION, LOW, HIGH 구성한 구조체 만들기

2. SELET-OPTIONS에 담긴값 구조체로 옮기기

SELET-OPTIONS와 동일한 필드로 구성된 변수를 선언한다.

SELET-OPTIONS 변수인 S_MATNR에 들어 있는 값을
우리가 만든 구조체로 구성된 Internal Table에 옮긴다.
3. Function Module에서는 SELET-OPTIONS와 동일한 필드로 구성된 TABLE 타입으로 받기

Function Module에서는 SELET-OPTIONS에 들어있는 값을
우리가 만든 SELET-OPTIONS와 동일한 타입을 받아 사용하면 된다.
꼭 Tables에 사용하지 않아도 된다.
Tables에 선언하면 Header Line까지 자동으로 구성 된다는 장점이 있다.
Export 파라미터에 SELET-OPTIONS를 Table 형식으로 만든 타입을 사용해도 된다.

SELET 쿼리에 SELET-OPTIONS와 동일하게 IN 구문을 사용할 수 있으며

LOOP.문에서도 사용 가능하다.
결론
SELET 쿼리에 다양한 조건을 담아 사용하는 IN 키워드는
SELET-OPTIONS만 사용 가능한 키워드가 아니였다.
SELET-OPTIONS와 동일한 구조로 Internal Table이 존재한다면
SELET-OPTIONS처럼 사용할 수 있다.
+ 보너스 퀴즈

SELECT 쿼리에 SELET-OPTIONS를 사용했다.

자재 11과 12 사이
이것이 SELET-OPTIONS에 들어왔다.

이때의 결과는
11과 12 자재가 나온다.

SELET-OPTIONS에 Not Equal로 자재 13을 넣으면 결과는 어떻게 나올까?
자재 11과 자재 12에 자재 13과 일치하지 않은 조건을 추가했으니
원래 결과대로 자재 11과 자재 12만 나올까?

아니다.
조건은 OR로 묶여서 나온다.
BT 자재11 ~ 자재12 (<= 조건과 일치하는 2개)
OR
NE 자재 13 (<= 조건과 일치하는 183개)
두개의 OR로 묶인 데이터가 DISTINCT처럼 중복은 제거하고 들어온다.
'SAP > ABAP' 카테고리의 다른 글
| CALL FUNCTION할때 EXCEPTIONS와 SY-SUBRC 관계 (2) | 2026.05.02 |
|---|---|
| Lock Object 사용할때 _COLLECT 파라미터 주의사항 (0) | 2026.04.29 |
| LOOP문 내에서 Internal Table MODIFY TABLE과 MODIFY 차이 (0) | 2026.04.15 |
| [ABAP] RTTS (RunTime Type Service) (0) | 2026.03.15 |
| CREATE_DYNAMIC_TABLE과 LVC_T_SCOL (0) | 2026.03.12 |