2012-07-06 84 views
0

因此,在CL_GUI_ALV_GRIDTOOLBAR事件中,參數E_OBJECT具有我可以訪問的表MT_TOOLBAR以手動更改所有按鈕。ABAP ALV網格 - 如何消除按鈕?

但是,我不認爲這是在ALV Grid看起來標準的兩個狀態之間切換的正確方法。

有沒有更好的方式來包括/排除工具欄中的標準按鈕,而不是像工具欄事件中的自定義按鈕那樣簡單地創建它們?

Thx,你們統治。

回答

2

類似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

如果你在代碼中使用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 

希望它有幫助。

塔拉