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 Hoptspot Help

former_member213491
Participant
0 Kudos

Hallo Expert,

i have create a programm but not function my hotspot link_click please help me.

TYPES: BEGIN OF  ty_outtab,

         pernr       LIKE pa0002-pernr,

         begda       LIKE pa0002-begda,

         endda       LIKE pa0002-endda,

         vorna       LIKE pa0002-vorna,

         nachn       LIKE pa0002-nachn,

       END   OF ty_outtab.

DATA: gt_outtab     TYPE STANDARD TABLE OF ty_outtab.

DATA: gr_table      TYPE REF TO cl_salv_table.

SELECT * FROM pa0002

          INTO CORRESPONDING FIELDS OF TABLE gt_outtab.

*         

cl_salv_table=>factory(

  IMPORTING

    r_salv_table = gr_table

  CHANGING

    t_table      = gt_outtab ).

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( gc_true ).

lr_column ?= lr_columns->get_column( 'PERNR' ).

lr_column->set_cell_type( if_salv_c_cell_type=>hotspot ).

lr_column->set_icon( if_salv_c_bool_sap=>true ).

lr_column->set_long_text( 'PERNR' ).

gr_table->display( ).

CLASS lcl_class DEFINITION.

  PUBLIC SECTION.

    CLASS-METHODS:

    on_link_click FOR EVENT link_click OF cl_salv_events_table

    IMPORTING

      row

      column.

ENDCLASS.

CLASS lcl_class IMPLEMENTATION.

  METHOD on_link_click.

    DATA gs_outtab LIKE LINE OF  gt_outtab.

    READ TABLE  gt_outtab INDEX row INTO  gs_outtab.

    DATA pa_008 TYPE pa0008.

    SELECT SINGLE * FROM pa0008 INTO CORRESPONDING FIELDS OF pa_008

      WHERE pernr EQ gs_outtab-pernr

      AND begda EQ gs_outtab-begda

      AND endda EQ gs_outtab-endda.

    CALL FUNCTION 'HR_INFOTYPE_OPERATION'

      EXPORTING

        infty                  = '0008'

        number                 = pa_008-pernr

       validityend            =  pa_008-endda

       validitybegin          =   pa_008-begda

*           RECORDNUMBER           =

        record                 = pa_008

        operation              = 'DIS'

*           TCLAS                  = 'A'

       dialog_mode            = '2'

*           NOCOMMIT               =

*           VIEW_IDENTIFIER        =

*           SECONDARY_RECORD       =

*         IMPORTING

*           RETURN                 =

*           KEY                    =

              .

  ENDMETHOD.                    "on_LINK_CLICK

ENDCLASS.                    "lcl_class IMPLEMENTATION

"lcl_class DEFINITION

START-OF-SELECTION.

  DATA gt_event TYPE REF TO cl_salv_events_table.

  gt_event = gr_table->get_event( ).

  SET HANDLER:lcl_class=>on_link_click FOR gt_event.

1 ACCEPTED SOLUTION

former_member184158
Active Contributor
0 Kudos

Hello Muhammad Zafarullah,

you have to do at the end start- of- selection with select statement

not at the top



TYPES: BEGIN OF  ty_outtab,
         pernr      
LIKE pa0002-pernr,
         begda      
LIKE pa0002-begda,
         endda      
LIKE pa0002-endda,
         vorna      
LIKE pa0002-vorna,
         nachn      
LIKE pa0002-nachn,

      
END   OF ty_outtab.


DATA: gt_outtab     TYPE STANDARD TABLE OF ty_outtab.
DATA: gr_table      TYPE REF TO cl_salv_table.

DATA gt_event TYPE REF TO cl_salv_events_table.


CLASS lcl_class DEFINITION.
 
PUBLIC SECTION.
   
CLASS-METHODS:
    on_link_click
FOR EVENT link_click OF cl_salv_events_table
   
IMPORTING
      row
      column
.
ENDCLASS.

CLASS lcl_class IMPLEMENTATION.
 
METHOD on_link_click.
   
DATA gs_outtab LIKE LINE OF  gt_outtab.
   
READ TABLE  gt_outtab INDEX row INTO  gs_outtab.
   
DATA pa_008 TYPE pa0008.
   
SELECT SINGLE * FROM pa0008 INTO CORRESPONDING FIELDS OF pa_008
     
WHERE pernr EQ gs_outtab-pernr
     
AND begda EQ gs_outtab-begda
     
AND endda EQ gs_outtab-endda.

      Message 'EVENT_LINK has been fired' TYPE 'I'.


   
CALL FUNCTION 'HR_INFOTYPE_OPERATION'
     
EXPORTING
        infty                 
= '0008'
       
number                 = pa_008-pernr
       validityend           
pa_008-endda
       validitybegin         
