salv_table - dwa hotspoty

Jeśli programujesz, administrujesz, integrujesz i masz wątpliwość lub obawę, to właśnie najlepsze miejsce dla Ciebie. Pisz śmiało...
emil
Posty: 82
Rejestracja: pt gru 27, 2019 11:02 am
Has thanked: 19 times
Been thanked: 25 times

salv_table - dwa hotspoty

Post autor: emil »

Dziś będzie nieco dłuższy wywód ;)

Słowo wstępu: korzystam z bloga zevolving, w mojej ocenie jest on jednym z najczytelniejszych źródeł informacji na temat salv_table.
Szczególnie wygodne jest to, jak do podstawy kodu:
http://zevolving.com/2008/09/salv-table ... e-display/
...można dorzucić kolejne rzeczy, budując własny szablon alv. Dziś chciałbym pochylić się nad obsługą dwóch hotspotów, z którymi mam problem.
Zacznijmy od uruchomienia pierwszego hotspota, dodając do bazy z powyższego linku, odpowiedni kod z linku poniższego:
http://zevolving.com/2008/09/salv-table ... e-hotspot/

"Sklejając" alv z hotspotem wg zevolvingowych wytycznych, otrzymuję w pełni działający kod, który na ten moment ogarnia temat przechwycenia kliknięcia i daje możliwości dalszego rozwoju programu:

Kod: Zaznacz cały

*&---------------------------------------------------------------------*
*& Report Z_SALV_DWA_HOTSPOTY
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT Z_SALV_DWA_HOTSPOTY.

*
*----------------------------------------------------------------------*
*       CLASS lcl_report DEFINITION
*----------------------------------------------------------------------*
CLASS lcl_report DEFINITION.
*
  PUBLIC SECTION.
*
*   Final output table
    TYPES: BEGIN OF ty_icon,


      NAME TYPE icon-name,
      oleng  TYPE icon-oleng,
      internal TYPE icon-internal,
      END   OF ty_icon.
*
    DATA: t_icon TYPE STANDARD TABLE OF ty_icon.
*
*   ALV reference
    DATA: o_alv TYPE REF TO cl_salv_table.
*
    METHODS:
*     data selection
      get_data,
*
*     Generating output
      generate_output.
*
*$*$*.....CODE_ADD_1 - Begin..................................1..*$*$*
*
*    In this section we will define the private methods which can
*      be implemented to set the properties of the ALV and can be
*      called in the

  PRIVATE SECTION.
*   Set the various column properties
    METHODS:
      set_hotspot_name
        CHANGING
          co_alv   TYPE REF TO cl_salv_table
          co_report TYPE REF TO lcl_report.
*
*   Event Handler for HOTSPOT event
    METHODS:
      on_link_click_name
        FOR EVENT link_click OF cl_salv_events_table
          IMPORTING
            row
            column  .

*
*$*$*.....CODE_ADD_1 - End....................................1..*$*$*
*
ENDCLASS.                    "lcl_report DEFINITION
*
*
START-OF-SELECTION.
  DATA: lo_report TYPE REF TO lcl_report.
*
  CREATE OBJECT lo_report.
*
  lo_report->get_data( ).
*
  lo_report->generate_output( ).
*
*----------------------------------------------------------------------*
*       CLASS lcl_report IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS lcl_report IMPLEMENTATION.
*
  METHOD get_data.
*   data selection
    SELECT NAME oleng internal
           INTO  TABLE t_icon
           FROM  icon
           UP TO 20 ROWS.
*
  ENDMETHOD.                    "get_data
*
*.......................................................................
  METHOD generate_output.
* New ALV instance
*   We are calling the static Factory method which will give back
*   the ALV object reference.
*
* exception class
    DATA: lx_msg TYPE REF TO cx_salv_msg.
    TRY.
        cl_salv_table=>factory(
          IMPORTING
            r_salv_table = o_alv
          CHANGING
            t_table      = t_icon ).
      CATCH cx_salv_msg INTO lx_msg.
    ENDTRY.
*
*$*$*.....CODE_ADD_2 - Begin..................................2..*$*$*
*
*    In this area we will call the methods which will set the
*      different properties to the ALV
*
*   Set Up the Hotspot & Event Handler
    CALL METHOD set_hotspot_name
      CHANGING
        co_alv    = o_alv
        co_report = lo_report.


