Lets make the ALV interactive by adding the Hotspot aka Hyperlink into the ALV generated by SALV IDA by using the DISPLAY_OPTIONS for column.
Hotspot or Hyperlink is a key functionality for any ALV, no matter which ALV type you use – SALV Model, SALV IDA or Classical ALV. You now already know how to play with SALV IDA Column properties. In this article, lets take it further by adding a hyper link.
As always, this code lines are based on the template program which is available at SALV IDA Introduction.
Any hotspot functionality would be divided into two parts: Implementing the Hotspot, and Handling the action
SALV IDA Activate Hotspot
To activate the Hotspot, you would need to call the same method FIELD_CATALOG as we used in the SALV IDA Column Settings.
- Call method FIELD_CATALOG( ) to get the field catalog object
- Call method DISPLAY_OPTIONS( ) to get the display properties of the column
- Call method DISPLAY_AS_LINK_TO_ACTION( ) to activate the Hyperlink or Hotspot on the column. Provide the column name for which this is required.
SALV IDA Handle Hotspot
Once the Hotspot is added, we would need to handle it. It wont be handled by itself
To handle the Hotspot,
- Declare the event Handler for event CELL_ACTION of the interface IF_SALV_GUI_FIELD_DISPLAY_OPT
- Use statement SET HANDLER to handle this event handler for the DISPLAY_OPTIONS( ) object
Code lines to add and handle the hotspot on SALV IDA:
*$*$1 METHODS: activate_hot_spot, handle_hot_spot FOR EVENT cell_action OF if_salv_gui_field_display_opt IMPORTING ev_field_name eo_row_data. *$*$1 *$*$2 me->activate_hot_spot( ). *$*$2 *$*$3 METHOD activate_hot_spot. TRY. o_salv_ida->field_catalog( )->display_options( )->display_as_link_to_action( 'MSGNR' ). SET HANDLER me->handle_hot_spot FOR o_salv_ida->field_catalog( )->display_options( ). CATCH cx_salv_ida_unknown_name cx_salv_call_after_1st_display. ENDTRY. ENDMETHOD. METHOD handle_hot_spot. TYPES: BEGIN OF lty_wa. INCLUDE TYPE t100. INCLUDE TYPE lcl_t100_new_fields=>ty_t100_new_fields. TYPES: END OF lty_wa. DATA: ls_wa TYPE lty_wa. TRY. eo_row_data->get_row_data( EXPORTING iv_request_type = if_salv_gui_selection_ida=>cs_request_type-all_fields IMPORTING es_row = ls_wa ). cl_salv_ida_show_data_row=>display( iv_text = `Hyper Link for ` && ev_field_name && ` and value ` && ls_wa-msgnr is_data = ls_wa ). CATCH cx_salv_ida_contract_violation cx_salv_ida_sel_row_deleted. ENDTRY. ENDMETHOD. *$*$3
On the output screen, the hyperlink is displayed:
Once you click on the Hyperlink for the column MSGNR, you would get this small popup. This is generated by the another class CL_SALV_IDA_SHOW_DATA_ROW. The class contains the method DISPLAY to display the data for the single row.