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: 

hotspot click in methods for alv grid list

Former Member
0 Kudos

Hi all ,

i written a program for grid display and hotspot click.

but it is not capturing the value at the event hotspot click,

please anybody help me in capturing the value in the following code.

it will be great will it happens soon.

REPORT zag_tables MESSAGE-ID zag .

DATA : gt_tables TYPE TABLE OF zag_tables,

gs_tables type zag_tables.

DATA : gt_cust_cont TYPE REF TO cl_gui_custom_container ,

gt_alv_grid TYPE REF TO cl_gui_alv_grid,

gt_cont TYPE scrfname VALUE 'ZAG_TABLES'.

*data declarations for grid layout

DATA : gt_fieldcat TYPE lvc_t_fcat,

gs_fieldcat TYPE lvc_s_fcat,

gs_layout TYPE lvc_s_layo,

gs_variant TYPE disvariant.

DATA : gv_repid TYPE syrepid,

okcode TYPE syucomm..

*data : gs_row_id type lvc_s_row,

  • gs_col_id type lvc_s_col,

  • gs_row_no type lvc_s_roid.

data : e_row_id type lvc_s_row,

gs_col_id type lvc_s_col,

gs_row_no type lvc_s_roid.

*CLASS DEFINITIONS

CLASS cl_event_handler DEFINITION.

PUBLIC SECTION.

CLASS-METHODs : cm_hotspot_click FOR EVENT hotspot_click OF

cl_gui_alv_grid IMPORTING

e_row_id e_column_id es_row_no .

ENDCLASS.

----


  • CLASS cl_event_handler IMPLEMENTATION

----


  • ........ *

----


CLASS cl_event_handler IMPLEMENTATION.

METHOD : cm_hotspot_click .

PERFORM hotspot_click.

ENDMETHOD.

ENDCLASS.

START-OF-SELECTION.

PERFORM select_data.

END-OF-SELECTION.

CALL SCREEN 100.

&----


*& Form select_data

&----


----


*

  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM select_data.

SELECT * FROM zag_tables INTO TABLE gt_tables.

ENDFORM. " select_data

&----


*& Module STATUS_0100 OUTPUT

&----


  • text

----


MODULE status_0100 OUTPUT.

SET PF-STATUS 'ZAG_TABLES'.

SET TITLEBAR 'ZAG_TABLES'.

gv_repid = sy-repid.

IF gt_cust_cont IS INITIAL.

CREATE OBJECT gt_cust_cont

EXPORTING

container_name = gt_cont

EXCEPTIONS

cntl_error = 1

cntl_system_error = 2

create_error = 3

lifetime_error = 4

lifetime_dynpro_dynpro_link = 5

others = 6

.

IF sy-subrc <> 0.

ENDIF.

CREATE OBJECT gt_alv_grid

EXPORTING

  • I_SHELLSTYLE = 0

  • I_LIFETIME =

i_parent = gt_cust_cont

  • I_APPL_EVENTS = space

  • I_PARENTDBG =

  • I_APPLOGPARENT =

  • I_GRAPHICSPARENT =

  • I_USE_VARIANT_CLASS = SPACE

  • I_NAME =

EXCEPTIONS

error_cntl_create = 1

error_cntl_init = 2

error_cntl_link = 3

error_dp_create = 4

others = 5

.

IF sy-subrc <> 0.

ENDIF.

ELSE.

CALL METHOD gt_alv_grid->refresh_table_display

EXCEPTIONS

finished = 1

OTHERS = 2

.

IF sy-subrc <> 0.

ENDIF.

ENDIF.

*perform layout changing gs_layout.

PERFORM fieldcat CHANGING gt_fieldcat.

*perform variant changing gs_variant.

gs_layout-zebra = 'X'.

gs_layout-sel_mode = 'A'.

gs_variant-report = gv_repid.

SET HANDLER cl_event_handler=>cm_hotspot_click FOR gt_alv_grid.

CALL METHOD gt_alv_grid->set_table_for_first_display

EXPORTING

  • I_BYPASSING_BUFFER =

  • I_BUFFER_ACTIVE =

  • I_CONSISTENCY_CHECK =

  • I_STRUCTURE_NAME =

is_variant = gs_variant

i_save = 'A'

i_default = 'X'

is_layout = gs_layout

  • IS_PRINT =

  • IT_SPECIAL_GROUPS =

  • IT_TOOLBAR_EXCLUDING =

  • IT_HYPERLINK =

  • IT_ALV_GRAPHICS =

  • IT_EXCEPT_QINFO =

CHANGING

it_outtab = gt_tables

it_fieldcatalog = gt_fieldcat

  • IT_SORT =

  • IT_FILTER =

EXCEPTIONS

invalid_parameter_combination = 1

program_error = 2

too_many_lines = 3

OTHERS = 4

.

IF sy-subrc <> 0.

ENDIF.

ENDMODULE. " STATUS_0100 OUTPUT

&----


*& Form fieldcat

&----


  • text

----


  • <--P_GS_fieldcat text

----


FORM fieldcat CHANGING gt_fieldcat TYPE lvc_t_fcat.

CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'

EXPORTING

  • I_BUFFER_ACTIVE =

i_structure_name = 'ZAG_TABLES'

  • I_CLIENT_NEVER_DISPLAY = 'X'

  • I_BYPASSING_BUFFER =

CHANGING

ct_fieldcat = gt_fieldcat

EXCEPTIONS

inconsistent_interface = 1

program_error = 2

OTHERS = 3

.

IF sy-subrc <> 0.

ENDIF.

LOOP AT gt_fieldcat INTO gs_fieldcat.

gs_fieldcat-fieldname = 'MANDT'.

gs_fieldcat-no_out = ''.

MODIFY gt_fieldcat FROM gs_fieldcat.

gs_fieldcat-fieldname = 'Z_TABLES'.

gs_fieldcat-hotspot = 'X'.

MODIFY gt_fieldcat FROM gs_fieldcat.

ENDLOOP.

ENDFORM. " fieldcat

&----


*& Form layout

&----


  • text

----


  • --> p1 text

  • <-- p2 text

**----


**

*form layout changing gs_layout.

*

*gs_layout-zebra = 'X'.

*gs_layout-sel_mode = 'A'.

*

*

*

*endform. " layout

&----


*& Form variant

&----


  • text

----


  • <--P_GS_variant text

  • <--P_ENDMODULE text

----


*form variant changing gs_variant

  • gs_variant-report = gv_repid.

*

*

*endform. " variant

&----


*& Module USER_COMMAND_0100 INPUT

&----


  • text

----


MODULE user_command_0100 INPUT.

TRANSLATE okcode TO UPPER CASE.

CASE okcode.

WHEN 'EXIT' OR 'BACK' OR 'CANCEL'.

LEAVE TO SCREEN 0.

ENDCASE.

ENDMODULE. " USER_COMMAND_0100 INPUT

