ABAP 修改ALV 工具条--添加、移除按钮

ABAP 修改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'

'SET_PF_STATUS'是一个Form的名字,可以任意写,然后在程序中添加'SET_PF_STATUS'这个Form,这其实是PBO过程,代码很简单,如下

*&--------------------------------------------------------------------* *& Form set_pf_status

*&--------------------------------------------------------------------* * text

*---------------------------------------------------------------------*

FORM SET_PF_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB. SET PF-STATUS '0100' .

ENDFORM. \

其实如果在第一步,没有删除按钮,而又不想显示出来的话,还可以在这个form中写代码滤掉,如下意思是不显示排序的两个按钮。

*&--------------------------------------------------------------------* *& Form set_pf_status

*&--------------------------------------------------------------------* * text

*---------------------------------------------------------------------*

FORM SET_PF_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB. DATA: BEGIN OF EX_TAB OCCURS 0, FCODE LIKE SY-UCOMM, END OF EX_TAB.

EX_TAB-FCODE = '&ODN'. APPEND EX_TAB.”升序 EX_TAB-FCODE = '&OUP'. APPEND EX_TAB.”降序 SET PF-STATUS 'STANDARD' EXCLUDING EX_TAB. ENDFORM. \

需要注意的是,需要传入参数I_CALLBACK_PROGRAM = I_REPID \否则的话,系统找不到'SET_PF_STATUS'这个form,也就无法执行这个Form了。

3、添加一个按钮,肯定要添加按钮事件在call function REUSE_ALV_GRID_DISPLAY时,传入参数I_CALLBACK_USER_COMMAND = 'USER_COMMAND'

同样USER_COMMAND这是个Form名字,可以任意取名,是个PAI的事件响应Form,在代码中实现这个form,可如下

*&--------------------------------------------------------------------*

*& Form user_command

*&--------------------------------------------------------------------* * text

*---------------------------------------------------------------------*

FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM RS_SELFIELD TYPE SLIS_SELFIELD. CASE R_UCOMM.

WHEN 'BUTTON1'.”BUTTON1是那个自定义按钮的功能码。 PERFORM FRM_button1.\执行相应处理 when others. ENDCASE.

ENDFORM. \

综上是在ALV toolbar上添加一个按钮,并处理按钮事件的例子,按这个思路,删除或者滤掉ALV toolbar上的按钮也好办了,可以在自定义的GUI status直接删除,或者在set_pf_staus这个form中使用excluding来做都行。

注意:如果想保留某些标准按钮的功能,请不要修改其功能码。

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4