select option是方便用戶和數據處理的,就是丑了點。。。
前面使用的input直接做查詢條件有哥弊端,就是查詢的時候需要判斷字段是否有選擇條件,然后要將選擇條件做成range table。。。有點麻煩
1.select options 組件引入WDA程序
保存,激活。
2.將組件加入使用的視圖中
雙擊視圖,選擇屬性頁簽,在使用組件表格中點擊創建,將組件對應的兩個列表加進來
3.在視圖的INIT中,初始化SELECT OPTIONS
3.1在視圖的Attributes頁簽中,添加組件對象
GD_HANDLE typr ref to IF_WD_SELECT_OPTIONS.
3.2在init中初始化
DATA:LO_CP_USAGE TYPE REF TO IF_WD_COMPONENT_USAGE, LO_SELECT_OP TYPE REF TO IWCI_WDR_SELECT_OPTIONS, LT_RANGE TYPE REF TO DATA. "get the component usage LO_CP_USAGE = WD_THIS->WD_CPUSE_SELECT_OPTION( ). IF LO_CP_USAGE->HAS_ACTIVE_COMPONENT( ) IS INITIAL. LO_CP_USAGE->CREATE_COMPONENT( ). ENDIF. "get the select option usage LO_SELECT_OP = WD_THIS->WD_CPIFC_SELECT_OPTION( ). "init the select option WD_THIS->GD_HANDLE = LO_SELECT_OP->INIT_SELECTION_SCREEN( ). WD_THIS->GD_HANDLE->SET_GLOBAL_OPTIONS( I_DISPLAY_BTN_CANCEL = ABAP_FALSE I_DISPLAY_BTN_CHECK = ABAP_FALSE I_DISPLAY_BTN_RESET = ABAP_FALSE I_DISPLAY_BTN_EXECUTE = ABAP_FALSE ). "CREATE ONE RANGE TABLE * LT_RANGE = WD_THIS->GGD_HANDLE->CREATE_RANGE_TABLE( ). CALL METHOD WD_THIS->GD_HANDLE->CREATE_RANGE_TABLE EXPORTING I_TYPENAME = 'BU_PARTNER' RECEIVING RT_RANGE_TABLE = WD_THIS->RANGE. "LT_RANGE. CALL METHOD WD_THIS->GD_HANDLE->ADD_SELECTION_FIELD EXPORTING I_ID = 'PARTNER' * I_WITHIN_BLOCK = MC_ID_MAIN_BLOCK I_DESCRIPTION = 'Partner' * I_IS_AUTO_DESCRIPTION = ABAP_TRUE IT_RESULT = WD_THIS->RANGE "LT_RANGE * I_OBLIGATORY = ABAP_FALSE "必輸 * I_COMPLEX_RESTRICTIONS = * I_USE_COMPLEX_RESTRICTION = ABAP_FALSE * I_NO_COMPLEX_RESTRICTIONS = ABAP_FALSE * I_VALUE_HELP_TYPE = IF_WD_VALUE_HELP_HANDLER=>CO_PREFIX_NONE * I_VALUE_HELP_ID = * I_VALUE_HELP_MODE = * I_VALUE_HELP_STRUCTURE = * I_VALUE_HELP_STRUCTURE_FIELD = * I_HELP_REQUEST_HANDLER = * I_LOWER_CASE = * I_MEMORY_ID = * I_NO_EXTENSION = ABAP_FALSE * I_NO_INTERVALS = ABAP_FALSE * I_AS_CHECKBOX = ABAP_FALSE * I_AS_DROPDOWN = ABAP_FALSE * IT_VALUE_SET = * I_READ_ONLY = ABAP_FALSE * I_DONT_CARE_VALUE = * I_EXPLANATION = * I_TOOLTIP = * I_IS_NULLABLE = ABAP_TRUE * I_FORMAT_PROPERTIES = * I_SUGGEST_VALUES = * I_SUGGEST_FILTER_METHOD = .
效果:
4.在查詢得時候取值(其他代碼已刪除,僅取得RANGE table得代碼)
METHOD ONACTIONSEARCH . DATA:RT_RANGE TYPE REF TO DATA. FIELD-SYMBOLS:<FS> TYPE TABLE. RT_RANGE = WD_THIS->GD_HANDLE->GET_RANGE_TABLE_OF_SEL_FIELD( I_ID = 'PARTNER' )."此處ID對應上面INIT中的ID ASSIGN RT_RANGE->* TO <FS>. ENDMETHOD.
5.在窗口中將SELECT-OPTION組件嵌套視圖