&----


*& Form hotspot_click

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM hotspot_click ."importing gs_row_id type lvc_s_row.

data : lv_prog type syrepid,

lv_tcode type tcode.

read table gt_tables into gs_tables index e_row_id-index.

if sy-subrc eq 0 and gs_col_id-fieldname = 'ZTABLES'.

move gs_tables-z_tables to lv_prog.

translate lv_prog to upper case.

select single tcode from tstc into lv_tcode where pgmna = lv_prog.

call transaction lv_tcode.

endif.

ENDFORM. " hotspot_click

thanks in advance..

pls

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi ,

please go through this Program it was handled by Hot spot only .

report zbnstest. 
************************************************************************ 
* TABLES AND DATA DECLARATION. 
************************************************************************ 
*TABLES: mara,makt.",marc. 
data syrepid like sy-repid. 
data sydatum(10). " LIKE sy-datum. 
data sypagno(3) type n. 
  

* WHEN USING MORE THAN ONE TABLE IN ALV WE NEEED TO DECLARE THE TYPE 
* GROUP (TYPE-POOLS--------->SLIS) 
type-pools : slis. 
  

************************************************************************ 
* INTERNAL TABLE DECLARATION. 
************************************************************************ 
* INTERNAL TABLE TO HOLD THE VALUES FROM THE MARA TABLE 
data: begin of t_mara occurs 0, 
matnr like mara-matnr, 
meins like mara-meins, 
mtart like mara-mtart, 
matkl like mara-matkl, 

end of t_mara. 

* INTERNAL TABLE TO HOLD THE CONTENTS FROM THE EKKO TABLE 
data : begin of t_marc occurs 0, 
matnr like mara-matnr, 
werks like marc-werks, 
minbe like marc-minbe. 
data: end of t_marc. 

* INTERNAL TABLE TO HOLD THE VALUES FROM MAKT TABLE. 
data : begin of t_makt occurs 0, 
matnr like mara-matnr, 
maktx like makt-maktx, 
spras like makt-spras, 
end of t_makt. 

* INTERNAL TABLE WHICH ACTUALLY MERGES ALL THE OTHER INTERNAL TABLES. 
data: begin of itab1 occurs 0, 
matnr like mara-matnr, 
meins like mara-meins, 
maktx like makt-maktx, 
spras like makt-spras, 
werks like marc-werks, 
minbe like marc-minbe, 
end of itab1. 
  

* THE FOLLOWING DECLARATION IS USED FOR DEFINING THE FIELDCAT 
* AND THE LAYOUT FOR THE ALV. 
* HERE AS slis_t_fieldcat_alv IS A INTERNAL TABLE WITHOUT A HEADER LINE 
* WE EXPLICITELY DEFINE AN INTERNAL TABLE OF THE SAME STRUCTURE AS THAT 
* OF slis_t_fieldcat_alv BUT WITH A HEADER LINE IN THE DEFINITION. 
* THIS IS DONE TO MAKE THE CODE SIMPLER. 
* OTHERWISE WE MAY HAVE TO DEFINE THE STRUCTURE AS IN THE NORMAL SAP 
* PROGRAMS. 
* IN THE FIELDCATALOG TABLE WE ACTUALLY PASS THE FIELDS FROM ONE OR 
* MORE TABLES AND CREATE A STRUCTURE 
* IN THE LAYOUT STRUCTURE WE BASICALLY DEFINE THE FORMATTING OPTIONS 
* LIKE DISPLAY IN THE ZEBRA PATTERN ,THE HOTSPOT OPTIONS ETC. 
data: fieldcatalog type slis_t_fieldcat_alv with header line, 
fieldlayout type slis_layout_alv. 
  

* DECLARING THE EVENTTABLE INTERNL TABLE FOR USING EVENTS LIKE 
* TOP-OF-PAGE ETC. 
data : eventstab type slis_t_event with header line. 

* DECLARING AN INTERNAL TABLE TO HOLD THE DATA FOR THE TOP-OF-PAGE 
data : heading type slis_t_listheader with header line. 
data : heading1 type slis_t_listheader with header line. 
data : heading2 type slis_t_listheader with header line. 
data : heading3 type slis_t_listheader with header line. 
data : heading4 type slis_t_listheader with header line. 
data : heading5 type slis_t_listheader with header line. 
data : heading6 type slis_t_listheader with header line. 
data : heading7 type slis_t_listheader with header line. 
data : heading8 type slis_t_listheader with header line. 
  

* STRUCTURE TO PASS THE COLOR ATTRIBUTES FOR DISPLAY. 
data : colorstruct type slis_coltypes. 
************************************************************************ 
* INITIALIZATION. * 
************************************************************************ 
initialization. 
syrepid = sy-repid. 
sypagno = sy-pagno. 
clear fieldcatalog. 
  

************************************************************************ 
* START-OF-SELECTION. * 
************************************************************************ 
start-of-selection. 
* SUBROUTINE TO POPULATE THE COLORSTRUCT 
perform fill_colorstruct using colorstruct. 
* SUBROUTINE TO POPULATE THE FIELDS OF THE FIELD CATALOGUE 
perform populate_fieldcatalog. 
* SUBROUTINE TO SELECT DATA FROM VARIOUS TABLES AND POPULATE IT IN THE 
* INTERNAL TABLE. 
perform selectdata_and_sort. 
* SUBROUTINE TO POPULATE THE LAYOUT STRUCTURE. 
perform populate_layout using fieldlayout. 
* SUBROUTINE TO CALL THE FUNCTION MERGE TO ENSURE PROPER DISPLAY. 
perform merge_fieldcatalog. 
* SUBROUTINE TO POPULATE THE EVENTSTAB. 
perform fill_eventstab tables eventstab. 
* SUBROUTINE TO POPULATE THE HEADING TABLES. 
perform fill_headingtable tables heading using 'HEADING'. 
perform fill_headingtable tables heading1 using 'HEADING1'. 
perform fill_headingtable tables heading2 using 'HEADING2'. 
perform fill_headingtable tables heading3 using 'HEADING3'. 
perform fill_headingtable tables heading4 using 'HEADING4'. 
perform fill_headingtable tables heading5 using 'HEADING5'. 
perform fill_headingtable tables heading6 using 'HEADING6'. 
perform fill_headingtable tables heading7 using 'HEADING7'. 
perform fill_headingtable tables heading8 using 'HEADING8'. 

* SUBROUTINE TO DISPLAY THE LIST. 
perform display_alv_list. 
  
  