*$*$*.....CODE_ADD_2 - End....................................2..*$*$*
*
*
* Displaying the ALV
*   Here we will call the DISPLAY method to get the output on the screen
    o_alv->display( ).
*
  ENDMETHOD.                    "generate_output
*
*$*$*.....CODE_ADD_3 - Begin..................................3..*$*$*
*
*    In this area we will implement the methods which are defined in
*      the class definition

METHOD set_hotspot_name.
*
*...HotSpot
    DATA: lo_cols_tab TYPE REF TO cl_salv_columns_table,
          lo_col_tab  TYPE REF TO cl_salv_column_table.
*
*   get Columns object
    lo_cols_tab = co_alv->get_columns( ).
*
*   Get VBELN column
    TRY.
        lo_col_tab ?= lo_cols_tab->get_column( 'NAME' ).
      CATCH cx_salv_not_found.
    ENDTRY.
*
*   Set the HotSpot for VBELN Column
    TRY.
        CALL METHOD lo_col_tab->set_cell_type
          EXPORTING
            value = if_salv_c_cell_type=>hotspot.
        .
      CATCH cx_salv_data_error .
    ENDTRY.
*
*...Events
    DATA: lo_events TYPE REF TO cl_salv_events_table.
*
*   all events
    lo_events = o_alv->get_event( ).
*
*   event handler
    SET HANDLER co_report->on_link_click_name FOR lo_events.
*
  ENDMETHOD.                    "set_hotspot_vbeln
*
* Handles the UI on the VBELN (HotSpot)
  METHOD on_link_click_name.
*
    DATA: la_icon TYPE ty_icon.
*
*   Get the Sales Order number from the table
    READ TABLE lo_report->t_icon INTO la_icon INDEX row.
    IF la_icon-name IS NOT INITIAL.
      MESSAGE i398(00) WITH 'You have selected' la_icon-name.
    ENDIF.
*
  ENDMETHOD.                    "on_link_click

*$*$*.....CODE_ADD_3 - End....................................3..*$*$*
*
*
ENDCLASS.                    "lcl_report IMPLEMENTATION
Problem polega na tym, że chciałbym dorzucić do drugiej kolumny (OLENG) drugiego hotspota.
Teraz zabłysnę nieznajomością OO, przez którą nie jestem w stanie zrozumieć, co źle robię.

By obsłużyć kolumnę OLENG, tworzę dwie metody: set_hotspot_oleng i on_link_click_oleng.

Kod: Zaznacz cały

*   Set the various column properties
    METHODS:
      set_hotspot_oleng
        CHANGING
          co_alv   TYPE REF TO cl_salv_table
          co_report TYPE REF TO lcl_report.
*
*   Event Handler for HOTSPOT event
    METHODS:
      on_link_click_oleng
        FOR EVENT link_click OF cl_salv_events_table
          IMPORTING
            row
            column  .
Jak rozumiem, pierwsza tworzy hotspot, druga obsłuży kliknięcie.

Dorzucam także wywołanie metody set_hotspot_oleng, by hotspot ogólnie "ruszył":

Kod: Zaznacz cały

    CALL METHOD set_hotspot_oleng
      CHANGING
        co_alv    = o_alv
        co_report = lo_report.
Bazując na istniejącej dla pierwszego hotspota metodzie set_hotspot_name, tworzę implementację dla set_hotspot_oleng:

Kod: Zaznacz cały

METHOD set_hotspot_oleng.
*
*...HotSpot
    DATA: lo_cols_tab TYPE REF TO cl_salv_columns_table,
          lo_col_tab  TYPE REF TO cl_salv_column_table.
*
*   get Columns object
    lo_cols_tab = co_alv->get_columns( ).
*
*   Get VBELN column
    TRY.
        lo_col_tab ?= lo_cols_tab->get_column( 'OLENG' ).
      CATCH cx_salv_not_found.
    ENDTRY.
*
*   Set the HotSpot for VBELN Column
    TRY.
        CALL METHOD lo_col_tab->set_cell_type
          EXPORTING
            value = if_salv_c_cell_type=>hotspot.
        .
      CATCH cx_salv_data_error .
    ENDTRY.
*
*...Events
    DATA: lo_events TYPE REF TO cl_salv_events_table.
*
*   all events
    lo_events = o_alv->get_event( ).
