10-22-2007 8:32 AM
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
10-22-2007 2:13 PM
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
10-24-2007 11:26 AM
Thanks, the code works ok.
It has been very useful
Best Regards.
Ana