‎2008 Mar 12 7:13 AM
Hi,
Good day experts,
I've created the Report which is used with OOPs. i want the Tool bar which is customised. I dont need the system generat tool bar.
How to do it? Plz give me solution for this one.
regards,
kk
‎2008 Mar 12 7:28 AM
Hi Kiran,
Thouroughly check this sample program. In this i have created two buttons 'PRINT' and 'PHONE' on the tool bar. Try to implement it in your code.
REPORT Z_44072_ALV_OOPS .
TABLES : MARA.
TYPE-POOLS : ICON.
CLASS lcl_event_receiver DEFINITION DEFERRED.
DATA : CH_GRID TYPE REF TO CL_GUI_ALV_GRID.
DATA : CH_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
DATA : IT_MARA LIKE MARA OCCURS 0 WITH HEADER LINE.
DATA : o_event_receiver TYPE REF TO lcl_event_receiver.
DATA : CH_GRID1 TYPE REF TO CL_GUI_ALV_GRID.
DATA : CH_CONTAINER1 TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
DATA : IT_MAKT LIKE MAKT OCCURS 0 WITH HEADER LINE.
DATA : gs_layout TYPE lvc_s_layo,
ok_code LIKE sy-ucomm.
SELECT * FROM MARA INTO TABLE IT_MARA.
CALL SCREEN 100.
*----
C L A S S E S
*----
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
METHODS:
handle_toolbar FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING
e_object e_interactive,
handle_user_command FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm.
ENDCLASS.
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_toolbar.
Event handler method for event toolbar.
CONSTANTS:
Constants for button type
c_button_normal TYPE i VALUE 0,
c_menu_and_default_button TYPE i VALUE 1,
c_menu TYPE i VALUE 2,
c_separator TYPE i VALUE 3,
c_radio_button TYPE i VALUE 4,
c_checkbox TYPE i VALUE 5,
c_menu_entry TYPE i VALUE 6.
DATA: ls_toolbar TYPE stb_button.
Append seperator to the normal toolbar
CLEAR ls_toolbar.
MOVE c_separator TO ls_toolbar-butn_type..
APPEND ls_toolbar TO e_object->mt_toolbar.
Append a new button that to the toolbar. Use E_OBJECT of
event toolbar. E_OBJECT is of type CL_ALV_EVENT_TOOLBAR_SET.
This class has one attribute MT_TOOLBAR which is of table type
TTB_BUTTON. The structure is STB_BUTTON
CLEAR ls_toolbar.
MOVE 'PRINT' TO ls_toolbar-function.
MOVE ICON_PRINT TO ls_toolbar-icon.
MOVE 'Print' TO ls_toolbar-quickinfo.
MOVE 'Print' TO ls_toolbar-text.
MOVE ' ' TO ls_toolbar-disabled.
APPEND ls_toolbar TO e_object->MT_toolbar.
CLEAR ls_toolbar.
MOVE 'PHONE' TO ls_toolbar-function.
MOVE ICON_PHONE TO ls_toolbar-icon.
MOVE 'Phone' TO ls_toolbar-quickinfo.
MOVE 'Phone' TO ls_toolbar-text.
MOVE ' ' TO ls_toolbar-disabled.
APPEND ls_toolbar TO e_object->MT_toolbar.
ENDMETHOD.
METHOD handle_user_command.
Handle own functions defined in the toolbar
CASE e_ucomm.
WHEN 'CHANGE'.
PERFORM change_flight.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMETHOD.
ENDCLASS.
CLASS CH_EVENT DEFINITION.
PUBLIC SECTION.
METHODS : DOUBLE_CLICK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
IMPORTING E_ROW E_COLUMN.
PRIVATE SECTION.
ENDCLASS.
CLASS CH_EVENT IMPLEMENTATION.
METHOD DOUBLE_CLICK.
PERFORM DOUBLE_CLICK USING E_ROW E_COLUMN.
ENDMETHOD.
ENDCLASS.
DATA : EVENT TYPE REF TO CH_EVENT.
&----
*& Module STATUS_0100 OUTPUT
&----
text
----
module STATUS_0100 output.
SET PF-STATUS 'CH1'.
SET TITLEBAR 'xxx'.
PERFORM DISPLAY_ALV.
CREATE OBJECT EVENT.
SET HANDLER EVENT->DOUBLE_CLICK FOR CH_GRID.
endmodule. " STATUS_0100 OUTPUT
&----
*& Module USER_COMMAND_0100 INPUT
&----
text
----
module USER_COMMAND_0100 input.
CASE SY-UCOMM.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'EXIT'.
LEAVE PROGRAM.
ENDCASE.
endmodule. " USER_COMMAND_0100 INPUT
&----
*& Form DISPLAY_ALV
&----
text
----
--> p1 text
<-- p2 text
----
form DISPLAY_ALV .
IF CH_CONTAINER IS INITIAL.
CREATE OBJECT CH_CONTAINER
EXPORTING
CONTAINER_NAME = 'CH_CONTAINER'.
CREATE OBJECT CH_GRID
EXPORTING
I_PARENT = CH_CONTAINER.
gs_layout-zebra = 'X'.
gs_layout-keyhot = 'X'.
CREATE OBJECT o_event_receiver.
SET HANDLER o_event_receiver->handle_user_command FOR CH_GRID.
SET HANDLER o_event_receiver->handle_toolbar FOR CH_GRID.
CALL METHOD CH_GRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
I_STRUCTURE_NAME = 'MARA'
is_layout = gs_layout
CHANGING
IT_OUTTAB = IT_MARA[].
ENDIF.
CALL METHOD CH_GRID->set_toolbar_interactive.
CALL METHOD cl_gui_control=>set_focus EXPORTING control = CH_GRID.
endform. " DISPLAY_ALV
&----
*& Form DOUBLE_CLICK
&----
text
----
-->P_E_ROW text
-->P_E_COLUMN text
----
form DOUBLE_CLICK using p_e_row
p_e_column.
READ TABLE IT_MARA INDEX P_E_ROW.
IF SY-SUBRC = 0.
CLEAR IT_MAKT.
REFRESH IT_MAKT.
SELECT * FROM MAKT INTO TABLE IT_MAKT
WHERE MATNR = IT_MARA-MATNR.
CALL SCREEN 200.
ENDIF.
endform. " DOUBLE_CLICK
&----
*& Module STATUS_0200 OUTPUT
&----
text
----
module STATUS_0200 output.
SET PF-STATUS 'MNU2'.
SET TITLEBAR 'xxx'.
PERFORM DISPLAY_GRID2.
endmodule. " STATUS_0200 OUTPUT
&----
*& Module USER_COMMAND_0200 INPUT
&----
text
----
module USER_COMMAND_0200 input.
CASE SY-UCOMM.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'EXIT'.
LEAVE PROGRAM.
ENDCASE.
endmodule. " USER_COMMAND_0200 INPUT
&----
*& Form DISPLAY_GRID2
&----
text
----
--> p1 text
<-- p2 text
----
form DISPLAY_GRID2 .
IF CH_CONTAINER1 IS INITIAL.
CREATE OBJECT CH_CONTAINER1
EXPORTING
CONTAINER_NAME = 'CH_CONTAINER1'.
CREATE OBJECT CH_GRID1
EXPORTING
I_PARENT = CH_CONTAINER1.
CALL METHOD CH_GRID1->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
I_STRUCTURE_NAME = 'MAKT'
CHANGING
IT_OUTTAB = IT_MAKT[].
ENDIF.
endform. " DISPLAY_GRID2
‎2008 Mar 12 7:31 AM