abap 添加alv上的工具栏的按钮_在alv工具栏上自定义菜单下拉按钮

*Class declarations

CLASS lcl_event_receiver DEFINITION DEFERRED.

*type pool declarations

TYPE-POOLS : icon.

*Internal table and work area declarations for dd02l

DATA: it_dd02l   TYPE TABLE OF dd02l,

wa_dd02l TYPE dd02l.

*Data declaration for ALV.

DATA :it_layout   TYPE lvc_s_layo,

it_toolbar  TYPE stb_button,

c_alv  TYPE REF TO cl_gui_alv_grid,

custom_container TYPE REF TO cl_gui_custom_container,

event_receiver TYPE REF TO lcl_event_receiver.

*Select options multiple values no ranges

SELECT-OPTIONS : s_table FOR wa_dd02l-tabname NO INTERVALS.

*Initialization event

INITIALIZATION.

*Start of selection event

START-OF-SELECTION.

*sUBROUTINE FOR ALV DISPLAY

PERFORM alvdisplay.

*Class definition

CLASS lcl_event_receiver DEFINITION.

PUBLIC SECTION.

CLASS-METHODS:

*handling toolbar for interactive

handle_toolbar

FOR EVENT toolbar OF cl_gui_alv_grid

IMPORTING e_object e_interactive,

*handling menu button

handle_menu_button

FOR EVENT menu_button OF cl_gui_alv_grid

IMPORTING e_object e_ucomm,

*On click of the menu button

handle_user_command

FOR EVENT user_command OF cl_gui_alv_grid

IMPORTING e_ucomm.

PRIVATE SECTION.

ENDCLASS.                    "lcl_event_receiver DEFINITION

*Class implementation

CLASS lcl_event_receiver IMPLEMENTATION.

METHOD handle_toolbar.

* handle toolbar

CLEAR it_toolbar.

MOVE 'DETAIL' TO it_toolbar-function.

MOVE icon_detail TO it_toolbar-icon.

MOVE 2 TO it_toolbar-butn_type.

APPEND it_toolbar TO e_object->mt_toolbar.

ENDMETHOD.                    "handle_toolbar

METHOD handle_menu_button.

* handle own menubuttons

IF e_ucomm = 'DETAIL'.

CALL METHOD e_object->add_function

EXPORTING

fcode = 'DISPLAY'

text  = 'DISPLAY'.

ENDIF.

ENDMETHOD.                    "handle_menu_button

METHOD handle_user_command.

*On click

CASE e_ucomm.

WHEN 'DISPLAY'.

MESSAGE 'Menu Clicked' TYPE 'I'.

ENDCASE.

ENDMETHOD.                           "handle_user_command

ENDCLASS.                    "lcl_event_receiver IMPLEMENTATION

*&-----------------------------------------------------------------*

*&      Module  PBO  OUTPUT

*&-----------------------------------------------------------------*

*       text

*------------------------------------------------------------------*

MODULE pbo OUTPUT.

IF custom_container IS INITIAL.

* select data from table dd02l

PERFORM fetch_dd02l.

* create a custom container control for our ALV Control

CREATE OBJECT custom_container

EXPORTING

container_name = 'CCONT'.

* create an instance of alv control

CREATE OBJECT c_alv

EXPORTING i_parent = custom_container.

* Set a titlebar for the grid control

it_layout-grid_title = 'TABLE DETAILS'.

*ALV display

CALL METHOD c_alv->set_table_for_first_display

EXPORTING

i_structure_name = 'dd02l'

is_layout        = it_layout

CHANGING

it_outtab        = it_dd02l.

*Handlers for the events

CREATE OBJECT event_receiver.

SET HANDLER event_receiver->handle_user_command

event_receiver->handle_menu_button

event_receiver->handle_toolbar FOR ALL INSTANCES.

*Calling the interactive toolbar method of ALV

CALL METHOD c_alv->set_toolbar_interactive.

ENDIF.

ENDMODULE.                             " PBO  OUTPUT

*&-----------------------------------------------------------------*

*&      Module  PAI  INPUT

*&-----------------------------------------------------------------*

*       text

*-----------------------------------------------------------------*

MODULE pai INPUT.

ENDMODULE.                             " PAI  INPUT

*&----------------------------------------------------------------*

*&      form fetch_dd02l

*&----------------------------------------------------------------*

*       text

*-----------------------------------------------------------------*

*Subroutine to fetch data

FORM fetch_dd02l.

SELECT * FROM dd02l INTO CORRESPONDING FIELDS OF TABLE it_dd02l

WHERE  tabname IN s_table.

ENDFORM.                               " SELECT_TABLE_dd02l

*&-----------------------------------------------------------------*

*&      Form  ALVDISPLAY

*&-----------------------------------------------------------------*

*       text

*------------------------------------------------------------------*

*  -->  p1        text

*  

*------------------------------------------------------------------*

FORM alvdisplay .

* ALV output

SET SCREEN 600.

ENDFORM.                    " ALVDISPLAY

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值