Hi,
Assuming you use cl_salv_table.
You can make a field "hotspot" using set_cell_type( if_salv_c_cell_type=>hotspot ).
You need to create a local class to catch EVENT link_click OF cl_salv_events_table .
The next code is from methods in my local class:
I do not have a ready made code to share(I will make one...) since I am using CL_GUI_ALV_GRID but the principle is the same.
*----------------------------------------------------------------------*
TYPES: BEGIN OF tp_text_x .
TYPES: tdname TYPE thead-tdname ,
tdobject TYPE thead-tdobject ,
tdid TYPE thead-tdid ,
tdspras TYPE thead-tdspras ,
tdtxtlines TYPE thead-tdtxtlines .
TYPES: tdline TYPE tline-tdline ,
it_tline TYPE tline_tab .
TYPES: END OF tp_text_x .
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
CLASS cl_event_receiver DEFINITION .
PUBLIC SECTION.
METHODS: hotspot_click
FOR EVENT hotspot_click OF cl_gui_alv_grid
IMPORTING e_row_id e_column_id es_row_no .
PRIVATE SECTION.
METHODS: close
FOR EVENT close OF cl_gui_dialogbox_container
IMPORTING sender.
METHODS: init_container .
METHODS: display_textedit
IMPORTING value(st_text_x) TYPE tp_text_x .
ENDCLASS . "cl_event_receiver DEFINITION
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
CLASS cl_event_receiver IMPLEMENTATION.
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
METHOD hotspot_click .
me->display_textedit( EXPORTING st_text_x = <st_alv_data_1>-text_1 ) .
ENDMETHOD . "hotspot_click
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
METHOD close .
CALL METHOD sender->set_visible
EXPORTING
visible = abap_false.
ENDMETHOD . "handle_close
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
METHOD init_container .
IF ob_gui_dialogbox_container IS NOT INITIAL .
me->close( EXPORTING sender = ob_gui_dialogbox_container ) .
ENDIF .
CREATE OBJECT ob_gui_dialogbox_container
EXPORTING
parent = cl_gui_container=>screen0
top = 40
left = 200
lifetime = cntl_lifetime_dynpro
width = 600
height = 100.
ENDMETHOD. "init_container
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
METHOD display_textedit .
me->init_container( ) .
DATA: ob_gui_textedit TYPE REF TO cl_gui_textedit .
CREATE OBJECT ob_gui_textedit
EXPORTING
parent = ob_gui_dialogbox_container.
CALL METHOD ob_gui_textedit->set_readonly_mode
EXPORTING
readonly_mode = cl_gui_textedit=>true.
DATA: it_tdline TYPE TABLE OF tdline .
DATA: st_tdline LIKE LINE OF it_tdline .
FIELD-SYMBOLS: <st_tline> LIKE LINE OF st_text_x-it_tline .
LOOP AT st_text_x-it_tline ASSIGNING <st_tline> .
APPEND <st_tline>-tdline TO it_tdline .
ENDLOOP .
CALL METHOD ob_gui_textedit->set_text_as_stream
EXPORTING
text = it_tdline.
ENDMETHOD. "display_textedit
*----------------------------------------------------------------------*
ENDCLASS . "cl_event_receiver IMPLEMENTATION