改动ALV 工具条,在ALV toolbar上加入、移除button

下面针对于FM:REUSE_ALV_GRID_DISPLAY的ALV,以加入一个button为例,改动OO ALV工具条的方式大致同样。


1、创建一个GUI status
首先在程序中创建一个工具条,通常是希望在标准工具条基础上进行改动,能够到函数组SALV中copy标准GUI status到自己的程序下,假如copy过来名字改为0100.
依据须要,加入自己定义button、对应ICON和功能码BUTTON1。也可删除某些button不须要的button,保存激活。


2、在call function REUSE_ALV_GRID_DISPLAY时。传入參数I_CALLBACK_PF_STATUS_SET          = 'SET_PF_STATUS'
'SET_PF_STATUS'是一个Form的名字,能够随意写。然后在程序中加入'SET_PF_STATUS'这个Form,这事实上是PBO过程,代码非常easy,例如以下
*&--------------------------------------------------------------------*
*&      Form  set_pf_status
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
FORM SET_PF_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB.
  SET PF-STATUS '0100' .
ENDFORM.                    "set_pf_status
事实上假设在第一步,没有删除button,而又不想显示出来的话,还能够在这个form中写代码滤掉,例如以下意思是不显示排序的两个button。


*&--------------------------------------------------------------------*
*&      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、加入一个button,肯定要加入button事件在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是那个自己定义button的功能码。


      PERFORM FRM_button1."运行对应处理
    when others.
  ENDCASE.
ENDFORM.                    "user_command
综上是在ALV toolbar上加入一个button。并处理button事件的样例。按这个思路,删除或者滤掉ALV toolbar上的button也好办了,能够在自己定义的GUI status直接删除。或者在set_pf_staus这个form中使用excluding来做都行。
注意:假设想保留某些标准button的功能。请不要改动其功能码。

posted on 2017-06-29 11:05  ljbguanli  阅读(165)  评论(0编辑  收藏  举报