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: 

event handling in abap objects

Former Member
0 Kudos

hello friends,

i want to use the event RAISE_LINK_CLICK for single click.

but i dont want 2 use this event for alv table.

i am displaying vendor name in my top of page,if the user click of the vendor name a new window should pop-up displaying the vendor details.

my code for top of page is

DATA: lr_grid TYPE REF TO cl_salv_form_layout_grid,

lr_grid_1 TYPE REF TO cl_salv_form_layout_grid,

lr_flow TYPE REF TO cl_salv_form_layout_flow,

lr_label TYPE REF TO cl_salv_form_label,

lr_text TYPE REF TO cl_salv_form_text,

l_text TYPE string.

CREATE OBJECT lr_grid.

lr_grid_1 = lr_grid->create_grid( row = 1 column = 1 ).

lr_text = lr_grid_1->create_text( row = 1 column = 1 colspan = 2 text = <b>vendor_name</b> ).

lr_grid_1 = lr_grid->create_grid( row = 2 column = 1 ).

lr_flow = lr_grid_1->create_flow( row = 2 column = 1 ).

lr_text = lr_flow->create_text( text = 'Reconcillation Statement'(t02) tooltip = 'Reconcillation Statement'(t02) ).

alv->set_top_of_list( lr_grid ).

do uc the VENDOR NAME in bold,wen the user clicks on it the pop should appear.

so how to use the event RAISE_LINK_CLICK for this purpose,or is there another way through

1 REPLY 1

marcelo_ramos
Active Contributor
0 Kudos

Hi Amit,

I answered the similar question last week. You can see here or .

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

Regards.

Marcelo Ramos