Solution:如何在输入后不用敲回车,也能执行搜索

Solution:如何在输入后不用敲回车,也能执行搜索

这里用到了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。

效果如下:


Solution:如何在输入后不用敲回车,也能执行搜索

代码如下:

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_container EXPORTING extension = 9999 side = cl_gui_docking_container=>dock_at_top.
"容器拆分为上下两部分。上:INPUT输入框;下:ALV CREATE OBJECT go_splitter EXPORTING parent = go_docking_container rows = 2 columns = 1. go_splitter->set_row_sash( id = 1 type = cl_gui_splitter_container=>type_movable value = cl_gui_splitter_container=>false ). go_splitter->set_row_sash( id = 1 type = cl_gui_splitter_container=>type_sashvisible value = cl_gui_splitter_container=>false ). go_splitter->set_row_mode( mode = cl_gui_splitter_container=>mode_absolute ). go_splitter->set_row_height( id = 1 height = 30 ).
"创建INPUT FIELD go_input_con = go_splitter->get_container( row = 1 column = 1 ). CREATE OBJECT go_input EXPORTING parent = go_input_con activate_history = 'X' activate_find_button = 'X' button_icon_info = icon_search button_tooltip_info = 'Search' activate_. CREATE OBJECT go_handle_input_field. SET HANDLER go_handle_input_field->handle_submit FOR go_input.
"创建ALV go_alv_con = go_splitter->get_container( row = 2 column = 1 ). CREATE OBJECT go_alv EXPORTING i_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( CHANGING it_outtab = gt_alv it_fieldcatalog = lt_fcat EXCEPTIONS invalid_parameter_combination = 1 program_error = 2 too_many_lines = 3 OTHERS = 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.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值