=   pa_008-begda
*           RECORDNUMBER           =
        record                
= pa_008
        operation             
= 'DIS'
*           TCLAS                  = 'A'
       dialog_mode           
= '2'
*           NOCOMMIT               =
*           VIEW_IDENTIFIER        =
*           SECONDARY_RECORD       =
*         IMPORTING
*           RETURN                 =
*           KEY                    =
             
.




 
ENDMETHOD.                    "on_LINK_CLICK
ENDCLASS.                    "lcl_class IMPLEMENTATION

START-OF-SELECTION.


SELECT * FROM pa0002
         
INTO CORRESPONDING FIELDS OF TABLE gt_outtab.
*
cl_salv_table
=>factory(
 
IMPORTING
    r_salv_table
= gr_table
 
CHANGING
    t_table     
= gt_outtab ).

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( gc_true ).


lr_column ?= lr_columns
->get_column( 'PERNR' ).
lr_column
->set_cell_type( if_salv_c_cell_type=>hotspot ).
lr_column
->set_icon( if_salv_c_bool_sap=>true ).
lr_column
->set_long_text( 'PERNR' ).

gt_event
= gr_table->get_event( ).

SET HANDLER:lcl_class=>on_link_click FOR gt_event.


gr_table->display( ).

Regards

Ibrahim

3 REPLIES 3

former_member184158
Active Contributor
0 Kudos

Hello Muhammad Zafarullah,

you have to do at the end start- of- selection with select statement

not at the top



TYPES: BEGIN OF  ty_outtab,
         pernr      
LIKE pa0002-pernr,
         begda      
LIKE pa0002-begda,
         endda      
LIKE pa0002-endda,
         vorna      
LIKE pa0002-vorna,
         nachn      
LIKE pa0002-nachn,

      
END   OF ty_outtab.


DATA: gt_outtab     TYPE STANDARD TABLE OF ty_outtab.
DATA: gr_table      TYPE REF TO cl_salv_table.

DATA gt_event TYPE REF TO cl_salv_events_table.


CLASS lcl_class DEFINITION.
 
PUBLIC SECTION.
   
CLASS-METHODS:
    on_link_click
FOR EVENT link_click OF cl_salv_events_table
   
IMPORTING
      row
      column
.
ENDCLASS.

CLASS lcl_class IMPLEMENTATION.
 
METHOD on_link_click.
   
DATA gs_outtab LIKE LINE OF  gt_outtab.
   
READ TABLE  gt_outtab INDEX row INTO  gs_outtab.
   
DATA pa_008 TYPE pa0008.
   
SELECT SINGLE * FROM pa0008 INTO CORRESPONDING FIELDS OF pa_008
     
WHERE pernr EQ gs_outtab-pernr
     
AND begda EQ gs_outtab-begda
     
AND endda EQ gs_outtab-endda.

      Message 'EVENT_LINK has been fired' TYPE 'I'.


   
CALL FUNCTION 'HR_INFOTYPE_OPERATION'
     
EXPORTING
        infty                 
= '0008'
       
number                 = pa_008-pernr
       validityend           
pa_008-endda
       validitybegin         
=   pa_008-begda
*           RECORDNUMBER           =
        record                
= pa_008
        operation             
= 'DIS'
*           TCLAS                  = 'A'
       dialog_mode           
= '2'
*           NOCOMMIT               =
*           VIEW_IDENTIFIER        =
*           SECONDARY_RECORD       =
*         IMPORTING
*           RETURN                 =
*           KEY                    =
             
.




 
ENDMETHOD.                    "on_LINK_CLICK
ENDCLASS.                    "lcl_class IMPLEMENTATION

START-OF-SELECTION.


SELECT * FROM pa0002
         
INTO CORRESPONDING FIELDS OF TABLE gt_outtab.
*
cl_salv_table
=>factory(
 
IMPORTING
    r_salv_table
= gr_table
 
CHANGING
    t_table     
= gt_outtab ).

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( gc_true ).


lr_column ?= lr_columns
->get_column( 'PERNR' ).
lr_column
->set_cell_type( if_salv_c_cell_type=>hotspot ).
lr_column
->set_icon( if_salv_c_bool_sap=>true ).
lr_column
->set_long_text( 'PERNR' ).

gt_event
= gr_table->get_event( ).

SET HANDLER:lcl_class=>on_link_click FOR gt_event.


gr_table->display( ).

Regards

Ibrahim

Former Member
0 Kudos

Hi,

Create Object gt_event seems to be missing before set handler command.

0 Kudos

Hi Abdul,

no It is not ,so  to get the object, it is enough to call this mehtod


* get the EVENTS object

  gt_event = gr_table->get_event( ).

He  has done start-of-selection at the end, and above . he has written, select *....

so he should do,

start-of-selection

.........and hier his code, select and others,

i have tried it out, and it works