************************************************************************ 
* FORMS 
************************************************************************ 
* IN THIS SUBROUTINE WE POPULATE THE FIELDCATALOG TABLE WITH THE NAMES 
* OF THE TABLE,FIELDNAME,WHETHER IT IS KEY FIELD OR NOT,HEADING AND 
* COLUMN JUSTIFICATION. 
form populate_fieldcatalog. 
perform fill_fields_of_fieldcatalog tables fieldcatalog 
using 'ITAB1' 'MATNR' 'X' . 
perform fill_fields_of_fieldcatalog tables fieldcatalog 
using 'ITAB1' 'MEINS' ' '. 
perform fill_fields_of_fieldcatalog tables fieldcatalog 
using 'ITAB1' 'MAKTX' ' ' . 
perform fill_fields_of_fieldcatalog tables fieldcatalog 
using 'ITAB1' 'MTART' ' ' . 
perform fill_fields_of_fieldcatalog tables fieldcatalog 
using 'ITAB1' 'MATKL' ' ' . 
perform fill_fields_of_fieldcatalog tables fieldcatalog 
using 'ITAB1' 'SPRAS' ' ' . 
perform fill_fields_of_fieldcatalog tables fieldcatalog 
using 'ITAB1' 'WERKS' ' ' . 
perform fill_fields_of_fieldcatalog tables fieldcatalog 
using 'ITAB1' 'MINBE' ' ' . 
endform. " POPULATE_FIELDCATALOG 
  

*---------------------------------------------------------------------* 
* FORM FILL_FIELDS_OF_FIELDCATALOG * 
*---------------------------------------------------------------------* 
* ........ * 
*---------------------------------------------------------------------* 
* --> FIELDCATALOG * 
* --> P_TABNAME * 
* --> P_FIELDNAME * 
* --> P_KEY * 
* --> P_KEY * 
*---------------------------------------------------------------------* 
form fill_fields_of_fieldcatalog tables fieldcatalog 
structure fieldcatalog 
using p_tabname 
p_fieldname 
p_key. 
* p_no_out. 
fieldcatalog-tabname = p_tabname. 
fieldcatalog-fieldname = p_fieldname. 
fieldcatalog-key = p_key. 
fieldcatalog-emphasize = '1234'. 
*fieldcatalog-no_out = p_no_out. 
append fieldcatalog. 
endform. " FILL_FIELDSOFFIELDCATALOG 
  

*---------------------------------------------------------------------* 
* FORM POPULATE_LAYOUT * 
*---------------------------------------------------------------------* 
* ........ * 
*---------------------------------------------------------------------* 
* --> FIELDLAYOUT * 
*---------------------------------------------------------------------* 
form populate_layout using fieldlayout type slis_layout_alv. 
fieldlayout-f2code = '&ETA' . 
fieldlayout-zebra = 'X'. 
* FOR THE WINDOW TITLE. 
fieldlayout-window_titlebar = 'ALV with Events'. 

fieldlayout-colwidth_optimize = 'X'. 
fieldlayout-no_vline = ' '. 
*fieldlayout-no_input = 'X'. 
fieldlayout-confirmation_prompt = ''. 
fieldlayout-key_hotspot = 'X'. 
* This removes the column headings if the flag is set to 'X' 
fieldlayout-no_colhead = ' '. 
*fieldlayout-hotspot_fieldname = 'MAKTX'. 
fieldlayout-detail_popup = 'X'. 
* fieldlayout-coltab_fieldname = 'X'. 
endform. " POPULATE_LAYOUT 

*---------------------------------------------------------------------* 
* FORM SELECTDATA_AND_SORT * 
*---------------------------------------------------------------------* 
* ........ * 
*---------------------------------------------------------------------* 
form selectdata_and_sort. 
select matnr meins mtart matkl from mara 
into corresponding fields of t_mara 
up to 500 rows . 

select matnr maktx spras from makt 
into corresponding fields of t_makt 
where matnr = t_mara-matnr and 
spras = sy-langu. 

select matnr werks minbe from marc 
into corresponding fields of t_marc 
where matnr = t_mara-matnr. 
append t_marc. 
endselect. 
append t_makt. 
endselect. 
append t_mara. 
endselect. 
perform populate_itab1. 
sort itab1 by matnr. 
endform. " SELECTDATA_AND_SORT 

*---------------------------------------------------------------------* 
* FORM MERGE_FIELDCATALOG * 
*---------------------------------------------------------------------* 
* ........ * 
*---------------------------------------------------------------------* 
form merge_fieldcatalog. 
call function 'REUSE_ALV_FIELDCATALOG_MERGE' 
exporting 
i_program_name = syrepid 
i_internal_tabname = 'ITAB1' 
* i_structure_name = 'COLORSTRUCT' 
* I_CLIENT_NEVER_DISPLAY = 'X' 
i_inclname = syrepid 
changing 
ct_fieldcat = fieldcatalog[] 
exceptions 
inconsistent_interface = 1 
program_error = 2 
others = 3. 
endform. " MERGE_FIELDCATALOG 
  

* IN THIS FUNCTION THE MINIMUM PARAMETERS THAT WE NEED TO PASS IS AS 
* FOLLOWS:- 
* i_callback_program --> CALLING PROGRAM NAME 
* i_structure_name --> STRUCTURE NAME. 
* is_layout --> LAYOUT NAME. 
* it_fieldcat ---> BODY OF THE FIELD CATALOGUE INTERNAL TABLE 
form display_alv_list. 
call function 'REUSE_ALV_LIST_DISPLAY' 
exporting 
* I_INTERFACE_CHECK = ' ' 
i_callback_program = syrepid 
* I_CALLBACK_PF_STATUS_SET = ' ' 
* I_CALLBACK_USER_COMMAND = ' ' 
i_structure_name = 'ITAB1' 
is_layout = fieldlayout 
it_fieldcat = fieldcatalog[] 
* IT_EXCLUDING = 
* IT_SPECIAL_GROUPS = 
* IT_SORT = 
* IT_FILTER = 
* IS_SEL_HIDE = 
* I_DEFAULT = 'X' 
* THE FOLLOWING PARAMETER IS SET AS 'A' INORDER TO DISPLAY THE STANDARD 
* TOOL BAR 
i_save = 'A' 
* IS_VARIANT = ' ' 
it_events = eventstab[] 
* IT_EVENT_EXIT = 
* IS_PRINT = 
* I_SCREEN_START_COLUMN = 0 
* I_SCREEN_START_LINE = 0 
* I_SCREEN_END_COLUMN = 0 
* I_SCREEN_END_LINE = 0 
* IMPORTING 
* E_EXIT_CAUSED_BY_CALLER = 
* ES_EXIT_CAUSED_BY_USER = 
tables 
t_outtab = itab1 
exceptions 
program_error = 1 
others = 2. 
endform. " DISPLAY_ALV_LIST 
*&---------------------------------------------------------------------* 
*& Form POPULATE_ITAB1 
*&---------------------------------------------------------------------* 
* text 
*----------------------------------------------------------------------* 
* --> p1 text 
* <-- p2 text 
*----------------------------------------------------------------------* 
form populate_itab1. 
loop at t_mara. 
loop at t_makt where matnr = t_mara-matnr. 
loop at t_marc where matnr = t_mara-matnr. 
move-corresponding t_mara to itab1. 
move-corresponding t_makt to itab1. 
move-corresponding t_marc to itab1. 
append itab1. 
endloop. 
endloop. 
endloop. 
endform. " POPULATE_ITAB1 
*&---------------------------------------------------------------------* 
*& Form FILL_EVENTSTAB 
*&---------------------------------------------------------------------* 
* text 
*----------------------------------------------------------------------* 
* -->P_EVENTSTAB text * 
*----------------------------------------------------------------------* 
form fill_eventstab tables p_eventstab structure eventstab. 
* WHEN THE FOLLOWING FUNCTION IS CALLED THE SYSTEM POPULATES THE 
* INTERNAL TABLE EVENTSTAB WITH A LIST OF EVENTS NAME. 
* AS SHOWN BELOW WHEN USING I_LIST_TYPE = 0 THE FUNCTION RETURNS 14 
* EVENTS NAME. 
call function 'REUSE_ALV_EVENTS_GET' 
exporting 
i_list_type = 0 
importing 
et_events = p_eventstab[] 
exceptions 
list_type_wrong = 1 
others = 2. 

