ABAP ALV网格 - 如何消除按钮?

时间:2012-07-06 09:47:24

标签: button abap

因此,在TOOLBAR的{​​{1}}事件中,参数CL_GUI_ALV_GRID具有我可以访问的表E_OBJECT以手动更改所有按钮。

但是我不认为这是在两个似乎是ALV网格标准的状态之间切换的正确方法。

是否有更好的方法在工具栏中包含/排除标准按钮,而不是像工具栏事件中的自定义按钮那样创建它们?

谢谢,你们统治。

2 个答案:

答案 0 :(得分:3)

与REUSE_ALV_GRID_DISPLAY相似,但在类CL_GUI_ALV_CLASS中:

定义类型为UI_FUNCTIONS的表格和类型为UI_FUNC的工作区域:

data: lt_exclude type ui_functions,
      ls_exclude type ui_func.

将要隐藏的功能的属性附加到表格中:

ls_exclude = cl_gui_alv_grid=>mc_fc_sum.
append ls_exclude to lt_exclude.

标准函数的属性都以前缀MC_FC_开头。此外,工具栏中的整个菜单都有前缀MC_MB_

使用方法set_table_for_first_display传递表格,导出参数it_toolbar_excluding

答案 1 :(得分:1)

如果您在代码中使用REUSE_ALV_GRID_DISPLAY,这可能会对您有所帮助:

call function 'REUSE_ALV_GRID_DISPLAY'
exporting
  i_callback_program       = 'ZPROGRAM'
  i_callback_pf_status_set = 'SET_PF_STATUS'
  it_fieldcat              = it_fieldcat
tables
  t_outtab                 = gt_itab.

你的SET_PF_STATUS应该是这样的,以便消除你想要的一些按钮。在这个例子中,我正在删除“SORT_UP”按钮。

form set_pf_status using rt_extab type slis_t_extab.

 data: lv_flag VALUE 'X'.

 if lv_flag is not INITIAL.

   append '&OUP' to rt_extab.

 endif.

 set pf-status 'STANDARD' excluding rt_extab.
endform.                    "set_pf_status

希望它有用。

塔尔哈