cl_salv_table中的应用程序工具栏中的按钮

时间:2017-02-06 08:15:12

标签: abap

我使用cl_salv_table撰写报告。

我做了哪些。之后我想在alv网格的工具栏上创建一个按钮,它会显示一个预定义的弹出窗口,然后打个招呼。

我能够在工具栏上创建一个按钮并将Functional code设置为详细信息,我也在调试模式中看到,单击按钮时sy-ucomm设置为详细信息,但它是不去案例循环。

任何帮助或建议都将不胜感激。

2 个答案:

答案 0 :(得分:0)

请查看程序SALV_DEMO_TABLE_SELECTIONS如何正确实现事件处理程序,基本上lcl_handle_events类中的on_user_command方法就是您要查找的内容。

答案 1 :(得分:0)

首先,您应该在带有容器的屏幕上显示SALV网格:

var clickAddScore = function () {
  if ( $("name").value == "" || $("score").value < 0 || $("score").value > 100 || isNaN($("score").value) ) {
    alert("Please enter a valid name and score");
    $("name").value = "";
    $("score").value = "";
    return false;
  };
  else {
    names[names.length] = $("name").value;
    scores[scores.length] = $("score").value;
    $("name").value = "";
    $("score").value = "";
  };
};

然后应启用所有功能:

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. 事件处理程序:

on_user_command

最后一件事是处理程序方法的实现,它将完成实际的功能工作

data: gr_events type ref to lcl_handle_events.
set handler gr_events->on_user_command for lr_events.