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

 

转  A​L​V​中​自​定​义​按​钮

http://wenku.baidu.com/link?url=CNVCqkCu1RdbeujJP5xj7APt1TVfvkgqMBdDNLlNaSSc_L8ILHW_BnMzXw1-gzt9Wzbgtlfn_zVPZo_D-is0T3OGpO0cyr_0jNVsXRZnRmW

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.                    "set_pf_status
其实如果在第一步,没有删除按钮,而又不想显示出来的话,还可以在这个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.                    "set_pf_status
需要注意的是,需要传入参数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.                    "user_command
综上是在ALV toolbar上添加一个按钮,并处理按钮事件的例子,按这个思路,删除或者滤掉ALV toolbar上的按钮也好办了,可以在自定义的GUI status直接删除,或者在set_pf_staus这个form中使用excluding来做都行。
注意:如果想保留某些标准按钮的功能,请不要修改其功能码。

转载于:https://www.cnblogs.com/xjm123/p/3729960.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值