* BY CALLING THE ABOVE FUNCTION WE FIRST POPULATE THE EVENTSTAB WITH 
* THE PREDEFINED EVENTS AND THEN WE MOVE THE FORM NAME AS SHOWN BELOW. 
* WE ASSIGN A FORM NAME TO THE EVENT AS REQUIRED BY THE USER. 
* FORM NAME CAN BE ANYTHING.THE PERFORM STATEMENT FOR THIS FORM 
* IS DYNAMICALY CALLED. 

read table p_eventstab with key name = slis_ev_top_of_page. 
if sy-subrc = 0 . 
move 'TOP_OF_PAGE' to p_eventstab-form. 
append p_eventstab. 
endif. 

read table p_eventstab with key name = slis_ev_top_of_coverpage. 
if sy-subrc = 0 . 
move 'TOP_OF_COVERPAGE' to p_eventstab-form. 
append p_eventstab. 
endif. 

read table p_eventstab with key name = slis_ev_end_of_coverpage . 
if sy-subrc = 0 . 
move 'END_OF_COVERPAGE' to p_eventstab-form. 
append p_eventstab. 
endif. 

read table p_eventstab with key name = slis_ev_foreign_top_of_page. 
if sy-subrc = 0 . 
move 'FOREIGN_TOP_OF_PAGE' to p_eventstab-form. 
append p_eventstab. 
endif. 

read table p_eventstab with key name = slis_ev_foreign_end_of_page. 
if sy-subrc = 0 . 
move 'FOREIGN_END_OF_PAGE' to p_eventstab-form. 
append p_eventstab. 
endif. 

read table p_eventstab with key name = slis_ev_list_modify. 
if sy-subrc = 0 . 
move 'LIST_MODIFY' to p_eventstab-form. 
append p_eventstab. 
endif. 

read table p_eventstab with key name = slis_ev_top_of_list. 
if sy-subrc = 0 . 
move 'TOP_OF_LIST' to p_eventstab-form. 
append p_eventstab. 
endif. 

read table p_eventstab with key name = slis_ev_end_of_page. 
if sy-subrc = 0 . 
move 'END_OF_PAGE' to p_eventstab-form. 
append p_eventstab. 
endif. 

read table p_eventstab with key name = slis_ev_end_of_list . 
if sy-subrc = 0 . 
move 'END_OF_LIST' to p_eventstab-form. 
append p_eventstab. 
endif. 
endform. " FILL_EVENTSTAB 
*&---------------------------------------------------------------------* 
*& Form FILL_HEADINGTABLE 
*&---------------------------------------------------------------------* 
* text 
*----------------------------------------------------------------------* 
* -->P_HEADING text * 
*----------------------------------------------------------------------* 
form fill_headingtable tables p_heading structure heading 
using tablename. 
case tablename. 
when 'HEADING'. 
p_heading-typ = 'H'. 
concatenate 
' REPORT NAME:-' syrepid 
' ABB Industry Pte Ltd' into p_heading-info. 
append p_heading. 
write sy-datum using edit mask '__/__/____' to sydatum. 

concatenate 
' DATE:-' sydatum ' USER: ' sy-uname 'PAGE NO:' sypagno 
into p_heading-info. 
append p_heading. 
when 'HEADING1'. 
p_heading-typ = 'H'. 
p_heading-info = 'TOP-OF-COVER-PAGE'. 
append p_heading. 
when 'HEADING2'. 
p_heading-typ = 'H'. 
p_heading-info = 'END-OF-COVER-PAGE'. 
append p_heading. 
when 'HEADING3'. 
p_heading-typ = 'H'. 
p_heading-info = 'FOREIGN-TOP-OF-PAGE'. 
append p_heading. 
when 'HEADING4'. 
p_heading-typ = 'H'. 
p_heading-info = 'FOREIGN-END-OF-PAGE'. 
append p_heading. 
* WHEN 'HEADING5'. 
* P_HEADING-TYP = 'H'. 
* P_HEADING-INFO = 'LIST-MODIFY'. 
* APPEND P_HEADING. 
when 'HEADING6'. 
p_heading-typ = 'H'. 
p_heading-info = 'END-OF-PAGE'. 
append p_heading. 
when 'HEADING7'. 
p_heading-typ = 'H'. 
p_heading-info = 'END-OF-LIST'. 
append p_heading. 
when 'HEADING8'. 
p_heading-typ = 'H'. 
p_heading-info = 'TOP-OF-LIST'. 
append p_heading. 
endcase. 
endform. " FILL_HEADINGTABLE 

*---------------------------------------------------------------------* 
* FORM TOP_OF_PAGE * 
*---------------------------------------------------------------------* 
* ........ * 
*---------------------------------------------------------------------* 
form top_of_page. 
call function 'REUSE_ALV_COMMENTARY_WRITE' 
exporting 
it_list_commentary = heading[] 
exceptions 
others = 1. 
endform. 
*&---------------------------------------------------------------------* 
*& Form FILL_COLORSTRUCT 
*&---------------------------------------------------------------------* 
* text 
*----------------------------------------------------------------------* 
* -->P_COLORSTRUCT text * 
*----------------------------------------------------------------------* 
form fill_colorstruct using p_colorstruct type slis_coltypes . 
p_colorstruct-heacolfir-col = 6. 
p_colorstruct-heacolfir-int = 1. 
p_colorstruct-heacolfir-inv = 1. 
endform. " FILL_COLORSTRUCT 

*---------------------------------------------------------------------* 
* FORM TOP_OF_COVERPAGE * 
*---------------------------------------------------------------------* 
* ........ * 
*---------------------------------------------------------------------* 
form top_of_coverpage. 
call function 'REUSE_ALV_COMMENTARY_WRITE' 
exporting 
it_list_commentary = heading1[] 
exceptions 
others = 1. 
endform. 