*
*   event handler
    SET HANDLER co_report->on_link_click_oleng FOR lo_events.
*
  ENDMETHOD.
Podobnie tworzę implementację dla on_link_click_oleng:

Kod: Zaznacz cały

  METHOD on_link_click_oleng.
*
    DATA: la_icon TYPE ty_icon.
*
*   Get the Sales Order number from the table
    READ TABLE lo_report->t_icon INTO la_icon INDEX row.
    IF la_icon-oleng IS NOT INITIAL.
      MESSAGE i398(00) WITH 'You have selected' la_icon-oleng.
    ENDIF.
*
  ENDMETHOD.
Kompletny kod tego co stworzyłem, poniżej:

Kod: Zaznacz cały

*&---------------------------------------------------------------------*
*& Report Z_SALV_DWA_HOTSPOTY
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT Z_SALV_DWA_HOTSPOTY.

*
*----------------------------------------------------------------------*
*       CLASS lcl_report DEFINITION
*----------------------------------------------------------------------*
CLASS lcl_report DEFINITION.
*
  PUBLIC SECTION.
*
*   Final output table
    TYPES: BEGIN OF ty_icon,


      NAME TYPE icon-name,
      oleng  TYPE icon-oleng,
      internal TYPE icon-internal,
      END   OF ty_icon.
*
    DATA: t_icon TYPE STANDARD TABLE OF ty_icon.
*
*   ALV reference
    DATA: o_alv TYPE REF TO cl_salv_table.
*
    METHODS:
*     data selection
      get_data,
*
*     Generating output
      generate_output.
*
*$*$*.....CODE_ADD_1 - Begin..................................1..*$*$*
*
*    In this section we will define the private methods which can
*      be implemented to set the properties of the ALV and can be
*      called in the

  PRIVATE SECTION.
*   Set the various column properties
    METHODS:
      set_hotspot_name
        CHANGING
          co_alv   TYPE REF TO cl_salv_table
          co_report TYPE REF TO lcl_report.
*
*   Event Handler for HOTSPOT event
    METHODS:
      on_link_click_name
        FOR EVENT link_click OF cl_salv_events_table
          IMPORTING
            row
            column  .

*************************************************

*   Set the various column properties
    METHODS:
      set_hotspot_oleng
        CHANGING
          co_alv   TYPE REF TO cl_salv_table
          co_report TYPE REF TO lcl_report.
*
*   Event Handler for HOTSPOT event
    METHODS:
      on_link_click_oleng
        FOR EVENT link_click OF cl_salv_events_table
          IMPORTING
            row
            column  .


*
*$*$*.....CODE_ADD_1 - End....................................1..*$*$*
*
ENDCLASS.                    "lcl_report DEFINITION
*
*
START-OF-SELECTION.
  DATA: lo_report TYPE REF TO lcl_report.
*
  CREATE OBJECT lo_report.
*
  lo_report->get_data( ).
*
  lo_report->generate_output( ).
*
*----------------------------------------------------------------------*
*       CLASS lcl_report IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS lcl_report IMPLEMENTATION.
*
  METHOD get_data.
*   data selection
    SELECT NAME oleng internal
           INTO  TABLE t_icon
           FROM  icon
           UP TO 20 ROWS.
*
  ENDMETHOD.                    "get_data
*
*.......................................................................
  METHOD generate_output.
* New ALV instance
*   We are calling the static Factory method which will give back
*   the ALV object reference.
*
* exception class
    DATA: lx_msg TYPE REF TO cx_salv_msg.
    TRY.
        cl_salv_table=>factory(
          IMPORTING
            r_salv_table = o_alv
          CHANGING
            t_table      = t_icon ).
      CATCH cx_salv_msg INTO lx_msg.
    ENDTRY.
*
*$*$*.....CODE_ADD_2 - Begin..................................2..*$*$*
*
*    In this area we will call the methods which will set the
*      different properties to the ALV
*
*   Set Up the Hotspot & Event Handler
    CALL METHOD set_hotspot_name
      CHANGING
        co_alv    = o_alv
        co_report = lo_report.


    CALL METHOD set_hotspot_oleng
      CHANGING
        co_alv    = o_alv
        co_report = lo_report.

*$*$*.....CODE_ADD_2 - End....................................2..*$*$*
*
*
* Displaying the ALV
*   Here we will call the DISPLAY method to get the output on the screen
    o_alv->display( ).
