Dynamic ComboBox Create¶
목적¶
ComboBox UI를 동적으로 생성하는 방법을 안내
주요 단계¶
1. UI 클래스 선언¶
ComboBox UI 생성을 위해 필요한 클래스 선언
DATA : LO_PAGE TYPE REF TO /U4A/CL_UO00389,
LO_COMBOBOX TYPE REF TO /U4A/CL_UO00256,
LO_ITEM TYPE REF TO /U4A/CL_UO00884.
2. ComboBox UI 오브젝트 생성¶
*-- ComboBox 오브젝트 생성
CREATE OBJECT LO_COMBOBOX
EXPORTING
ID = 'COMBOBOX1'. " UI Instance Name
CHECK LO_COMBOBOX IS BOUND.
3. UI 오브젝트가 포함될 영역 Instance 가져오기¶
본 예제에서는 Page 영역에 ComboBox UI를 추가
*-- Page 오브젝트 Instance 가져오기
LO_PAGE ?= ME->AR_VIEW->GET_UI_INSTANCE( I_ID = 'PAGE' ).
CHECK LO_PAGE IS BOUND.
4. Aggregation에 ComboBox 오브젝트 추가¶
CALL METHOD LO_PAGE->ADDCONTENT
EXPORTING
CONTENT = LO_COMBOBOX.
5. ComboBox SelectedKey Property Binding 설정¶
LO_COMBOBOX->BP00256_SELECTEDKEY = 'GS_DDLB-KEY'.
6. ComboBox Item UI 오브젝트 생성 및 데이터 구성¶
*-- Item UI 생성
CREATE OBJECT LO_ITEM
EXPORTING
ID = 'ITEM1'.
CHECK LO_ITEM IS BOUND.
" DDLB List 구성
CALL METHOD SET_DDLB.
7. Item 오브젝트를 Aggregation에 추가¶
CALL METHOD LO_COMBOBOX->ADDITEM
EXPORTING
ITEMS = LO_ITEM.
8. Item의 Key, Text Property 및 Model Binding 설정¶
" Item Key Binding
LO_ITEM->BP00884_KEY = 'GT_DDLB-KEY'.
" Item Text Binding
LO_ITEM->BP00884_TEXT = 'GT_DDLB-TEXT'.
" Model Binding
LO_ITEM->MODEL = 'GT_DDLB'.
9. UX Design Area에 UI가 추가되지 않았는지 확인¶

<사진 1> UI가 추가되지 않은 화면 구성
10. 실행 후 ComboBox UI 생성 확인¶

<사진 2> 실행 시 ComboBox UI가 생성된 화면
11. ComboBox Event Method 설정¶
CALL METHOD LO_COMBOBOX->ATTACHCHANGE
EXPORTING
SERVEREVENTNAME = 'EV_SEL_DDLB'.
12. ComboBox Change Event Method 생성¶

<사진 3> ComboBox Change Event Method 생성 팝업 화면
13. ComboBox Item 선택 시 호출 Method¶
METHOD EV_SEL_DDLB.
DATA: LS_DDLB TYPE TY_DDLB,
LV_MSG TYPE STRING.
READ TABLE GT_DDLB INTO LS_DDLB WITH KEY KEY = GS_DDLB-KEY.
CHECK SY-SUBRC EQ 0.
CONCATENATE `KEY: ` LS_DDLB-KEY
CL_ABAP_CHAR_UTILITIES=>NEWLINE
`TEXT: ` LS_DDLB-TEXT
INTO LV_MSG.
CALL METHOD /U4A/CL_UTILITIES=>M_MESSAGETOAST
EXPORTING
IO_VIEW = ME->AR_VIEW
I_MSGTX = LV_MSG.
ENDMETHOD.
14. Item 선택 시 ComboBox Change Event 정상 동작 확인¶

<사진 4> ComboBox 목록 변경 시 선택 시 메시지 호출 화면
추가 정보¶
- UI Object 생성 시 부여하는 ID는 중복될 수 없음