*---------------------------------------------------------------------* 
* FORM END_OF_COVERPAGE * 
*---------------------------------------------------------------------* 
* ........ * 
*---------------------------------------------------------------------* 
form end_of_coverpage. 
call function 'REUSE_ALV_COMMENTARY_WRITE' 
exporting 
it_list_commentary = heading2[] 
exceptions 
others = 1. 
endform. 

*---------------------------------------------------------------------* 
* FORM FOREIGN_TOP_OF_PAGE * 
*---------------------------------------------------------------------* 
* ........ * 
*---------------------------------------------------------------------* 
form foreign_top_of_page. 
call function 'REUSE_ALV_COMMENTARY_WRITE' 
exporting 
it_list_commentary = heading3[] 
exceptions 
others = 1. 

endform. 

*---------------------------------------------------------------------* 
* FORM FOREIGN_END_OF_PAGE * 
*---------------------------------------------------------------------* 
* ........ * 
*---------------------------------------------------------------------* 
form foreign_end_of_page. 
call function 'REUSE_ALV_COMMENTARY_WRITE' 
exporting 
it_list_commentary = heading4[] 
exceptions 
others = 1. 
endform. 

*---------------------------------------------------------------------* 
* FORM LIST_MODIFY * 
*---------------------------------------------------------------------* 
* ........ * 
*---------------------------------------------------------------------* 
*FORM LIST_MODIFY. 
* CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' 
* EXPORTING 
* IT_LIST_COMMENTARY = HEADING5[] 
* EXCEPTIONS 
* OTHERS = 1. 
*ENDFORM. 

*---------------------------------------------------------------------* 
* FORM END_OF_PAGE * 
*---------------------------------------------------------------------* 
* ........ * 
*---------------------------------------------------------------------* 
form end_of_page. 
call function 'REUSE_ALV_COMMENTARY_WRITE' 
exporting 
it_list_commentary = heading6[] 
exceptions 
others = 1. 
endform. 

*---------------------------------------------------------------------* 
* FORM END_OF_LIST * 
*---------------------------------------------------------------------* 
* ........ * 
*---------------------------------------------------------------------* 
form end_of_list. 
call function 'REUSE_ALV_COMMENTARY_WRITE' 
exporting 
it_list_commentary = heading7[] 
exceptions 
others = 1. 
endform. 

*---------------------------------------------------------------------* 
* FORM TOP_OF_LIST * 
*---------------------------------------------------------------------* 
* ........ * 
*---------------------------------------------------------------------* 
form top_of_list. 
call function 'REUSE_ALV_COMMENTARY_WRITE' 
exporting 
it_list_commentary = heading8[] 
exceptions 
others = 1. 
endform. 

*--- End of Program 

Reward points if it is usefull ..

Girish

5 REPLIES 5

Former Member
0 Kudos

I think you need to add the following:

Declare the following:


    DATA: g_events      TYPE REF TO cl_event_handler .


and then do the following where you want to set the event handler:

    CREATE OBJECT g_events. 
    SET HANDLER g_events->cm_hotspot_click FOR gt_alv_grid.

Good luck

Brian

Message was edited by:

Brian Sammond

Former Member
0 Kudos

I think in your code you are missing double click event code

Check BCALV_GRID_02 and BCALV_GRID_03 which will give you same functionality.

Reward points if find useful..........

Regards,

Minal

Former Member
0 Kudos

Hi ,

please go through this Program it was handled by Hot spot only .

report zbnstest. 
************************************************************************ 
* TABLES AND DATA DECLARATION. 
************************************************************************ 
*TABLES: mara,makt.",marc. 
data syrepid like sy-repid. 
data sydatum(10). " LIKE sy-datum. 
data sypagno(3) type n. 
  

* WHEN USING MORE THAN ONE TABLE IN ALV WE NEEED TO DECLARE THE TYPE 
* GROUP (TYPE-POOLS--------->SLIS) 
type-pools : slis. 
  

************************************************************************ 
* INTERNAL TABLE DECLARATION. 
************************************************************************ 
* INTERNAL TABLE TO HOLD THE VALUES FROM THE MARA TABLE 
data: begin of t_mara occurs 0, 
matnr like mara-matnr, 
meins like mara-meins, 
mtart like mara-mtart, 
matkl like mara-matkl, 

end of t_mara. 

* INTERNAL TABLE TO HOLD THE CONTENTS FROM THE EKKO TABLE 
data : begin of t_marc occurs 0, 
matnr like mara-matnr, 
werks like marc-werks, 
minbe like marc-minbe. 
data: end of t_marc. 

* INTERNAL TABLE TO HOLD THE VALUES FROM MAKT TABLE. 
data : begin of t_makt occurs 0, 
matnr like mara-matnr, 
maktx like makt-maktx, 
spras like makt-spras, 
end of t_makt. 

* INTERNAL TABLE WHICH ACTUALLY MERGES ALL THE OTHER INTERNAL TABLES. 
data: begin of itab1 occurs 0, 
matnr like mara-matnr, 
meins like mara-meins, 
maktx like makt-maktx, 
spras like makt-spras, 
werks like marc-werks, 
minbe like marc-minbe, 
end of itab1. 
  

* THE FOLLOWING DECLARATION IS USED FOR DEFINING THE FIELDCAT 
* AND THE LAYOUT FOR THE ALV. 
* HERE AS slis_t_fieldcat_alv IS A INTERNAL TABLE WITHOUT A HEADER LINE 
* WE EXPLICITELY DEFINE AN INTERNAL TABLE OF THE SAME STRUCTURE AS THAT 
* OF slis_t_fieldcat_alv BUT WITH A HEADER LINE IN THE DEFINITION. 
* THIS IS DONE TO MAKE THE CODE SIMPLER. 
* OTHERWISE WE MAY HAVE TO DEFINE THE STRUCTURE AS IN THE NORMAL SAP 
* PROGRAMS. 
* IN THE FIELDCATALOG TABLE WE ACTUALLY PASS THE FIELDS FROM ONE OR 
* MORE TABLES AND CREATE A STRUCTURE 
* IN THE LAYOUT STRUCTURE WE BASICALLY DEFINE THE FORMATTING OPTIONS 
* LIKE DISPLAY IN THE ZEBRA PATTERN ,THE HOTSPOT OPTIONS ETC. 
data: fieldcatalog type slis_t_fieldcat_alv with header line, 
fieldlayout type slis_layout_alv. 
  

* DECLARING THE EVENTTABLE INTERNL TABLE FOR USING EVENTS LIKE 
* TOP-OF-PAGE ETC. 
data : eventstab type slis_t_event with header line. 

