修改ALV 工具条,在ALV toolbar上添加、移除按钮
以下为本人转载的一个朋友的日志,不错,值得借鉴!
以前写过一个在ALV工具条上加自定义按钮的程序,时间长了,今天有人问到,竟然忘了,回去又看看总结如下。
以下针对于FM:REUSE_ALV_GRID_DISPLAY的ALV,以添加一个按钮为例,修改OO ALV工具条的方式大致相同。
1、创建一个GUI status
首先在程序中创建一个工具条,一般是希望在标准工具条基础上进行修改,可以到函数组SALV中copy标准GUI status到自己的程序下,假如copy过来名字改为0100.
根据需要,添加自定义按钮、相应ICON和功能码BUTTON1,也可删除某些按钮不需要的按钮,保存激活。
2、在call function REUSE_ALV_GRID_DISPLAY时,传入参数I_CALLBACK_PF_STATUS_SET
'SET_PF_STATUS'是一个Form的名字,可以任意写,然后在程序中添加'SET_PF_STATUS'这个Form,这其实是PBO过程,代码很简单,如下
*&--------------------------------------------------------------------*
*&
*&--------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
FORM SET_PF_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB.
ENDFORM.
其实如果在第一步,没有删除按钮,而又不想显示出来的话,还可以在这个form中写代码滤掉,如下意思是不显示排序的两个按钮。
*&--------------------------------------------------------------------*
*&
*&--------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
FORM SET_PF_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB.
ENDFORM.
需要注意的是,需要传入参数I_CALLBACK_PROGRAM
3、添加一个按钮,肯定要添加按钮事件在call function REUSE_ALV_GRID_DISPLAY时,传入参数I_CALLBACK_USER_COMMAND
同样USER_COMMAND这是个Form名字,可以任意取名,是个PAI的事件响应Form,在代码中实现这个form,可如下
*&--------------------------------------------------------------------*
*&
*&--------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
