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: 

ALV_Object Model HYPERLINK

Former Member
0 Kudos

Hello

I have done an ALV_OM using


GR_ALV TYPE REF TO CL_SALV_TABLE, 
CALL METHOD CL_SALV_TABLE=>FACTORY 
EXPORTING 
LIST_DISPLAY = IF_SALV_C_BOOL_SAP=>FALSE 
IMPORTING 
R_SALV_TABLE = GR_ALV 
CHANGING 
T_TABLE = IT_BOOK.

And now I would like when the user click on IT_BOOK-CARRID link to web-page.

Now I only can link to C:\Documents and Settings\SapWorkDir (This link is displayed by defect when you press IT_BOOK-CARRID)

and I would like change this link for "http://www.airberlin.com".

LR_COLUMNS->GET_HYPERLINK_ENTRY_COLUMN( ). 
LR_COLUMNS->SET_HYPERLINK_ENTRY_COLUMN( VALUE = 'IT_HYPERLINK' ).

I know that I can add a hyperlink but I am not clear how I have to use that.

CALL METHOD LR_HYPERLINKS->ADD_HYPERLINK 
* EXPORTING 
* HANDLE = LR_HANDLE 
* HYPERLINK = 'http://www.airberlin.com' 
* RECEIVING 
* VALUE = LR_HYPERLINK.

If somebody can help me.:)

THANKS

2 REPLIES 2

marcelo_ramos
Active Contributor
0 Kudos

Hi,

See the follow example. It demonstrates how to use a Hiperlink field in ALV. These example was based on 'SALV_DEMO_TABLE_COLUMNS' that contains Hiperlink, icon, Hotspot...

If you are trying to set up a hiperlink to open a local file, like 'C:Documents and SettingsSapWorkDir' you must use the same routine used on field 'Hotspot' of program 'SALV_DEMO_TABLE_COLUMNS'. this routine shows a message when you clicked on hotspot, but you can use 'CL_GUI_FRONTEND_SERVICES=>GUI_UPLOAD' Instead Message statement.


REPORT zsalv_mar NO STANDARD PAGE HEADING.

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.

  gr_table->display( ).

ENDFORM.                    " display

I Noted that is your first Post, so don't forget to read all posts <a href="http://www.sdn.sap.com/irj/sdn/wiki?path=/display/home/rules+of+engagement&">RULES</a> and close this thread when your question be answer !</b>

Regards.

Marcelo Ramos

Former Member
0 Kudos

Thanks, the code works ok.

It has been very useful

Best Regards.

Ana