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: 

get cursor

Former Member
0 Kudos

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

1 ACCEPTED SOLUTION

Former Member
0 Kudos

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

3 REPLIES 3

Former Member
0 Kudos

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

Former Member
0 Kudos

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.

Former Member
0 Kudos

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.