*&---------------------------------------------------------------------*
*& Report  Z_SCREENS_1                                                 *
*&                                                                     *
*&---------------------------------------------------------------------*
*&                                                                     *
*&                                                                     *
*&---------------------------------------------------------------------*

REPORT  z_screens_1                             .

TABLES: zemployees.

DATA: wa_employee LIKE zemployees-employee.

PARAMETERS: my_ee LIKE zemployees-employee
                          DEFAULT '12345678' OBLIGATORY,
            my_box1 AS CHECKBOX,
            wa_green  RADIOBUTTON GROUP grp1,
            wa_blue   RADIOBUTTON GROUP grp1,
            wa_red    RADIOBUTTON GROUP grp1.

SELECT-OPTIONS my_dob FOR zemployees-dob.

*INITIALIZATION.

  SELECT * FROM zemployees.
    wa_employee = zemployees-employee.
  ENDSELECT.

AT SELECTION-SCREEN ON my_ee.
* Check to make sure the employee number is not greater than the
* last employee number in our table.
  IF my_ee > wa_employee.
* DISPLAY A MESSAGE.
  ENDIF.


*

 

SELECT-OPTIONS를 사용하면 자동으로 내부 테이블이 생성되고, 이 테이블은 다음 4개의 필드로 구성된다!


🧾 SELECT-OPTIONS 테이블 구조 (기본 4개 필드)


필드명 설명예시
SIGN 포함 여부를 결정하는 필드 I (Include) / E (Exclude)
OPTION 조건 연산자를 지정하는 필드 EQ, NE, BT, CP, NP 등
LOW 조건의 기준 값, 또는 범위의 시작 값 '20230101', '10000001'
HIGH 범위의 끝 값 (OPTION = 'BT'일 때만 사용) '20231231'

🎯 각 필드의 의미 자세히 보기

✅ SIGN

  • 조건을 포함할지(Include) 또는 **제외할지(Exclude)**를 의미
  • 값:
    • I → 포함 (Include)
    • E → 제외 (Exclude)
SIGN 의미 설명
I Include 조건을 포함함
E Exclude 조건을 제외함

✅ OPTION

  • 조건 연산자(Logical Operator)를 의미
  • 값:
옵션 의미 설명
EQ Equal 같음 (=)
NE Not Equal 같지 않음 (≠)
GT Greater Than 초과 (>)
LT Less Than 미만 (<)
GE 크거나 같음
LE 작거나 같음
BT Between ~사이 (범위)
NB Not Between ~사이 제외
CP Contains Pattern 와일드카드 사용 (예: A*, 1%)
NP Not like pattern 패턴 제외

✅ LOW / HIGH

  • LOW: 조건의 기준 값 또는 범위의 시작값
  • HIGH: OPTION = 'BT'일 때 범위 끝값
예시 의미
LOW = '20230101', HIGH = '20231231', OPTION = 'BT' 2023년 전체 범위
LOW = 'MILLS', OPTION = 'EQ' 성이 MILLS인 사람
LOW = 'J*', OPTION = 'CP' J로 시작하는 모든 값

 

 

 

✅ PARAMETERS vs SELECT-OPTIONS 차이점


항목 파라미터 select-options
입력 가능 값 단일 값 단일 값, 값의 범위, 여러 값, 여러 범위
내부 구조 단일 변수 내부 테이블 (SIGN, OPTION, LOW, HIGH 필드로 구성됨)
복잡한 조건 불가능 가능 (예: 제외 조건, 여러 범위 입력)
UI 구성 한 줄 입력창 From~To 입력창 + 다중 선택 팝업 기능

🧠 SELECT-OPTIONS 내부 구조 (자동 생성되는 테이블 구조)

SELECT-OPTIONS: s_dob FOR zemployees-dob.

필드명 의미예시
SIGN 포함(I) / 제외(E) I or E
OPTION 조건 연산자 (EQ, NE, BT, CP 등) EQ, BT, CP
LOW 기준 값 or 범위 시작값 20240101
HIGH 범위의 끝값 (OPTION = BT인 경우) 20241231

이 테이블은 루프 돌면서 사용 가능하다!

LOOP AT s_dob INTO DATA(wa_dob). 
	WRITE: / wa_dob-sign, wa_dob-option, wa_dob-low, wa_dob-high. 
ENDLOOP.

 


🖱 UI 상에서 제공하는 기능

  • FROM ~ TO 입력란 기본 제공
  • 오른쪽의 “다중 선택 버튼” 클릭 → 다이얼로그 팝업에서 다음 입력 가능:
    • 여러 개의 단일 값
    • 여러 개의 범위
    • 포함(INCLUDE), 제외(EXCLUDE)
    • 와일드카드 (*, %)도 가능 (자동으로 CP 조건 사용됨)

🎯 언제 SELECT-OPTIONS를 써야 할까?

  • 사용자가 여러 값을 동시에 검색하고 싶을 때
  • 범위 검색이 필요한 필드일 때 (예: 날짜, 번호, 코드 등)
  • 복잡한 필터 조건 (제외, 와일드카드 등)이 필요할 때

🔍 예시 코드 요약

SELECT-OPTIONS: s_dob FOR zemployees-dob. 
START-OF-SELECTION. 
LOOP AT s_dob INTO DATA(wa_dob). 
	WRITE: / wa_dob-sign, wa_dob-option, wa_dob-low, wa_dob-high. 
ENDLOOP.

+ Recent posts