*
  ENDMETHOD.                    "generate_output
*
*$*$*.....CODE_ADD_3 - Begin..................................3..*$*$*
*
*    In this area we will implement the methods which are defined in
*      the class definition

METHOD set_hotspot_name.
*
*...HotSpot
    DATA: lo_cols_tab TYPE REF TO cl_salv_columns_table,
          lo_col_tab  TYPE REF TO cl_salv_column_table.
*
*   get Columns object
    lo_cols_tab = co_alv->get_columns( ).
*
*   Get VBELN column
    TRY.
        lo_col_tab ?= lo_cols_tab->get_column( 'NAME' ).
      CATCH cx_salv_not_found.
    ENDTRY.
*
*   Set the HotSpot for VBELN Column
    TRY.
        CALL METHOD lo_col_tab->set_cell_type
          EXPORTING
            value = if_salv_c_cell_type=>hotspot.
        .
      CATCH cx_salv_data_error .
    ENDTRY.
*
*...Events
    DATA: lo_events TYPE REF TO cl_salv_events_table.
*
*   all events
    lo_events = o_alv->get_event( ).
*
*   event handler
    SET HANDLER co_report->on_link_click_name FOR lo_events.
*
  ENDMETHOD.                    "set_hotspot_vbeln


  METHOD set_hotspot_oleng.
*
*...HotSpot
    DATA: lo_cols_tab TYPE REF TO cl_salv_columns_table,
          lo_col_tab  TYPE REF TO cl_salv_column_table.
*
*   get Columns object
    lo_cols_tab = co_alv->get_columns( ).
*
*   Get VBELN column
    TRY.
        lo_col_tab ?= lo_cols_tab->get_column( 'OLENG' ).
      CATCH cx_salv_not_found.
    ENDTRY.
*
*   Set the HotSpot for VBELN Column
    TRY.
        CALL METHOD lo_col_tab->set_cell_type
          EXPORTING
            value = if_salv_c_cell_type=>hotspot.
        .
      CATCH cx_salv_data_error .
    ENDTRY.
*
*...Events
    DATA: lo_events TYPE REF TO cl_salv_events_table.
*
*   all events
    lo_events = o_alv->get_event( ).
*
*   event handler
    SET HANDLER co_report->on_link_click_oleng FOR lo_events.
*
  ENDMETHOD.


  METHOD on_link_click_oleng.
*
    DATA: la_icon TYPE ty_icon.
*
*   Get the Sales Order number from the table
    READ TABLE lo_report->t_icon INTO la_icon INDEX row.
    IF la_icon-oleng IS NOT INITIAL.
      MESSAGE i398(00) WITH 'You have selected' la_icon-oleng.
    ENDIF.
*
  ENDMETHOD.
*
* Handles the UI on the VBELN (HotSpot)
  METHOD on_link_click_name.
*
    DATA: la_icon TYPE ty_icon.
*
*   Get the Sales Order number from the table
    READ TABLE lo_report->t_icon INTO la_icon INDEX row.
    IF la_icon-name IS NOT INITIAL.
      MESSAGE i398(00) WITH 'You have selected' la_icon-name.
    ENDIF.
*
  ENDMETHOD.                    "on_link_click

*$*$*.....CODE_ADD_3 - End....................................3..*$*$*
*
*
ENDCLASS.                    "lcl_report IMPLEMENTATION
Gdzie jest problem? Mam dwa hotspoty, ale...
1.png
Kliknięcie w którykolwiek z nich, uruchamia mi od razu reakcję na oba kliknięcia, czyli dostaję alert po alercie:
2.png
3.png
Nie jestem sobie w stanie poradzić z odseparowaniem reakcji na jeden i drugi hotspot (w docelowym raporcie, po kliknięciach w hotspot1 i hotspot2, mają się wykonać różne akcje).

Czy może mi ktoś wyjaśnić, dlaczego tak się dzieje i jak sobie z tym poradzić?
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
ZETKA
Posty: 68
Rejestracja: czw lis 04, 2010 10:49 pm
Has thanked: 1 time
Been thanked: 66 times

Re: salv_table - dwa hotspoty

Post autor: ZETKA »