* DECLARING AN INTERNAL TABLE TO HOLD THE DATA FOR THE TOP-OF-PAGE 
data : heading type slis_t_listheader with header line. 
data : heading1 type slis_t_listheader with header line. 
data : heading2 type slis_t_listheader with header line. 
data : heading3 type slis_t_listheader with header line. 
data : heading4 type slis_t_listheader with header line. 
data : heading5 type slis_t_listheader with header line. 
data : heading6 type slis_t_listheader with header line. 
data : heading7 type slis_t_listheader with header line. 
data : heading8 type slis_t_listheader with header line. 
  

* STRUCTURE TO PASS THE COLOR ATTRIBUTES FOR DISPLAY. 
data : colorstruct type slis_coltypes. 
************************************************************************ 
* INITIALIZATION. * 
************************************************************************ 
initialization. 
syrepid = sy-repid. 
sypagno = sy-pagno. 
clear fieldcatalog. 
  

************************************************************************ 
* START-OF-SELECTION. * 
************************************************************************ 
start-of-selection. 
* SUBROUTINE TO POPULATE THE COLORSTRUCT 
perform fill_colorstruct using colorstruct. 
* SUBROUTINE TO POPULATE THE FIELDS OF THE FIELD CATALOGUE 
perform populate_fieldcatalog. 
* SUBROUTINE TO SELECT DATA FROM VARIOUS TABLES AND POPULATE IT IN THE 
* INTERNAL TABLE. 
perform selectdata_and_sort. 
* SUBROUTINE TO POPULATE THE LAYOUT STRUCTURE. 
perform populate_layout using fieldlayout. 
* SUBROUTINE TO CALL THE FUNCTION MERGE TO ENSURE PROPER DISPLAY. 
perform merge_fieldcatalog. 
* SUBROUTINE TO POPULATE THE EVENTSTAB. 
perform fill_eventstab tables eventstab. 
* SUBROUTINE TO POPULATE THE HEADING TABLES. 
perform fill_headingtable tables heading using 'HEADING'. 
perform fill_headingtable tables heading1 using 'HEADING1'. 
perform fill_headingtable tables heading2 using 'HEADING2'. 
perform fill_headingtable tables heading3 using 'HEADING3'. 
perform fill_headingtable tables heading4 using 'HEADING4'. 
perform fill_headingtable tables heading5 using 'HEADING5'. 
perform fill_headingtable tables heading6 using 'HEADING6'. 
perform fill_headingtable tables heading7 using 'HEADING7'. 
perform fill_headingtable tables heading8 using 'HEADING8'. 

* SUBROUTINE TO DISPLAY THE LIST. 
perform display_alv_list. 
  
  

************************************************************************ 
* FORMS 
************************************************************************ 
* IN THIS SUBROUTINE WE POPULATE THE FIELDCATALOG TABLE WITH THE NAMES 
* OF THE TABLE,FIELDNAME,WHETHER IT IS KEY FIELD OR NOT,HEADING AND 
* COLUMN JUSTIFICATION. 
form populate_fieldcatalog. 
perform fill_fields_of_fieldcatalog tables fieldcatalog 
using 'ITAB1' 'MATNR' 'X' . 
perform fill_fields_of_fieldcatalog tables fieldcatalog 
using 'ITAB1' 'MEINS' ' '. 
perform fill_fields_of_fieldcatalog tables fieldcatalog 
using 'ITAB1' 'MAKTX' ' ' . 
perform fill_fields_of_fieldcatalog tables fieldcatalog 
using 'ITAB1' 'MTART' ' ' . 
perform fill_fields_of_fieldcatalog tables fieldcatalog 
using 'ITAB1' 'MATKL' ' ' . 
perform fill_fields_of_fieldcatalog tables fieldcatalog 
using 'ITAB1' 'SPRAS' ' ' . 
perform fill_fields_of_fieldcatalog tables fieldcatalog 
using 'ITAB1' 'WERKS' ' ' . 
perform fill_fields_of_fieldcatalog tables fieldcatalog 
using 'ITAB1' 'MINBE' ' ' . 
endform. " POPULATE_FIELDCATALOG 
  

*---------------------------------------------------------------------* 
* FORM FILL_FIELDS_OF_FIELDCATALOG * 
*---------------------------------------------------------------------* 
* ........ * 
*---------------------------------------------------------------------* 
* --> FIELDCATALOG * 
* --> P_TABNAME * 
* --> P_FIELDNAME * 
* --> P_KEY * 
* --> P_KEY * 
*---------------------------------------------------------------------* 
form fill_fields_of_fieldcatalog tables fieldcatalog 
structure fieldcatalog 
using p_tabname 
p_fieldname 
p_key. 
* p_no_out. 
fieldcatalog-tabname = p_tabname. 
fieldcatalog-fieldname = p_fieldname. 
fieldcatalog-key = p_key. 
fieldcatalog-emphasize = '1234'. 
*fieldcatalog-no_out = p_no_out. 
append fieldcatalog. 
endform. " FILL_FIELDSOFFIELDCATALOG 
  

*---------------------------------------------------------------------* 
* FORM POPULATE_LAYOUT * 
*---------------------------------------------------------------------* 
* ........ * 
*---------------------------------------------------------------------* 
* --> FIELDLAYOUT * 
*---------------------------------------------------------------------* 
form populate_layout using fieldlayout type slis_layout_alv. 
fieldlayout-f2code = '&ETA' . 
fieldlayout-zebra = 'X'. 
* FOR THE WINDOW TITLE. 
fieldlayout-window_titlebar = 'ALV with Events'. 

fieldlayout-colwidth_optimize = 'X'. 
fieldlayout-no_vline = ' '. 
*fieldlayout-no_input = 'X'. 
fieldlayout-confirmation_prompt = ''. 
fieldlayout-key_hotspot = 'X'. 
* This removes the column headings if the flag is set to 'X' 
fieldlayout-no_colhead = ' '. 
*fieldlayout-hotspot_fieldname = 'MAKTX'. 
fieldlayout-detail_popup = 'X'. 
* fieldlayout-coltab_fieldname = 'X'. 
endform. " POPULATE_LAYOUT 

*---------------------------------------------------------------------* 
* FORM SELECTDATA_AND_SORT * 
*---------------------------------------------------------------------* 
* ........ * 
*---------------------------------------------------------------------* 
form selectdata_and_sort. 
select matnr meins mtart matkl from mara 
into corresponding fields of t_mara 
up to 500 rows . 

select matnr maktx spras from makt 
into corresponding fields of t_makt 
where matnr = t_mara-matnr and 
spras = sy-langu. 

select matnr werks minbe from marc 
into corresponding fields of t_marc 
where matnr = t_mara-matnr. 
append t_marc. 
endselect. 
append t_makt. 
endselect. 
append t_mara. 
endselect. 
perform populate_itab1. 
sort itab1 by matnr. 
endform. " SELECTDATA_AND_SORT 

