- SALV的派生类cl_salv_functions_list提供了add_function方法增加按钮
- 使用该方法的注意事项:SALV全屏模式下使用会报错
- 其他两种模式的SALV都是可以的
- 可控模式生成SALV的方式:http://t.csdnimg.cn/zB7tu
- Docking container生成SALV的方式:http://t.csdnimg.cn/QJ5Q9
- 关键代码
METHOD set_status. DATA: lo_functions TYPE REF TO cl_salv_functions_list. " 设置默认的标准状态栏 lo_functions = co_alv->get_functions( ). lo_functions->set_all( abap_true ). INCLUDE <icon>. DATA: l_icon TYPE string. " 添加全部选择按钮 l_icon = icon_select_all. lo_functions->add_function( name = 'ALL' tooltip = '全部选择' icon = l_icon position = if_salv_c_function_position=>right_of_salv_functions ). " 添加取消全选按钮 l_icon = icon_deselect_all. lo_functions->add_function( name = 'CAL' tooltip = '取消全选' icon = l_icon position = if_salv_c_function_position=>right_of_salv_functions ). " 添加拣配处理按钮按钮 l_icon = icon_execute_object. lo_functions->add_function( name = 'JP' text = '拣配处理' tooltip = '拣配处理' icon = l_icon position = if_salv_c_function_position=>right_of_salv_functions ). ENDMETHOD.
- 完整代码
CLASS lcl_model DEFINITION. PUBLIC SECTION. TYPES:BEGIN OF TY_dATA, vbeln TYPE vbak-vbeln, erdat TYPE erdat, erzet TYPE erzet, ernam TYPE ernam, auart TYPE auart. TYPES:END OF ty_data. DATA mt_data TYPE TABLE OF ty_data. DATA mo_salv TYPE REF TO cl_salv_table. "获取数据的方法 METHODS get_data. "展示SALV的方法 METHODS alv_show. PRIVATE SECTION. METHODS: set_status CHANGING co_alv TYPE REF TO cl_salv_table. ENDCLASS. CLASS lcl_model IMPLEMENTATION. METHOD get_data. SELECT vbeln erdat erzet ernam auart INTO TABLE mt_data FROM vbak UP TO 20 ROWS. ENDMETHOD. METHOD alv_show. DATA(lo_dock) = NEW cl_gui_docking_container( repid = sy-cprog dynnr = sy-dynnr ratio = 80 side = cl_gui_docking_container=>dock_at_bottom ). TRY. cl_salv_table=>factory( EXPORTING r_container = lo_dock IMPORTING r_salv_table = mo_salv CHANGING t_table = mt_data ). CATCH cx_salv_msg INTO DATA(msg). MESSAGE msg TYPE 'S' DISPLAY LIKE 'E'. ENDTRY. me->set_status( CHANGING co_alv = mo_salv ). mo_salv->display( ). ENDMETHOD. METHOD set_status. DATA: lo_functions TYPE REF TO cl_salv_functions_list. " 设置默认的标准状态栏 lo_functions = co_alv->get_functions( ). lo_functions->set_all( abap_true ). INCLUDE <icon>. DATA: l_icon TYPE string. " 添加全部选择按钮 l_icon = icon_select_all. lo_functions->add_function( name = 'ALL' tooltip = '全部选择' icon = l_icon position = if_salv_c_function_position=>right_of_salv_functions ). " 添加取消全选按钮 l_icon = icon_deselect_all. lo_functions->add_function( name = 'CAL' tooltip = '取消全选' icon = l_icon position = if_salv_c_function_position=>right_of_salv_functions ). " 添加拣配处理按钮按钮 l_icon = icon_execute_object. lo_functions->add_function( name = 'JP' text = '拣配处理' tooltip = '拣配处理' icon = l_icon position = if_salv_c_function_position=>right_of_salv_functions ). ENDMETHOD. ENDCLASS. SELECT-OPTIONS vbeln FOR vbak-vbeln. AT SELECTION-SCREEN OUTPUT. DATA(lo_model) = NEW lcl_model( ). lo_model->get_data( ). lo_model->alv_show( ).