Zdarzenie link_click ma paramert column - po nim wiadomo, w której kolumnie kliknęliśmy hotspot. W klasie handlera zwykle deklarujemy jedną metodę obsługi zdarzenia link_click z CASE'm na column
Pozdrawiam,
Krzysiek
K602
Posty: 18
Rejestracja: śr sie 24, 2022 11:50 am
Has thanked: 11 times
Been thanked: 16 times

Re: salv_table - dwa hotspoty

Post autor: K602 »

Podsumowując, obsługę zdarzenia kliknięcia robisz w jednej metodzie dla całej ALV, a który to wiersz czy kolumna, mówią parametry row/column.

Potwierdzam, ich tutoriale są najbardziej przystępnie i jasno napisane.
SAP ABAP Certified Developer | Chief Specialist
emil
Posty: 82
Rejestracja: pt gru 27, 2019 11:02 am
Has thanked: 19 times
Been thanked: 25 times

Re: salv_table - dwa hotspoty

Post autor: emil »

ZETKA pisze: wt sie 30, 2022 8:27 am Zdarzenie link_click ma paramert column - po nim wiadomo, w której kolumnie kliknęliśmy hotspot. W klasie handlera zwykle deklarujemy jedną metodę obsługi zdarzenia link_click z CASE'm na column
I o to chodziło...
Zostawiłem jedną metodę on_link_click i nią ogarniam NAME i OLENG:

Kod: Zaznacz cały

  METHOD on_link_click.
*
    DATA: la_icon TYPE ty_icon.
*
    case column.
      when 'NAME'.
            READ TABLE lo_report->t_icon INTO la_icon INDEX row.
            IF la_icon-name IS NOT INITIAL.
              MESSAGE i398(00) WITH 'You have selected' la_icon-name.
            ENDIF.
      when 'OLENG'.
            READ TABLE lo_report->t_icon INTO la_icon INDEX row.
            IF la_icon-name IS NOT INITIAL.
              MESSAGE i398(00) WITH 'You have selected' la_icon-OLENG.
            ENDIF.
    ENDCASE.

  ENDMETHOD.  

Pełny kod (dla potomnych) poniżej:

Kod: Zaznacz cały

*&---------------------------------------------------------------------*
*& Report Z_SALV_DWA_HOTSPOTY
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT Z_SALV_DWA_HOTSPOTY.

*
*----------------------------------------------------------------------*
*       CLASS lcl_report DEFINITION
*----------------------------------------------------------------------*
CLASS lcl_report DEFINITION.
*
  PUBLIC SECTION.
*
*   Final output table
    TYPES: BEGIN OF ty_icon,


      NAME TYPE icon-name,
      oleng  TYPE icon-oleng,
      internal TYPE icon-internal,
      END   OF ty_icon.
*
    DATA: t_icon TYPE STANDARD TABLE OF ty_icon.
*
*   ALV reference
    DATA: o_alv TYPE REF TO cl_salv_table.
*
    METHODS:
*     data selection
      get_data,
*
*     Generating output
      generate_output.
*
*$*$*.....CODE_ADD_1 - Begin..................................1..*$*$*
*
*    In this section we will define the private methods which can
*      be implemented to set the properties of the ALV and can be
*      called in the

  PRIVATE SECTION.
*   Set the various column properties
    METHODS:
      set_hotspot_name
        CHANGING
          co_alv   TYPE REF TO cl_salv_table
          co_report TYPE REF TO lcl_report.
*
*   Event Handler for HOTSPOT event
    METHODS:
      on_link_click
        FOR EVENT link_click OF cl_salv_events_table
          IMPORTING
            row
            column  .

*************************************************

*   Set the various column properties
    METHODS:
      set_hotspot_oleng
        CHANGING
          co_alv   TYPE REF TO cl_salv_table
          co_report TYPE REF TO lcl_report.
*
*$*$*.....CODE_ADD_1 - End....................................1..*$*$*
*
ENDCLASS.                    "lcl_report DEFINITION
*
*
START-OF-SELECTION.
  DATA: lo_report TYPE REF TO lcl_report.
*
  CREATE OBJECT lo_report.
*
  lo_report->get_data( ).
*
  lo_report->generate_output( ).
*
*----------------------------------------------------------------------*
*       CLASS lcl_report IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS lcl_report IMPLEMENTATION.
*
  METHOD get_data.
*   data selection
    SELECT NAME oleng internal
           INTO  TABLE t_icon
           FROM  icon
           UP TO 20 ROWS.