*---------------------------------------------------------------------* 
* FORM MERGE_FIELDCATALOG * 
*---------------------------------------------------------------------* 
* ........ * 
*---------------------------------------------------------------------* 
form merge_fieldcatalog. 
call function 'REUSE_ALV_FIELDCATALOG_MERGE' 
exporting 
i_program_name = syrepid 
i_internal_tabname = 'ITAB1' 
* i_structure_name = 'COLORSTRUCT' 
* I_CLIENT_NEVER_DISPLAY = 'X' 
i_inclname = syrepid 
changing 
ct_fieldcat = fieldcatalog[] 
exceptions 
inconsistent_interface = 1 
program_error = 2 
others = 3. 
endform. " MERGE_FIELDCATALOG 
  

* IN THIS FUNCTION THE MINIMUM PARAMETERS THAT WE NEED TO PASS IS AS 
* FOLLOWS:- 
* i_callback_program --> CALLING PROGRAM NAME 
* i_structure_name --> STRUCTURE NAME. 
* is_layout --> LAYOUT NAME. 
* it_fieldcat ---> BODY OF THE FIELD CATALOGUE INTERNAL TABLE 
form display_alv_list. 
call function 'REUSE_ALV_LIST_DISPLAY' 
exporting 
* I_INTERFACE_CHECK = ' ' 
i_callback_program = syrepid 
* I_CALLBACK_PF_STATUS_SET = ' ' 
* I_CALLBACK_USER_COMMAND = ' ' 
i_structure_name = 'ITAB1' 
is_layout = fieldlayout 
it_fieldcat = fieldcatalog[] 
* IT_EXCLUDING = 
* IT_SPECIAL_GROUPS = 
* IT_SORT = 
* IT_FILTER = 
* IS_SEL_HIDE = 
* I_DEFAULT = 'X' 
* THE FOLLOWING PARAMETER IS SET AS 'A' INORDER TO DISPLAY THE STANDARD 
* TOOL BAR 
i_save = 'A' 
* IS_VARIANT = ' ' 
it_events = eventstab[] 
* IT_EVENT_EXIT = 
* IS_PRINT = 
* I_SCREEN_START_COLUMN = 0 
* I_SCREEN_START_LINE = 0 
* I_SCREEN_END_COLUMN = 0 
* I_SCREEN_END_LINE = 0 
* IMPORTING 
* E_EXIT_CAUSED_BY_CALLER = 
* ES_EXIT_CAUSED_BY_USER = 
tables 
t_outtab = itab1 
exceptions 
program_error = 1 
others = 2. 
endform. " DISPLAY_ALV_LIST 
*&---------------------------------------------------------------------* 
*& Form POPULATE_ITAB1 
*&---------------------------------------------------------------------* 
* text 
*----------------------------------------------------------------------* 
* --> p1 text 
* <-- p2 text 
*----------------------------------------------------------------------* 
form populate_itab1. 
loop at t_mara. 
loop at t_makt where matnr = t_mara-matnr. 
loop at t_marc where matnr = t_mara-matnr. 
move-corresponding t_mara to itab1. 
move-corresponding t_makt to itab1. 
move-corresponding t_marc to itab1. 
append itab1. 
endloop. 
endloop. 
endloop. 
endform. " POPULATE_ITAB1 
*&---------------------------------------------------------------------* 
*& Form FILL_EVENTSTAB 
*&---------------------------------------------------------------------* 
* text 
*----------------------------------------------------------------------* 
* -->P_EVENTSTAB text * 
*----------------------------------------------------------------------* 
form fill_eventstab tables p_eventstab structure eventstab. 
* WHEN THE FOLLOWING FUNCTION IS CALLED THE SYSTEM POPULATES THE 
* INTERNAL TABLE EVENTSTAB WITH A LIST OF EVENTS NAME. 
* AS SHOWN BELOW WHEN USING I_LIST_TYPE = 0 THE FUNCTION RETURNS 14 
* EVENTS NAME. 
call function 'REUSE_ALV_EVENTS_GET' 
exporting 
i_list_type = 0 
importing 
et_events = p_eventstab[] 
exceptions 
list_type_wrong = 1 
others = 2. 

* BY CALLING THE ABOVE FUNCTION WE FIRST POPULATE THE EVENTSTAB WITH 
* THE PREDEFINED EVENTS AND THEN WE MOVE THE FORM NAME AS SHOWN BELOW. 
* WE ASSIGN A FORM NAME TO THE EVENT AS REQUIRED BY THE USER. 
* FORM NAME CAN BE ANYTHING.THE PERFORM STATEMENT FOR THIS FORM 
* IS DYNAMICALY CALLED. 

read table p_eventstab with key name = slis_ev_top_of_page. 
if sy-subrc = 0 . 
move 'TOP_OF_PAGE' to p_eventstab-form. 
append p_eventstab. 
endif. 

read table p_eventstab with key name = slis_ev_top_of_coverpage. 
if sy-subrc = 0 . 
move 'TOP_OF_COVERPAGE' to p_eventstab-form. 
append p_eventstab. 
endif. 

read table p_eventstab with key name = slis_ev_end_of_coverpage . 
if sy-subrc = 0 . 
move 'END_OF_COVERPAGE' to p_eventstab-form. 
append p_eventstab. 
endif. 

read table p_eventstab with key name = slis_ev_foreign_top_of_page. 
if sy-subrc = 0 . 
move 'FOREIGN_TOP_OF_PAGE' to p_eventstab-form. 
append p_eventstab. 
endif. 

read table p_eventstab with key name = slis_ev_foreign_end_of_page. 
if sy-subrc = 0 . 
move 'FOREIGN_END_OF_PAGE' to p_eventstab-form. 
append p_eventstab. 
endif. 

read table p_eventstab with key name = slis_ev_list_modify. 
if sy-subrc = 0 . 
move 'LIST_MODIFY' to p_eventstab-form. 
append p_eventstab. 
endif. 

read table p_eventstab with key name = slis_ev_top_of_list. 
if sy-subrc = 0 . 
move 'TOP_OF_LIST' to p_eventstab-form. 
append p_eventstab. 
endif. 

read table p_eventstab with key name = slis_ev_end_of_page. 
if sy-subrc = 0 . 
move 'END_OF_PAGE' to p_eventstab-form. 
append p_eventstab. 
endif. 

read table p_eventstab with key name = slis_ev_end_of_list . 
if sy-subrc = 0 . 
move 'END_OF_LIST' to p_eventstab-form. 
append p_eventstab. 
endif. 
endform. " FILL_EVENTSTAB 
*&---------------------------------------------------------------------* 
*& Form FILL_HEADINGTABLE 
*&---------------------------------------------------------------------* 
* text 
*----------------------------------------------------------------------* 
* -->P_HEADING text * 
*----------------------------------------------------------------------* 
form fill_headingtable tables p_heading structure heading 
using tablename. 
case tablename. 
when 'HEADING'. 
p_heading-typ = 'H'. 
concatenate 
' REPORT NAME:-' syrepid 
' ABB Industry Pte Ltd' into p_heading-info. 
append p_heading. 
write sy-datum using edit mask '__/__/____' to sydatum. 

