Solution:如何在输入后不用敲回车,也能执行搜索
标签:
abapliumengsap干货铺杂谈 |
分类: 其他 |

这里用到了CL_GUI_INPUT_FIELD。
【其实系统里还有一些其他OO的对象,比如:
CL_GUI_DIALOGBOX_CONTAINER
CL_GUI_TOOLBAR
CL_GUI_PICTURE
CL_GUI_CHART_ENGINE
CL_GUI_COMBOBOX】
上面的很多OO对象,系统也有DEMO。
比如CL_GUI_INPUT_FIELD,系统就有提供相应的DEMO:SAP_LISTBOX_DEMO_AUTO_SUBMIT
系统的DEMO比较复杂,我这里做了更个简单的DEMO。
效果如下:
代码如下:
REPORT ztest.
SELECTION-SCREEN BEGIN OF SCREEN 2000.SELECTION-SCREEN END OF SCREEN 2000.DATA: go_docking_container TYPE REF TO cl_gui_docking_container,go_splitter TYPE REF TO cl_gui_splitter_container,go_input_con TYPE REF TO cl_gui_container,go_alv_con TYPE REF TO cl_gui_container,go_input TYPE REF TO cl_gui_input_field,go_alv TYPE REF TO cl_gui_alv_grid.DATA: gt_data TYPE TABLE OF makt,gt_alv TYPE TABLE OF makt.CLASS lcl_handle_input_field DEFINITION.PUBLIC SECTION.METHODS handle_submit FOR EVENT submit OF cl_gui_input_field IMPORTING input.ENDCLASS.CLASS lcl_handle_input_field IMPLEMENTATION.METHOD handle_submit.PERFORM handle_submit USING input.ENDMETHOD.ENDCLASS.DATA: go_handle_input_field TYPE REF TO lcl_handle_input_field.AT SELECTION-SCREEN OUTPUT.CHECK sy-dynnr = '2000'.PERFORM get_data.PERFORM init_object.START-OF-SELECTION.CALL SELECTION-SCREEN 2000.FORM get_data.APPEND VALUE #( matnr = 'MAT001' maktx = '钢板' ) TO gt_data.APPEND VALUE #( matnr = 'MAT002' maktx = '钢锭' ) TO gt_data.APPEND VALUE #( matnr = 'MAT003' maktx = '铁锭' ) TO gt_data.gt_alv = gt_data.ENDFORM.FORM init_object.DATA: lt_fcat TYPE lvc_t_fcat.CHECK go_docking_container IS INITIAL."创建DOCKING容器CREATE OBJECT go_docking_containerEXPORTINGextension = 9999side = cl_gui_docking_container=>dock_at_top."容器拆分为上下两部分。上:INPUT输入框;下:ALVCREATE OBJECT go_splitterEXPORTINGparent = go_docking_containerrows = 2columns = 1.go_splitter->set_row_sash( id = 1type = cl_gui_splitter_container=>type_movablevalue = cl_gui_splitter_container=>false ).go_splitter->set_row_sash( id = 1type = cl_gui_splitter_container=>type_sashvisiblevalue = cl_gui_splitter_container=>false ).go_splitter->set_row_mode( mode = cl_gui_splitter_container=>mode_absolute ).go_splitter->set_row_height( id = 1height = 30 )."创建INPUT FIELDgo_input_con = go_splitter->get_container( row = 1 column = 1 ).CREATE OBJECT go_inputEXPORTINGparent = go_input_conactivate_history = 'X'activate_find_button = 'X'button_icon_info = icon_searchbutton_tooltip_info = 'Search'activate_.CREATE OBJECT go_handle_input_field.SET HANDLER go_handle_input_field->handle_submit FOR go_input."创建ALVgo_alv_con = go_splitter->get_container( row = 2 column = 1 ).CREATE OBJECT go_alvEXPORTINGi_parent = go_alv_con.APPEND VALUE #( fieldname = 'MATNR' coltext = '物料号' ) TO lt_fcat.APPEND VALUE #( fieldname = 'MAKTX' coltext = '物料描述' ) TO lt_fcat.go_alv->set_table_for_first_display(CHANGINGit_outtab = gt_alvit_fieldcatalog = lt_fcatEXCEPTIONSinvalid_parameter_combination = 1program_error = 2too_many_lines = 3OTHERS = 4 ).ENDFORM.FORM handle_submit USING iv_input.gt_alv = gt_data.DELETE gt_alv WHERE maktx NS iv_input.go_alv->refresh_table_display( ).ENDFORM.
前一篇:SAP数字签名MD5Base64
后一篇:记录一个自己挖的坑~

加载中…