*
  ENDMETHOD.                    "get_data
*
*.......................................................................
  METHOD generate_output.
* New ALV instance
*   We are calling the static Factory method which will give back
*   the ALV object reference.
*
* exception class
    DATA: lx_msg TYPE REF TO cx_salv_msg.
    TRY.
        cl_salv_table=>factory(
          IMPORTING
            r_salv_table = o_alv
          CHANGING
            t_table      = t_icon ).
      CATCH cx_salv_msg INTO lx_msg.
    ENDTRY.
*
*$*$*.....CODE_ADD_2 - Begin..................................2..*$*$*
*
*    In this area we will call the methods which will set the
*      different properties to the ALV
*
*   Set Up the Hotspot & Event Handler
    CALL METHOD set_hotspot_name
      CHANGING
        co_alv    = o_alv
        co_report = lo_report.


    CALL METHOD set_hotspot_oleng
      CHANGING
        co_alv    = o_alv
        co_report = lo_report.

*$*$*.....CODE_ADD_2 - End....................................2..*$*$*
*
*
* Displaying the ALV
*   Here we will call the DISPLAY method to get the output on the screen
    o_alv->display( ).
*
  ENDMETHOD.                    "generate_output
*
*$*$*.....CODE_ADD_3 - Begin..................................3..*$*$*
*
*    In this area we will implement the methods which are defined in
*      the class definition

METHOD set_hotspot_name.
*
*...HotSpot
    DATA: lo_cols_tab TYPE REF TO cl_salv_columns_table,
          lo_col_tab  TYPE REF TO cl_salv_column_table.
*
*   get Columns object
    lo_cols_tab = co_alv->get_columns( ).
*
*   Get VBELN column
    TRY.
        lo_col_tab ?= lo_cols_tab->get_column( 'NAME' ).
      CATCH cx_salv_not_found.
    ENDTRY.
*
*   Set the HotSpot for VBELN Column
    TRY.
        CALL METHOD lo_col_tab->set_cell_type
          EXPORTING
            value = if_salv_c_cell_type=>hotspot.
        .
      CATCH cx_salv_data_error .
    ENDTRY.
*
*...Events
    DATA: lo_events TYPE REF TO cl_salv_events_table.
*
*   all events
    lo_events = o_alv->get_event( ).
*
*   event handler
    SET HANDLER co_report->on_link_click FOR lo_events.
*
  ENDMETHOD.                    "set_hotspot_vbeln


  METHOD set_hotspot_oleng.
*
*...HotSpot
    DATA: lo_cols_tab TYPE REF TO cl_salv_columns_table,
          lo_col_tab  TYPE REF TO cl_salv_column_table.
*
*   get Columns object
    lo_cols_tab = co_alv->get_columns( ).
*
*   Get VBELN column
    TRY.
        lo_col_tab ?= lo_cols_tab->get_column( 'OLENG' ).
      CATCH cx_salv_not_found.
    ENDTRY.
*
*   Set the HotSpot for VBELN Column
    TRY.
        CALL METHOD lo_col_tab->set_cell_type
          EXPORTING
            value = if_salv_c_cell_type=>hotspot.
        .
      CATCH cx_salv_data_error .
    ENDTRY.
*
*...Events
    DATA: lo_events TYPE REF TO cl_salv_events_table.
*
*   all events
    lo_events = o_alv->get_event( ).
*
*   event handler
    SET HANDLER co_report->on_link_click FOR lo_events.
*
  ENDMETHOD.


  METHOD on_link_click.
*
    DATA: la_icon TYPE ty_icon.
*
    case column.
      when 'NAME'.
            READ TABLE lo_report->t_icon INTO la_icon INDEX row.
            IF la_icon-name IS NOT INITIAL.
              MESSAGE i398(00) WITH 'You have selected' la_icon-name.
            ENDIF.
      when 'OLENG'.
            READ TABLE lo_report->t_icon INTO la_icon INDEX row.
            IF la_icon-name IS NOT INITIAL.
              MESSAGE i398(00) WITH 'You have selected' la_icon-OLENG.
            ENDIF.
    ENDCASE.

  ENDMETHOD.                    "on_link_click

*$*$*.....CODE_ADD_3 - End....................................3..*$*$*
*
*
ENDCLASS.                    "lcl_report IMPLEMENTATION
Dziękuję za pomoc :)