concatenate 
' DATE:-' sydatum ' USER: ' sy-uname 'PAGE NO:' sypagno 
into p_heading-info. 
append p_heading. 
when 'HEADING1'. 
p_heading-typ = 'H'. 
p_heading-info = 'TOP-OF-COVER-PAGE'. 
append p_heading. 
when 'HEADING2'. 
p_heading-typ = 'H'. 
p_heading-info = 'END-OF-COVER-PAGE'. 
append p_heading. 
when 'HEADING3'. 
p_heading-typ = 'H'. 
p_heading-info = 'FOREIGN-TOP-OF-PAGE'. 
append p_heading. 
when 'HEADING4'. 
p_heading-typ = 'H'. 
p_heading-info = 'FOREIGN-END-OF-PAGE'. 
append p_heading. 
* WHEN 'HEADING5'. 
* P_HEADING-TYP = 'H'. 
* P_HEADING-INFO = 'LIST-MODIFY'. 
* APPEND P_HEADING. 
when 'HEADING6'. 
p_heading-typ = 'H'. 
p_heading-info = 'END-OF-PAGE'. 
append p_heading. 
when 'HEADING7'. 
p_heading-typ = 'H'. 
p_heading-info = 'END-OF-LIST'. 
append p_heading. 
when 'HEADING8'. 
p_heading-typ = 'H'. 
p_heading-info = 'TOP-OF-LIST'. 
append p_heading. 
endcase. 
endform. " FILL_HEADINGTABLE 

*---------------------------------------------------------------------* 
* FORM TOP_OF_PAGE * 
*---------------------------------------------------------------------* 
* ........ * 
*---------------------------------------------------------------------* 
form top_of_page. 
call function 'REUSE_ALV_COMMENTARY_WRITE' 
exporting 
it_list_commentary = heading[] 
exceptions 
others = 1. 
endform. 
*&---------------------------------------------------------------------* 
*& Form FILL_COLORSTRUCT 
*&---------------------------------------------------------------------* 
* text 
*----------------------------------------------------------------------* 
* -->P_COLORSTRUCT text * 
*----------------------------------------------------------------------* 
form fill_colorstruct using p_colorstruct type slis_coltypes . 
p_colorstruct-heacolfir-col = 6. 
p_colorstruct-heacolfir-int = 1. 
p_colorstruct-heacolfir-inv = 1. 
endform. " FILL_COLORSTRUCT 

*---------------------------------------------------------------------* 
* FORM TOP_OF_COVERPAGE * 
*---------------------------------------------------------------------* 
* ........ * 
*---------------------------------------------------------------------* 
form top_of_coverpage. 
call function 'REUSE_ALV_COMMENTARY_WRITE' 
exporting 
it_list_commentary = heading1[] 
exceptions 
others = 1. 
endform. 

*---------------------------------------------------------------------* 
* FORM END_OF_COVERPAGE * 
*---------------------------------------------------------------------* 
* ........ * 
*---------------------------------------------------------------------* 
form end_of_coverpage. 
call function 'REUSE_ALV_COMMENTARY_WRITE' 
exporting 
it_list_commentary = heading2[] 
exceptions 
others = 1. 
endform. 

*---------------------------------------------------------------------* 
* FORM FOREIGN_TOP_OF_PAGE * 
*---------------------------------------------------------------------* 
* ........ * 
*---------------------------------------------------------------------* 
form foreign_top_of_page. 
call function 'REUSE_ALV_COMMENTARY_WRITE' 
exporting 
it_list_commentary = heading3[] 
exceptions 
others = 1. 

endform. 

*---------------------------------------------------------------------* 
* FORM FOREIGN_END_OF_PAGE * 
*---------------------------------------------------------------------* 
* ........ * 
*---------------------------------------------------------------------* 
form foreign_end_of_page. 
call function 'REUSE_ALV_COMMENTARY_WRITE' 
exporting 
it_list_commentary = heading4[] 
exceptions 
others = 1. 
endform. 

*---------------------------------------------------------------------* 
* FORM LIST_MODIFY * 
*---------------------------------------------------------------------* 
* ........ * 
*---------------------------------------------------------------------* 
*FORM LIST_MODIFY. 
* CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' 
* EXPORTING 
* IT_LIST_COMMENTARY = HEADING5[] 
* EXCEPTIONS 
* OTHERS = 1. 
*ENDFORM. 

*---------------------------------------------------------------------* 
* FORM END_OF_PAGE * 
*---------------------------------------------------------------------* 
* ........ * 
*---------------------------------------------------------------------* 
form end_of_page. 
call function 'REUSE_ALV_COMMENTARY_WRITE' 
exporting 
it_list_commentary = heading6[] 
exceptions 
others = 1. 
endform. 

*---------------------------------------------------------------------* 
* FORM END_OF_LIST * 
*---------------------------------------------------------------------* 
* ........ * 
*---------------------------------------------------------------------* 
form end_of_list. 
call function 'REUSE_ALV_COMMENTARY_WRITE' 
exporting 
it_list_commentary = heading7[] 
exceptions 
others = 1. 
endform. 

*---------------------------------------------------------------------* 
* FORM TOP_OF_LIST * 
*---------------------------------------------------------------------* 
* ........ * 
*---------------------------------------------------------------------* 
form top_of_list. 
call function 'REUSE_ALV_COMMENTARY_WRITE' 
exporting 
it_list_commentary = heading8[] 
exceptions 
others = 1. 
endform. 

*--- End of Program 

Reward points if it is usefull ..

Girish

0 Kudos

I'd avoid using this rather "Elephantine" way of doing it. This is really the SAP equivalent of <b> "Dinosaur Technology". </b>

and the amount of FM calls you have in a simple program is just incredible.

<b>It's NOT OO and will be deprecated (i.e made obsolete) in the near future.

Uwe's link above is a MUCH better way of solving the problem and it's OO.

CLASSES and OO are the way to do it.</b>

Using Classes should really make the application part of the program simple.

Once you've defined your class you can then simply code in your program something like

CALL METHOD z_object->display_grid

EXPORTING

g_outtab = <dyn_table>

g_fldcat = it_fldcat

CHANGING

it_fldcat = it_fldcat

gt_outtab = <dyn_table>.

You won't need all the baggage you had to use with the old FM calls and the amount of code required in your program should now be very small making it much easier in any case.

Cheers

Jimbo

uwe_schieferstein
Active Contributor
0 Kudos

Hello

Have a look at my sample report <b>ZUS_SDN_TWO_ALV_GRIDS</b> in thread

The report focuses on the essential part of event handling only.

Regards

Uwe