Application Development and Automation 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: 
Read only

single click in abap objects

Former Member
0 Kudos
1,586

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

1 ACCEPTED SOLUTION
Read only

Former Member
0 Kudos
729

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^

3 REPLIES 3
Read only

Former Member
0 Kudos
729

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

Read only

0 Kudos
729

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

Read only

Former Member
0 Kudos
730

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^