ABAP-AVL-OO方法中的ALV的如何自己添加按钮及其响应

ABAP-AVL-OO方法中的ALV的如何自己添加按钮及其响应,第1张

*publicattributesandmethodPUBLICSECTION.METHODS:handle_toolbarFOREVENTtoolbarOFcl_gui_alv_gridIMPORTINGe_object,handle_user_commandFOREVENTuser_commandOFcl_gui_alv_gridIMPORTINGe_ucomm,ENDCLASS."lcl_event_receiverDEFINITION注意这个事件处理类中添加了两个方法,第一个方法负责往工具栏上添加按钮,第二个方法用来响应工具栏上按钮的动作步骤二:类的实现CLASSlcl_event_receiverIMPLEMENTATION.*methodtoolbarhandlerMETHODhandle_toolbar.PERFORMset_toolbarCHANGINGe_object.ENDMETHOD."handle_toolbarMETHODhandle_user_command.*HandleownfunctionsdefinedinthetoolbarCASEe_ucomm.WHEN'ADD'.PERFORMxyz. “这里你想干嘛就可以干嘛ENDCASE.ENDMETHOD."handle_user_commandENDCLASS."lcl_event_receiverIMPLEMENTATION步骤三:在FORM-----set_toolbar中添加buttonFORMset_toolbarCHANGINGprf_objectTYPEREFTOcl_alv_event_toolbar_set.CLEARprf_object-mt_toolbar.CLEARgs_toolbar.MOVE'ADD'TOgs_toolbar-function.MOVETOgs_toolbar-quickinfo.MOVETOgs_toolbar-text.MOVE''TOgs_toolbar-disabled.INSERTgs_toolbarINTOprf_object-mt_toolbarINDEX1.ENDFORM."set_toolbar1步骤四:创建事件处理对象--这一步一般在

普通的按钮是在GUI STATUS里完成的 要去SE80找到程序创建新的GUI进行创建,比如设置GUI名为‘0010’。创建如图:

设置GUI按钮如图:

你可以在项目1-7里面填写要设置的按钮代码,在图中EXTRACT的位置填写描述,按照你的要求是:显示自定义数据,删除自定义数据 ,显示 数据库表数据;在上图分别填写DISPLAY1,DELE1和DISPLAY2,保存后传输。具体的调用有两种形式,楼主你问的是ALV的调用,但是这里我两种都列出来供参考。

1.进行普通调用的时候(具体怎么调用下面详细说明),代码如下:

     END-OF-SELECTION.

        SET PF-STATUS ‘0010’

成功的话屏幕上会有三个按钮,分别显示DISPLAY1,DELETE1和DISPLAY,你可以在AT USER-COMMAND 里面使用 以下语句进行功能定义:

AT USER-COMMAND.

CASE SY-UCOMM.

  WHEN 'DISPLAY1'.

  "执行显示自定义数据的代码

  WHEN 'DELETE1'.

  "执行删除自定义数据的代码

  WHEN 'DISPLAY2'.

  "执行显示数据库表数据的的代码

ENDCASE.

2.与普通调用不同,ALV要建立FORM动态调用,如下:

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

    EXPORTING

       I_CALLBACK_PROGRAM = SY-REPID

       I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS' "设定使用的GUI STATUS

       I_CALLBACK_USER_COMMAND = 'USER_COMMAND'   "用户触发命令定义

       I_STRUCTURE_NAME = 'MAKT'

    TABLES

       T_OUTTAB = ITAB

    EXCEPTIONS

       PROGRAM_ERROR = 1

       OTHERS = 2.

上述代码关于GUI STATUS的说明如下:

   I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'

这里的SET_PF_STATUS就是需要你动态建立的FORM名,FORM如下:

FORM set_pf_status USING rt_extab TYPE slis_t_extab.

  SET PF-STATUS '0010'.   "0010为创建了三个定义按钮的GUI STATUS

ENDFORM. "Set_pf_status

关于按钮触发的定义:

  I_CALLBACK_USER_COMMAND = 'USER_COMMAND'

其动态调用的FORM如下:

FORM user_command USING p_ucomm TYPE sy-ucomm

                          p_rs_selfield TYPE slis_selfield .

 CASE SY-UCOMM.

  WHEN 'DISPLAY1'.

  "执行显示自定义数据的代码

  WHEN 'DELETE1'.

  "执行删除自定义数据的代码

  WHEN 'DISPLAY2'.

  "执行显示数据库表数据的的代码

 ENDCASE.                    

ENDFORM

以上大致描述了GUI STATUS的创建和两种调用方法,详细的请见参考资料。

参考资料:

http://blog.sina.com.cn/s/blog_90c6985b01011fyx.html

http://blog.csdn.net/gloria_64/article/details/2030418

http://blog.sina.com.cn/s/blog_6632b9a90100ujrk.html    

   


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11728441.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存