사용자가 데이터를 입력하는 박스에 미리 설정한 데이터만 선택 가능하도록 하는 기능인
listbox에 대해 알아보겠습니다
( 입력값 오류를 줄일 수 있고, 사용자의 입력값 선택의 편리함과,
개발자의 입력값 체크 경우의 수를 줄일 수 있는 장점이 있음)
1)스크린 100번 2) 스크린 1000번 3) ALV 이렇게 세군데에서 사용하는 방법에 대해 알아보겠습니다.
1. 스크린 100번
1) 100번 스크린 설정
스크린 입출력 필드를 생성하고, 설정에서 아래와 같이 드롭다운에서 listbox를 선택한다( name: iv_box)
*listbox는 text만 화면에 출력하는 기능이고, listbox with key는 key값과 함께 화면에 출력하는 기능임
2) 데이터 선언 및 출력할 데이터 설정
DATA: lt_box TYPE vrm_values,
iv_box TYPE string. "입출력 필드
lt_box-key = '1'.
lt_box- text = 'Value 1'.
APPEND lt_box.
lt_box-key = '2'.
lt_box- text = ' Value 2'.
APPEND lt_box.
3) 리스트박스 펑션 호출
해당 Listbox를 그린 스크릔 100번의 pbo에서 펑션을 호출한다.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = 'IV_BOX'
values = lt_box
EXCEPTIONS id_illegal_name = 1
OTHERS = 2.
4) PAI
1)번에서 선택에 따라 화면에 출력되는 값은 다르지만 PAI에서 확인해보면
내부적으로 iv_box에는 lt_box의 KEY값이 들어와 있다.
TEXT 값이 필요한 경우,
CLEAR: lt_box.
READ TABLE lt_box WITH KEY key = iv_box .
CHECK sy-subrc = 0.
lt_box-text 를 사용하면 됨
2. 스크린 1000번 (조회화면)
데이터 설정 및 사용 펑션은 스크린 100번과 동일한 방식이고, 선언하는 위치만 다름
PARAMETER: pa_box(10) TYPE c as LISTBOX VISIBLE LENGTH 20.
AT SELECTION-SCREEN OUTPUT.
**여기서 데이터 설정 및 펑션 사용
3. ALV GRID
아래 예시처럼 ALV GRID에서 LISTBOX 를 사용할 수 있다.
1) GRID 필드카탈로그 설정
ls_fcat-fieldname = 'BOX1'.
ls_fcat-drdn_hndl = '1'. "여러개의 필드를 리스트 박스로 사용할 경우 해당 값을 2,3,4,,,로 설정
ls_fcat-edit = 'X'.
ls_fcat-fieldname = 'BOX2'.
ls_fcat-drdn_hndl = '2'.
ls_fcat-edit = 'X'.
2) 리스트박스 value 값 설정
*필드 카탈로그에서 설정한 DRDN_HNDL별로 데이터를 설정한다.
DATA: ls_drop TYPE lvc_s_dral,
lt_drop TYPE lvc_t_dral.
ls_drop-handle = '1'.
ls_drop-value = 'Value 1'.
APPEND ls_drop TO lt_drop.
ls_drop-handle = '1'.
ls_drop-value = 'Value 2'.
APPEND ls_drop TO lt_drop.
ls_drop-handle = '2'.
ls_drop-value = 'Value 3'.
APPEND ls_drop TO lt_drop.
ls_drop-handle = '2'.
ls_drop-value = 'Value 4'.
APPEND ls_drop TO lt_drop.
3) 메소드 사용
CALL METHOD cl_grid->set_drop_down_table
EXPORTING
it_drop_down_alias = lt_drop.
** ALV 변경되었을때 EDIT 이벤트를 발생시키는 메소드도 사용해야함
CALL METHOD cl_gui_alv_grid-> register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=> mc_evt_modified.
CALL METHOD cl_gui_alv_grid-> register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=> mc_evt_enter.
4) PAI
listbox 사용하는 필드 'BOX1' 에는 VALUE 값이 들어옴.
후처리는 cl_gui_alv_grid 의 data_changed 에서 변경하면 된다.
'Etc' 카테고리의 다른 글
SWM0에서 파일 다운로드하기 (0) | 2023.03.22 |
---|---|
SMW0 의 사진 띄우기(cl_gui_picture) (0) | 2022.11.02 |
스마트폼 실행 후 PDF로 파일 변환 (0) | 2022.07.19 |
Number Range ( T-CODE : SNRO ) (0) | 2022.02.17 |
SUBMIT / CALL TRANSACTION (0) | 2021.11.18 |