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

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

步骤一:创建一个事件处理类CLASSlcl_event_receiverDEFINITION.

*publicattributesandmethodPUBLICSECTION.METHODS:handle_toolbarFOREVENTtoolbarOFcl_gui_alv_gridIMPORTINGe_object,

handle_user_commandFOREVENTuser_commandOFcl_gui_alv_gridIMPORTINGe_ucomm,

ENDCLASS.

"lcl_event_receiverDEFINITION

注意这个事件处理类中添加了两个方法,第一个方法负责往工具栏上添加按钮,第二个方法用来响应工具栏上按钮的动作

步骤二:类的实现CLASSlcl_event_receiver

IMPLEMENTATION.

*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

步骤四:创建事件处理对象--这一步一般在

grf_grid-set_table_for_first_display之后SETHANDLERgrf_event_receiver-handle_user_commandFORgrf_grid.SETHANDLERgrf_event_receiver-handle_toolbarFORgrf_grid.CALLMETHODgrf_grid-set_toolbar_interactive.

注意:STB_BUTTON结构包含的字段

FUNCTION UI_FUNC CHAR700Function Code

ICON ICONNAME CHAR300Name of an Icon

QUICKINFO ICONQUICKCHAR300Quickinfo for an icon

BUTN_TYPE TB_BTYPE INT4100Toolbar button type

DISABLED CHAR 10Disabled

TEXT TEXT40CHAR400Text, 40 Characters Long

CHECKED CHAR 10Printed

TB_BTYPE的可选择值 ,主要用来决定按钮的类型

0Button (normal)

1Menu and default button2Menu3Separator4Radio button5Checkbox6Menu entry

TYPES:

BEGIN OF GTY_EXCLTAB,

FCODE LIKE SY-UCOMM,

END OF GTY_EXCLTAB.

*定义两个变量用来存储变灰的按钮信息

DATA:

GT_STATUS_EXCL TYPE TABLE OF GTY_EXCLTAB, " Application toolbar exclude options

GS_STATUS_EXCL TYPE GTY_EXCLTAB.

*需要把那个变灰就填到刚定义的内表中

CLEAR: GT_STATUS_EXCL, GS_STATUS_EXCL.

GS_STATUS_EXCL-FCODE = 'SAVE'.

APPEND GS_STATUS_EXCL TO GT_STATUS_EXCL.

*设置 pf-status 的时候用EXCLUDING关键字将刚才的内表排除出去就行了。

SET PF-STATUS 'S001' EXCLUDING GT_STATUS_EXCL.


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

原文地址:https://54852.com/bake/11392926.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存