10-01-2008 7:44 AM
how to get the cursor value on which user clicked from alv grid display.. my code is below..but still i'm not able to capture any values in fnam or fval.. i have placed my get stmt inside case stmt also..it is not capturing? help me..
&----
*& Form USER_COMMAND
&----
text
----
-->R_UCOMM text
-->RS_SELFIELD text
----
FORM USER_COMMAND USING R_UCOMM TYPE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
GET CURSOR FIELD FNAM VALUE FVAL.
CASE SY-UCOMM.
WHEN 'CREATE'.
CALL TRANSACTION 'ZKR001'.
WHEN 'AMEND'.
SET PARAMETER ID 'MAT' FIELD FNAM.
CALL TRANSACTION 'ZKR001'.
WHEN 'DISPLAY'.
SET PARAMETER ID 'MAT' FIELD FNAM.
CALL TRANSACTION 'ZKR001'.
WHEN 'COPY'.
WHEN 'PRINT'.
WHEN 'FIND'.
ENDCASE.
ENDFORM. "USER_COMMAND
10-01-2008 7:59 AM
Have you declared class -lcl_event_handler?
if not,please do that.
----
CLASS lcl_event_handler DEFINITION
----
*
----
CLASS lcl_event_handler DEFINITION .
PUBLIC SECTION .
METHODS:
*DOUBLE CLICK CONTROL
handle_double_click FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING e_row e_column es_row_no,
*HOTSPOT CLICK CONTROL
handle_hotspot_click FOR EVENT hotspot_click OF cl_gui_alv_grid
IMPORTING e_row_id e_column_id es_row_no.
PRIVATE SECTION.
ENDCLASS. "lcl_event_handler DEFINITION
----
CLASS lcl_event_handler IMPLEMENTATION
----
*
----
CLASS lcl_event_handler IMPLEMENTATION .
*Handle Double Click
METHOD handle_double_click .
PERFORM handle_double_click USING e_row e_column es_row_no.
ENDMETHOD . "HANDLE_DOUBLE_CLICK
*Handle Hotspot Click
METHOD handle_hotspot_click .
PERFORM handle_hotspot_click USING e_row_id e_column_id es_row_no .
ENDMETHOD . "HANDLE_HOTSPOT_CLICK
ENDCLASS . "lcl_event_handler IMPLEMENTATION
&----
*& Form HANDLE_DOUBLE_CLICK
&----
text
----
-->P_E_ROW text
-->P_E_COLUMN text
----
FORM handle_double_click USING i_row TYPE lvc_s_row
i_column TYPE lvc_s_col
is_row_no TYPE lvc_s_roid.
READ TABLE itab INDEX is_row_no-row_id .
"->> write ur code here
ENDFORM. " HANDLE_DOUBLE_CLICK
&----
*& Form HANDLE_HOTSPOT_CLICK
&----
text
----
-->P_E_ROW_ID text
-->P_E_COLUMN_ID text
-->P_ES_ROW_NO text
----
FORM handle_hotspot_click USING p_e_row_id TYPE lvc_s_row
p_e_column_id TYPE lvc_s_col
p_es_row_no TYPE lvc_s_roid.
READ TABLE itab INDEX p_es_row_no-row_id .
"->> write ur code here
ENDFORM. " HANDLE_HOTSPOT_CLICK
write below code in PBO-
CREATE OBJECT gr_event_handler .
SET HANDLER gr_event_handler->handle_double_click FOR alvgrid .
SET HANDLER gr_event_handler->handle_hotspot_click FOR alvgrid .
Regards,
Aparna
10-01-2008 7:59 AM
Have you declared class -lcl_event_handler?
if not,please do that.
----
CLASS lcl_event_handler DEFINITION
----
*
----
CLASS lcl_event_handler DEFINITION .
PUBLIC SECTION .
METHODS:
*DOUBLE CLICK CONTROL
handle_double_click FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING e_row e_column es_row_no,
*HOTSPOT CLICK CONTROL
handle_hotspot_click FOR EVENT hotspot_click OF cl_gui_alv_grid
IMPORTING e_row_id e_column_id es_row_no.
PRIVATE SECTION.
ENDCLASS. "lcl_event_handler DEFINITION
----
CLASS lcl_event_handler IMPLEMENTATION
----
*
----
CLASS lcl_event_handler IMPLEMENTATION .
*Handle Double Click
METHOD handle_double_click .
PERFORM handle_double_click USING e_row e_column es_row_no.
ENDMETHOD . "HANDLE_DOUBLE_CLICK
*Handle Hotspot Click
METHOD handle_hotspot_click .
PERFORM handle_hotspot_click USING e_row_id e_column_id es_row_no .
ENDMETHOD . "HANDLE_HOTSPOT_CLICK
ENDCLASS . "lcl_event_handler IMPLEMENTATION
&----
*& Form HANDLE_DOUBLE_CLICK
&----
text
----
-->P_E_ROW text
-->P_E_COLUMN text
----
FORM handle_double_click USING i_row TYPE lvc_s_row
i_column TYPE lvc_s_col
is_row_no TYPE lvc_s_roid.
READ TABLE itab INDEX is_row_no-row_id .
"->> write ur code here
ENDFORM. " HANDLE_DOUBLE_CLICK
&----
*& Form HANDLE_HOTSPOT_CLICK
&----
text
----
-->P_E_ROW_ID text
-->P_E_COLUMN_ID text
-->P_ES_ROW_NO text
----
FORM handle_hotspot_click USING p_e_row_id TYPE lvc_s_row
p_e_column_id TYPE lvc_s_col
p_es_row_no TYPE lvc_s_roid.
READ TABLE itab INDEX p_es_row_no-row_id .
"->> write ur code here
ENDFORM. " HANDLE_HOTSPOT_CLICK
write below code in PBO-
CREATE OBJECT gr_event_handler .
SET HANDLER gr_event_handler->handle_double_click FOR alvgrid .
SET HANDLER gr_event_handler->handle_hotspot_click FOR alvgrid .
Regards,
Aparna
10-01-2008 8:01 AM
HAVE U CALLED YOUR USER COMMAND FROM THE FUNCTION MODULE
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
VERIFY THE CODE ONCE.
ALSO PUT CASE R_UCOMM IN PLACE OF SY-UCOMM.
10-01-2008 8:06 AM
Instead you can go for another logic. Check for sy-ucomm and then read the value from the ALV output table,
FORM display_alv_output.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_callback_user_command = 'USER_COMMAND'
i_callback_pf_status_set = 'PFSTATUS'
it_fieldcat = t_fieldcat
is_layout = fs_layout
i_grid_title = text-via
TABLES
t_outtab = t_report_output.
ENDFORM. " DISPLAY_ALV_OUTPUT
In the USER_COMMAND form read the user clicked line and retreive the necessary data from the output table,
FORM user_command USING r_ucomm TYPE sy-ucomm
rs_selfield TYPE slis_selfield.
CASE r_ucomm.
WHEN '&IC1'.
READ TABLE t_report_output
INDEX rs_selfield-tabindex
INTO fs_report_output.
IF sy-subrc EQ 0.
SET PARAMETER ID c_parameter_id_lif
FIELD fs_report_output-lifnr.
CALL TRANSACTION c_transaction_fbl1n
AND SKIP FIRST SCREEN.
ENDIF. " IF SY-SUBRC EQ 0
ENDCASE. " CASE R_UCOMM
ENDFORM. " USER_COMMAND
Here &IC1 is the func. code for double click.