2007 Nov 01 5:14 AM
hi,
can any1 pls explain me the single click event LINK_CLICK in abap object.
does this single click event mean that if i click anywhere on my alv report it will trigger the event.
pls explain me about this LINK_CLICK event in details pls
2007 Nov 01 5:47 AM
hi
good
go through this link
http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCCITREE/BCCITREE.pdf
go through this code
REPORT zsalv_event_mar NO STANDARD PAGE HEADING.
INCLUDE <icon>.
----
CLASS lcl_alv DEFINITION
----
*
----
CLASS lcl_alv DEFINITION.
PUBLIC SECTION.
METHODS select_alv IMPORTING amount TYPE i.
METHODS display_alv.
METHODS on_link_click
FOR EVENT link_click OF cl_salv_events_table
IMPORTING row column.
METHODS on_double_click
FOR EVENT double_click OF cl_salv_events_table
IMPORTING row column.
PROTECTED SECTION.
DATA: o_table TYPE REF TO cl_salv_table,
o_columns TYPE REF TO cl_salv_columns_table,
o_column TYPE REF TO cl_salv_column_table,
o_events TYPE REF TO cl_salv_events_table.
DATA: BEGIN OF s_alv2.
INCLUDE TYPE alv_tab.
DATA: button TYPE icon_d,
END OF s_alv2.
DATA t_alv2 LIKE TABLE OF s_alv2.
ENDCLASS. "lcl_alv DEFINITION
----
CLASS lcl_alv IMPLEMENTATION
----
*
----
CLASS lcl_alv IMPLEMENTATION.
METHOD select_alv.
SELECT *
FROM alv_tab
INTO CORRESPONDING FIELDS OF TABLE t_alv2
UP TO amount ROWS.
LOOP AT t_alv2 INTO s_alv2.
MOVE icon_oo_class_event TO s_alv2-button.
MODIFY t_alv2 FROM s_alv2 INDEX sy-tabix.
ENDLOOP.
ENDMETHOD. "SELECT_ALV
METHOD display_alv.
TRY.
cl_salv_table=>factory(
IMPORTING
r_salv_table = o_table
CHANGING
t_table = t_alv2 ).
CATCH cx_salv_msg.
ENDTRY.
o_columns = o_table->get_columns( ).
o_columns->set_optimize( abap_true ).
TRY.
o_column ?= o_columns->get_column( 'CARRID' ).
o_column->set_cell_type( if_salv_c_cell_type=>hotspot ).
CATCH cx_salv_not_found.
ENDTRY.
TRY.
o_column ?= o_columns->get_column( 'BUTTON' ).
o_column->set_icon( if_salv_c_bool_sap=>true ).
o_column->set_cell_type( if_salv_c_cell_type=>hotspot ).
o_column->set_long_text( 'My Button' ).
CATCH cx_salv_not_found.
ENDTRY.
o_events = o_table->get_event( ).
SET HANDLER me->on_link_click FOR o_events.
SET HANDLER me->on_double_click FOR o_events.
o_table->display( ).
ENDMETHOD. "display_alv
METHOD on_link_click.
MESSAGE i000(0k) WITH 'You Clicked on Line'
row
'Of Column'
column.
ENDMETHOD. "on_single_click
METHOD on_double_click.
MESSAGE i000(0k) WITH 'You Double Clicked on Line'
row
'Of Column'
column.
ENDMETHOD. "on_double_click
ENDCLASS. "lcl_alv IMPLEMENTATION
DATA o_alv TYPE REF TO lcl_alv.
START-OF-SELECTION.
CREATE OBJECT o_alv.
o_alv->select_alv( 30 ).
o_alv->display_alv( ).
reward point if helpful.
thanks
mrutyun^
2007 Nov 01 5:21 AM
answered the similar question last week. You can see here Event
Link_click or ALV_Object Model HYPERLINK.
This example demonstrates how to use a Hiperlink field in ALV. These example was based on 'SALV_DEMO_TABLE_COLUMNS' that contains Hiperlink, icon, Hotspot...
The Code is:
REPORT zsalv_mar NO STANDARD PAGE HEADING.
*----
*
CLASS lcl_handle_events DEFINITION
*----
*
*
*----
*
CLASS lcl_handle_events DEFINITION.
PUBLIC SECTION.
METHODS:
on_link_click FOR EVENT link_click OF cl_salv_events_table
IMPORTING row column.
ENDCLASS. "lcl_handle_events DEFINITION
*----
*
CLASS lcl_handle_events IMPLEMENTATION
*----
*
*
*----
*
CLASS lcl_handle_events IMPLEMENTATION.
METHOD on_link_click.
DATA: l_row_string TYPE string,
l_col_string TYPE string,
l_row TYPE char128.
WRITE row TO l_row LEFT-JUSTIFIED.
CONCATENATE text-i02 l_row INTO l_row_string SEPARATED BY space.
CONCATENATE text-i03 column INTO l_col_string SEPARATED BY space.
MESSAGE i000(0k) WITH 'Single Click' l_row_string l_col_string.
ENDMETHOD. "on_single_click
ENDCLASS. "lcl_handle_events IMPLEMENTATION
DATA: gr_events TYPE REF TO lcl_handle_events.
TYPES: BEGIN OF g_type_s_outtab.
INCLUDE TYPE alv_tab.
TYPES: t_hyperlink TYPE salv_t_int4_column,
END OF g_type_s_outtab.
DATA: gt_outtab TYPE STANDARD TABLE OF g_type_s_outtab.
DATA: gr_table TYPE REF TO cl_salv_table.
TYPES: BEGIN OF g_type_s_hyperlink,
handle TYPE salv_de_hyperlink_handle,
hyperlink TYPE service_rl,
carrid TYPE s_carrid,
END OF g_type_s_hyperlink.
DATA: gt_hyperlink TYPE STANDARD TABLE OF g_type_s_hyperlink.
SELECTION-SCREEN BEGIN OF BLOCK gen WITH FRAME.
PARAMETERS: p_amount TYPE i DEFAULT 30.
SELECTION-SCREEN END OF BLOCK gen.
START-OF-SELECTION.
PERFORM select_data.
PERFORM display.
*&----
*
*& Form select_data
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM select_data .
DATA: line_outtab TYPE g_type_s_outtab,
ls_hype TYPE g_type_s_hyperlink,
lt_hyperlink TYPE salv_t_int4_column,
ls_hyperlink TYPE salv_s_int4_column,
v_tabix TYPE sytabix.
SELECT *
FROM alv_tab
INTO CORRESPONDING FIELDS OF TABLE gt_outtab
UP TO p_amount ROWS.
LOOP AT gt_outtab INTO line_outtab.
v_tabix = sy-tabix.
ls_hype-handle = sy-tabix.
ls_hype-hyperlink = line_outtab-url.
ls_hype-carrid = line_outtab-carrid.
INSERT ls_hype INTO TABLE gt_hyperlink.
ls_hyperlink-columnname = 'URL'.
ls_hyperlink-value = sy-tabix.
APPEND ls_hyperlink TO lt_hyperlink.
line_outtab-t_hyperlink = lt_hyperlink.
MODIFY gt_outtab FROM line_outtab INDEX v_tabix.
CLEAR line_outtab.
CLEAR lt_hyperlink.
CLEAR ls_hyperlink.
ENDLOOP.
ENDFORM. " select_data
*&----
*
*& Form display
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM display .
TRY.
cl_salv_table=>factory(
IMPORTING
r_salv_table = gr_table
CHANGING
t_table = gt_outtab ).
CATCH cx_salv_msg. "#EC NO_HANDLER
ENDTRY.
DATA: lr_functions TYPE REF TO cl_salv_functions_list.
lr_functions = gr_table->get_functions( ).
lr_functions->set_default( abap_true ).
*... set the columns technical
DATA: lr_columns TYPE REF TO cl_salv_columns_table,
lr_column TYPE REF TO cl_salv_column_table.
lr_columns = gr_table->get_columns( ).
lr_columns->set_optimize( abap_true ).
*... §4.7 set hyperlink column
DATA: lr_hyperlinks TYPE REF TO cl_salv_hyperlinks,
ls_hyperlink TYPE g_type_s_hyperlink.
DATA: lr_functional_settings TYPE REF TO cl_salv_functional_settings.
TRY.
lr_columns->set_hyperlink_entry_column( 'T_HYPERLINK' ).
CATCH cx_salv_data_error. "#EC NO_HANDLER
ENDTRY.
TRY.
lr_column ?= lr_columns->get_column( 'URL' ).
lr_column->set_cell_type( if_salv_c_cell_type=>link ).
lr_column->set_long_text( 'URL' ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
lr_functional_settings = gr_table->get_functional_settings( ).
lr_hyperlinks = lr_functional_settings->get_hyperlinks( ).
LOOP AT gt_hyperlink INTO ls_hyperlink.
TRY.
lr_hyperlinks->add_hyperlink(
handle = ls_hyperlink-handle
hyperlink = ls_hyperlink-hyperlink ).
CATCH cx_salv_existing. "#EC NO_HANDLER
ENDTRY.
ENDLOOP.
DATA: lr_events TYPE REF TO cl_salv_events_table.
lr_events = gr_table->get_event( ).
CREATE OBJECT gr_events.
SET HANDLER gr_events->on_link_click FOR lr_events.
gr_table->display( ).
ENDFORM. " display
2007 Nov 01 5:23 AM
i have done everything what u have done in ur sample program,except for the hyperlink thing,can u tell me what is that and is that essential for LINK_CLICK event
2007 Nov 01 5:47 AM
hi
good
go through this link
http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCCITREE/BCCITREE.pdf
go through this code
REPORT zsalv_event_mar NO STANDARD PAGE HEADING.
INCLUDE <icon>.
----
CLASS lcl_alv DEFINITION
----
*
----
CLASS lcl_alv DEFINITION.
PUBLIC SECTION.
METHODS select_alv IMPORTING amount TYPE i.
METHODS display_alv.
METHODS on_link_click
FOR EVENT link_click OF cl_salv_events_table
IMPORTING row column.
METHODS on_double_click
FOR EVENT double_click OF cl_salv_events_table
IMPORTING row column.
PROTECTED SECTION.
DATA: o_table TYPE REF TO cl_salv_table,
o_columns TYPE REF TO cl_salv_columns_table,
o_column TYPE REF TO cl_salv_column_table,
o_events TYPE REF TO cl_salv_events_table.
DATA: BEGIN OF s_alv2.
INCLUDE TYPE alv_tab.
DATA: button TYPE icon_d,
END OF s_alv2.
DATA t_alv2 LIKE TABLE OF s_alv2.
ENDCLASS. "lcl_alv DEFINITION
----
CLASS lcl_alv IMPLEMENTATION
----
*
----
CLASS lcl_alv IMPLEMENTATION.
METHOD select_alv.
SELECT *
FROM alv_tab
INTO CORRESPONDING FIELDS OF TABLE t_alv2
UP TO amount ROWS.
LOOP AT t_alv2 INTO s_alv2.
MOVE icon_oo_class_event TO s_alv2-button.
MODIFY t_alv2 FROM s_alv2 INDEX sy-tabix.
ENDLOOP.
ENDMETHOD. "SELECT_ALV
METHOD display_alv.
TRY.
cl_salv_table=>factory(
IMPORTING
r_salv_table = o_table
CHANGING
t_table = t_alv2 ).
CATCH cx_salv_msg.
ENDTRY.
o_columns = o_table->get_columns( ).
o_columns->set_optimize( abap_true ).
TRY.
o_column ?= o_columns->get_column( 'CARRID' ).
o_column->set_cell_type( if_salv_c_cell_type=>hotspot ).
CATCH cx_salv_not_found.
ENDTRY.
TRY.
o_column ?= o_columns->get_column( 'BUTTON' ).
o_column->set_icon( if_salv_c_bool_sap=>true ).
o_column->set_cell_type( if_salv_c_cell_type=>hotspot ).
o_column->set_long_text( 'My Button' ).
CATCH cx_salv_not_found.
ENDTRY.
o_events = o_table->get_event( ).
SET HANDLER me->on_link_click FOR o_events.
SET HANDLER me->on_double_click FOR o_events.
o_table->display( ).
ENDMETHOD. "display_alv
METHOD on_link_click.
MESSAGE i000(0k) WITH 'You Clicked on Line'
row
'Of Column'
column.
ENDMETHOD. "on_single_click
METHOD on_double_click.
MESSAGE i000(0k) WITH 'You Double Clicked on Line'
row
'Of Column'
column.
ENDMETHOD. "on_double_click
ENDCLASS. "lcl_alv IMPLEMENTATION
DATA o_alv TYPE REF TO lcl_alv.
START-OF-SELECTION.
CREATE OBJECT o_alv.
o_alv->select_alv( 30 ).
o_alv->display_alv( ).
reward point if helpful.
thanks
mrutyun^