06-14-2015 4:54 PM
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.
06-14-2015 6:41 PM
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
06-14-2015 6:41 PM
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
06-14-2015 6:44 PM
Hi,
Create Object gt_event seems to be missing before set handler command.
06-14-2015 6:53 PM
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