加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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

(2022-05-06 19:17:11)
标签:

abap

liumeng

sap

干货铺

杂谈

分类: 其他
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

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有