cl_salv_table 的应用程序工具栏中的自定义按钮?
Custom button in application toolbar of cl_salv_table?
我正在使用 cl_salv_table
制作报告,我想在 ALV 网格的工具栏上制作一个按钮,它将显示一个预定义的弹出窗口。
我能够在工具栏上制作一个按钮并将“功能代码”设置为详细信息,我在调试模式下看到单击该按钮时“sy-ucomm”设置为详细信息,但它是不进入案例循环。
如有任何帮助或建议,我们将不胜感激。
请查看程序 SALV_DEMO_TABLE_SELECTIONS 如何正确实现事件处理程序,基本上 class lcl_handle_events 中的方法 on_user_command 就是您要查找的内容。
首先,您应该在带有容器的屏幕上显示 SALV 网格:
try.
cl_salv_table=>factory(
exporting
r_container = gr_container
container_name = 'CONTAINER'
importing
r_salv_table = gr_table
changing
t_table = gt_outtab ).
catch cx_salv_msg. "#EC NO_HANDLER
endtry.
那么应该启用所有功能:
lr_functions = gr_table->get_functions( ).
lr_functions->set_all( gc_true ).
最后你像这样添加自己的函数:
include <icon>.
try.
lr_functions->add_function(
name = 'MYFUNCTION'
icon = CONV string( icon_complete )
text = `My function`
tooltip = `My custom function`
position = if_salv_c_function_position=>right_of_salv_functions ).
catch cx_salv_existing cx_salv_wrong_call.
endtry.
下一个重要步骤是在同一个 class 或单独的处理程序中创建 on_user_command
事件处理程序 class:
data: gr_events type ref to lcl_handle_events.
set handler gr_events->on_user_command for lr_events.
最后一件事是执行实际功能工作的处理程序方法实现
class lcl_handle_events implementation.
method on_user_command.
message |Function { e_salv_function } is fired| TYPE 'I'.
endmethod.
endclass.
我正在使用 cl_salv_table
制作报告,我想在 ALV 网格的工具栏上制作一个按钮,它将显示一个预定义的弹出窗口。
我能够在工具栏上制作一个按钮并将“功能代码”设置为详细信息,我在调试模式下看到单击该按钮时“sy-ucomm”设置为详细信息,但它是不进入案例循环。
如有任何帮助或建议,我们将不胜感激。
请查看程序 SALV_DEMO_TABLE_SELECTIONS 如何正确实现事件处理程序,基本上 class lcl_handle_events 中的方法 on_user_command 就是您要查找的内容。
首先,您应该在带有容器的屏幕上显示 SALV 网格:
try.
cl_salv_table=>factory(
exporting
r_container = gr_container
container_name = 'CONTAINER'
importing
r_salv_table = gr_table
changing
t_table = gt_outtab ).
catch cx_salv_msg. "#EC NO_HANDLER
endtry.
那么应该启用所有功能:
lr_functions = gr_table->get_functions( ).
lr_functions->set_all( gc_true ).
最后你像这样添加自己的函数:
include <icon>.
try.
lr_functions->add_function(
name = 'MYFUNCTION'
icon = CONV string( icon_complete )
text = `My function`
tooltip = `My custom function`
position = if_salv_c_function_position=>right_of_salv_functions ).
catch cx_salv_existing cx_salv_wrong_call.
endtry.
下一个重要步骤是在同一个 class 或单独的处理程序中创建 on_user_command
事件处理程序 class:
data: gr_events type ref to lcl_handle_events.
set handler gr_events->on_user_command for lr_events.
最后一件事是执行实际功能工作的处理程序方法实现
class lcl_handle_events implementation.
method on_user_command.
message |Function { e_salv_function } is fired| TYPE 'I'.
endmethod.
endclass.