ABAP OO ALV
1、定义变量:
DATA:gs_toolbar TYPE stb_button."工具栏按钮 DATA:gr_alv_grid TYPE REF TO cl_gui_alv_grid. "定义cl_gui_alv_grid 类引用 DATA:gr_alv_container TYPE REF TO cl_gui_custom_container."定义cl_gui_custom_container 容器
2、定义类:
CLASS cl_event_handle DEFINITION."事件处理类定义 PUBLIC SECTION. "初始化ALV工具栏对象事件,如增加按钮并设定属性 METHODS handle_toolbar FOR EVENT toolbar OF cl_gui_alv_grid IMPORTING e_object e_interactive. "ALV工具栏按钮的点击事件 METHODS handle_user_command FOR EVENT user_command OF cl_gui_alv_grid IMPORTING e_ucomm. * "该事件用于在下ALV工具栏的下拉菜单按钮中增加选项 * METHODS handle_menu_button FOR EVENT menu_button OF cl_gui_alv_grid * IMPORTING * e_object * e_ucomm. * "ALV表格双击事件 * METHODS handle_double_click FOR EVENT double_click OF cl_gui_alv_grid * IMPORTING * e_row "作废 * e_column "通过e_column-fieldname 获取点击字段名,点击列 * es_row_no. "通过es_row_no-row_id 返回当前行号 * * * "字段的字段目录HOTSPOT设置为"X",热点单击事件 * METHODS handle_hotspot_click FOR EVENT hotspot_click OF cl_gui_alv_grid * IMPORTING * e_row_id "作废 * e_column_id "通过e_column_id-fieldname 获取点击字段名,点击列 * es_row_no. "通过es_row_no-row_id 返回当前行号 * * " ENTER时触发 * METHODS handle_enter FOR EVENT data_changed_finished OF cl_gui_alv_grid * IMPORTING * e_modified * et_good_cells.
3、实现类:
CLASS cl_event_handle IMPLEMENTATION."事件处理类实现部分 METHOD handle_toolbar. gs_toolbar-function = 'ZPRINT'. "按钮的FunctionCode gs_toolbar-icon = icon_print."按钮图标,通过Tcode:ICON可以查看 gs_toolbar-text = '打印'. "按钮标签 gs_toolbar-butn_type = '0'. "定义按钮类型,0为标准按钮,具体取值可参考这里 APPEND gs_toolbar TO e_object->mt_toolbar."添加按钮到工具栏中 ENDMETHOD. METHOD handle_user_command. CASE e_ucomm. WHTN 'ZPRINT'. ENDCASE. " 刷新界面 CALL METHOD gr_alv_grid->refresh_table_display. ENDMETHOD. "handle_user_command
---------------------------------------------------------------界面-----------------------------------------------------------------------
创建容器、显示ALV:
IF gr_alv_container IS INITIAL. "创建ALV容器对象 CREATE OBJECT gr_alv_container EXPORTING container_name = 'GC_TAB'. "创建ALV控件 CREATE OBJECT gr_alv_grid EXPORTING i_parent = gr_alv_container. CALL METHOD gr_alv_grid->set_table_for_first_display EXPORTING i_save = 'U' i_default = 'X' is_layout = gs_layout CHANGING it_outtab = gt_out it_fieldcatalog = gt_fieldcat EXCEPTIONS invalid_parameter_combination = 1 program_error = 2 too_many_lines = 3 OTHERS = 4. IF sy-subrc <> 0. * Implement suitable error handling here ENDIF. CREATE OBJECT:gr_event_handle. "为ALV按钮注册监听事件 SET HANDLER :gr_event_handle->handle_toolbar FOR gr_alv_grid, gr_event_handle->handle_user_command FOR gr_alv_grid. "调用此方法才能激活工具栏上增加的自定义按钮 CALL METHOD gr_alv_grid->set_toolbar_interactive. ELSE. CALL METHOD gr_alv_grid->refresh_table_display. ENDIF.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本