ALV中自定义按钮
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ALV中自定义按钮
----李宝勋
使用alv的时候,我们经常性需要添加自定义按钮,实现用户单击事件调用,这里介绍通过GUI状态增加按钮。
假如你定义了报表程序ZMMR3009,里面已经编写好了alv的实现函数:如下:CALL FUNCTION'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM=W_REPID"当前程序
I_SAVE=''
IS_LAYOUT=I_LAYOUT"子函数layout_build填充的格式定义
IT_FIELDCAT=I_FIELDCAT_ALV[]"子函数fields填充的各列
TABLES
T_OUTTAB=IT_BLNTD
EXCEPTIONS
PROGRAM_ERROR=1
OTHERS=2.
在你的程序里找到函数:‘REUSE_ALV_GRID_DISPLAY’,双击这个函数名,打开这个函数代码窗口:如下图:
点击工具栏上的‘Dispaly Object List’按钮,打开对象浏览器窗口,如下图:
展开函数组:SLVC_FULLSCREEN,并选中GUI状态下的:STANDARD_FULLSCREEN 项,如下图:
右键单击,选择copy选项,在打开的窗体中设置如下,将alv的gui状态复制到你的程序里,程序:ZMMR3009是的目标程序,状态:STANDARD_004是你新建的gui名称,如下图:
然后点击'Copy',直到弹出的窗体全部消失,然后在你的程序里添加如下代码:
CONSTANTS CNS_PF_STATUS TYPE SLIS_FORMNAME VALUE
'ALV_PF_STATUS'."alv自定义按钮
CONSTANTS CNS_USER_COMMAND TYPE SLIS_FORMNAME VALUE
'ALV_USER_COMMAND'."alv自定义按钮响应事件
上面代码写到alv变量定义的代码下面,下面添加设置GUI状态代码:FORM alv_pf_status USING rt_extab TYPE slis_t_extab.
SET PF-STATUS'STANDARD_004'EXCLUDING rt_extab.
ENDFORM.
创建按钮开始:
双击'STANDARD_004',打开如下界面,找个空白的单元格先添加个'|',如下图:
然后在下个单元格输入名称:print,,双击这个名称弹出界面如下图:
确定后,在界面里设置按钮文本和图标等信息,如下图:
确定后,如下图
选择功能键后,确定后,如下图
输入图标文字信息,单击确定,然后点击保存按钮、编译,没有问题后,激活程序。
到此按钮创建完毕。
创建按钮结束。
接下来进行在alv中进行设置自定义按钮,在alv函数:‘REUSE_ALV_GRID_DISPLAY’中添加下面的红色代码部分:
CALL FUNCTION'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM=W_REPID"当前程序
I_CALLBACK_PF_STATUS_SET=CNS_PF_STATUS"设置alv的自定义按钮GUI
I_CALLBACK_USER_COMMAND=CNS_USER_COMMAND"设置alv自定义按钮响应事件
I_SAVE=''
IS_LAYOUT=I_LAYOUT"子函数layout_build填充的格式定义
IT_FIELDCAT=I_FIELDCAT_ALV[]"子函数fields填充的各列
TABLES
T_OUTTAB=IT_BLNTD
EXCEPTIONS
PROGRAM_ERROR=1
OTHERS=2.
编写自定义按钮响应事件:
FORM ALV_USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
CASE R_UCOMM.
WHEN'PRINT'.
PERFORM PRINT_FORM."调用打印程序
WHEN OTHERS.
...
ENDCASE.
到此alv自定义按钮设置完毕,如果你想添加多个按钮,只需将创建按钮开始到创建按钮结束部分重复就行了,在按钮响应事件里根据你设定的功能代码键值进行不同按钮的区别。
创建好的程序运行如下:。