Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

ALV double click handling

Former Member
0 Kudos

Hi

I display an ALV by Reuse_ALV_display_grid. Now I need to handle double click event on one column.

Pls Provide some code.

2 REPLIES 2

Former Member
0 Kudos

1. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = W_REPID

I_CALLBACK_PF_STATUS_SET = 'PF_STATUS'

I_CALLBACK_USER_COMMAND = <b>'USER_COMMAND'</b>

2. FORM USER_COMMAND USING P_UCOMM TYPE SY-UCOMM

P_SELFLD TYPE SLIS_SELFIELD.

DATA : L_REP_MODE. "report mode

CASE P_UCOMM.

<b>*when double clicked on ALV grid , report id is passed to transaction

WHEN '&IC1'. "Double click</b> READ TABLE IT_RAMS_SCR_FLDS INDEX P_SELFLD-TABINDEX.

ENDFORM.

Former Member
0 Kudos

Hi Praveen,

<b>Just copy paste this code......... to get your desired functionality.

This program definitely help you to solve ur problem.</b>

class lcl_event_receiver definition deferred.

DATA: OK_CODE LIKE SY-UCOMM,

code like ok_code,

G_CONTAINER(10),

GRID1 TYPE REF TO CL_GUI_ALV_GRID,

G_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER.

data g_control type ref to CL_GUI_CONTROL .

DATA:

FS_LAYOUT TYPE LVC_S_LAYO.

DATA:

T_SFLIGHT LIKE STANDARD TABLE OF SFLIGHT,

event_receiver type ref to lcl_event_receiver.

DATA:

T_SBOOK LIKE STANDARD TABLE OF SBOOK.

DATA:

INDEX TYPE I VALUE 1.

***************************************************************

  • LOCAL CLASSES: Definition

****************************************************************

*===============================================================

  • class lcl_event_receiver: local class to handle event DOUBLE_CLICK

class lcl_event_receiver definition.

public section.

methods:

handle_double_click

for event double_click of cl_gui_alv_grid

importing e_row e_column,

change_fcode

for event before_user_command of cl_gui_alv_grid

importing e_ucomm.

endclass.

class lcl_event_receiver implementation.

method handle_double_click.

data: ls_sflight like line of t_sflight.

CLEAR LS_SFLIGHT.

read table t_sflight index e_row-index into ls_sflight.

CLEAR E_ROW.

perform select_table_sbook using ls_sflight

changing t_sbook.

call screen 101 STARTING AT 10 5.

endmethod. "handle_double_click

method change_fcode.

CALL METHOD GRID1->set_user_command

exporting

I_UCOMM = '&SORT_ASC'.

call screen 101 STARTING AT 10 5.

endmethod.

endclass.

start-of-selection.

----


  • MAIN *

----


SELECT * FROM SFLIGHT INTO CORRESPONDING FIELDS OF TABLE T_SFLIGHT.

CALL SCREEN 100.

----


  • MODULE PBO OUTPUT *

----


MODULE PBO OUTPUT.

SET PF-STATUS 'MAIN100'.

G_CONTAINER = 'XYZ'.

IF G_CUSTOM_CONTAINER IS INITIAL.

CREATE OBJECT G_CUSTOM_CONTAINER

EXPORTING CONTAINER_NAME = G_CONTAINER.

CREATE OBJECT GRID1

EXPORTING I_PARENT = G_CUSTOM_CONTAINER.

CALL METHOD GRID1->SET_TABLE_FOR_FIRST_DISPLAY

EXPORTING I_STRUCTURE_NAME = 'SFLIGHT'

IS_LAYOUT = FS_LAYOUT

CHANGING IT_OUTTAB = T_SFLIGHT

.

ENDIF.

create object event_receiver.

set handler event_receiver->handle_double_click for grid1.

ENDMODULE.

----


  • MODULE PAI INPUT *

----


MODULE PAI INPUT.

CODE = OK_CODE.

CLEAR OK_CODE.

CASE CODE.

WHEN 'EXIT'.

leave program.

WHEN OTHERS.

  • do nothing

ENDCASE.

ENDMODULE.

&----


*& Module STATUS_0101 OUTPUT

&----


  • text

----


module STATUS_0101 output.

SET PF-STATUS 'MAIN100'.

  • SET TITLEBAR 'xxx'.

G_CONTAINER = 'NEW'.

IF INDEX EQ 1.

CREATE OBJECT G_CUSTOM_CONTAINER

EXPORTING CONTAINER_NAME = G_CONTAINER.

CREATE OBJECT GRID1

EXPORTING I_PARENT = G_CUSTOM_CONTAINER.

CALL METHOD GRID1->SET_TABLE_FOR_FIRST_DISPLAY

EXPORTING I_STRUCTURE_NAME = 'SBOOK'

CHANGING IT_OUTTAB = T_SBOOK

.

ENDIF.

ADD 1 TO INDEX.

CALL METHOD GRID1->refresh_table_display.

endmodule. " STATUS_0101 OUTPUT

&----


*& Module USER_COMMAND_0101 INPUT

&----


  • text

----


module USER_COMMAND_0101 input.

CODE = OK_CODE.

case code.

when 'EXIT'.

leave to screen 0.

endcase.

clear ok_code.

endmodule. " USER_COMMAND_0101 INPUT

&----


*& Form select_table_sbook

&----


  • text

----


  • -->P_LS_SFLIGHT text

  • <--P_GT_SBOOK text

----


form select_table_sbook using p_ls_sflight LIKE SFLIGHT

changing p_gt_sbook.

CLEAR T_SBOOK[].

SELECT *

FROM SBOOK

INTO CORRESPONDING FIELDS OF TABLE T_SBOOK

WHERE CARRID EQ P_LS_SFLIGHT-CARRID

AND CONNID EQ P_LS_SFLIGHT-CONNID

AND FLDATE EQ P_LS_SFLIGHT-FLDATE.

endform. " select_table_sbook

<b>Reward all helpful answers.</b>

Regards,

V.Raghavender.