Primero, empezamos creando la clase:
ZCL_ALV_GRID_INFO
En Impl. / Sección Pública copiamos lo siguiente:
class ZCL_ALV_GRID_INFO definition
public
inheriting from CL_GUI_ALV_GRID
final
create public .
*"* public components of class ZCL_ALV_GRID_INFO
*"* do not include other source files here!!!
public section.
class-data P_PROGRAMA_INFO type PROGNAME .
class-data AO_ALV type ref to ZCL_ALV_GRID_MAIN .
methods EV_AFTER_REFRESH
for event AFTER_REFRESH of ZCL_ALV_GRID_INFO .
methods EV_AFTER_USER_COMMAND
for event AFTER_USER_COMMAND of ZCL_ALV_GRID_INFO
importing
!E_UCOMM
!E_SAVED
!E_NOT_PROCESSED .
methods EV_BEFORE_USER_COMMAND
for event BEFORE_USER_COMMAND of ZCL_ALV_GRID_INFO
importing
!E_UCOMM .
methods EV_BUTTON_CLICK
for event BUTTON_CLICK of ZCL_ALV_GRID_INFO
importing
!ES_COL_ID
!ES_ROW_NO .
methods EV_CONTEXT_MENU_REQUEST
for event CONTEXT_MENU_REQUEST of ZCL_ALV_GRID_INFO
importing
!E_OBJECT .
methods EV_DATA_CHANGED
for event DATA_CHANGED of ZCL_ALV_GRID_INFO
importing
!ER_DATA_CHANGED
!E_ONF4
!E_ONF4_BEFORE
!E_ONF4_AFTER
!E_UCOMM .
methods EV_DATA_CHANGED_FINISHED
for event DATA_CHANGED_FINISHED of ZCL_ALV_GRID_INFO
importing
!E_MODIFIED
!ET_GOOD_CELLS .
methods EV_DELAYED_CALLBACK
for event DELAYED_CALLBACK of ZCL_ALV_GRID_INFO .
methods EV_DEL_CHANGED_SEL_CALLBACK
for event DELAYED_CHANGED_SEL_CALLBACK of ZCL_ALV_GRID_INFO .
methods EV_DOUBLE_CLICK
for event DOUBLE_CLICK of ZCL_ALV_GRID_INFO
importing
!E_ROW
!E_COLUMN
!ES_ROW_NO .
methods EV_END_OF_LIST
for event END_OF_LIST of ZCL_ALV_GRID_INFO
importing
!E_DYNDOC_ID .
methods EV_HOTSPOT_CLICK
for event HOTSPOT_CLICK of ZCL_ALV_GRID_INFO
importing
!E_ROW_ID
!E_COLUMN_ID
!ES_ROW_NO .
methods EV_LEFT_CLICK_DESIGN
for event LEFT_CLICK_DESIGN of ZCL_ALV_GRID_INFO .
methods EV_LEFT_CLICK_RUN
for event LEFT_CLICK_RUN of ZCL_ALV_GRID_INFO .
methods EV_MENU_BUTTON
for event MENU_BUTTON of ZCL_ALV_GRID_INFO
importing
!E_OBJECT
!E_UCOMM .
methods EV_MOVE_CONTROL
for event MOVE_CONTROL of ZCL_ALV_GRID_INFO .
methods EV_ONDRAG
for event ONDRAG of ZCL_ALV_GRID_INFO
importing
!E_ROW
!E_COLUMN
!ES_ROW_NO
!E_DRAGDROPOBJ .
methods EV_ONDROP
for event ONDROP of ZCL_ALV_GRID_INFO
importing
!E_ROW
!E_COLUMN
!ES_ROW_NO
!E_DRAGDROPOBJ .
methods EV_ONDROPCOMPLETE
for event ONDROPCOMPLETE of ZCL_ALV_GRID_INFO
importing
!E_ROW
!E_COLUMN
!ES_ROW_NO
!E_DRAGDROPOBJ .
methods EV_ONDROPGETFLAVOR
for event ONDROPGETFLAVOR of ZCL_ALV_GRID_INFO
importing
!E_ROW
!E_COLUMN
!ES_ROW_NO
!E_DRAGDROPOBJ
!E_FLAVORS .
methods EV_ONF1
for event ONF1 of ZCL_ALV_GRID_INFO
importing
!E_FIELDNAME
!ES_ROW_NO
!ER_EVENT_DATA .
methods EV_ONF4
for event ONF4 of ZCL_ALV_GRID_INFO
importing
!E_FIELDNAME
!E_FIELDVALUE
!ES_ROW_NO
!ER_EVENT_DATA
!ET_BAD_CELLS
!E_DISPLAY .
methods EV_PRINT_END_OF_LIST
for event PRINT_END_OF_LIST of ZCL_ALV_GRID_INFO .
methods EV_PRINT_END_OF_PAGE
for event PRINT_END_OF_PAGE of ZCL_ALV_GRID_INFO .
methods EV_PRINT_TOP_OF_LIST
for event PRINT_TOP_OF_LIST of ZCL_ALV_GRID_INFO .
methods EV_PRINT_TOP_OF_PAGE
for event PRINT_TOP_OF_PAGE of ZCL_ALV_GRID_INFO
importing
!TABLE_INDEX .
methods EV_RIGHT_CLICK
for event RIGHT_CLICK of ZCL_ALV_GRID_INFO .
methods EV_SIZE_CONTROL
for event SIZE_CONTROL of ZCL_ALV_GRID_INFO .
methods EV_SUBTOTAL_TEXT
for event SUBTOTAL_TEXT of ZCL_ALV_GRID_INFO
importing
!ES_SUBTOTTXT_INFO
!EP_SUBTOT_LINE
!E_EVENT_DATA .
methods EV_TOOLBAR
for event TOOLBAR of ZCL_ALV_GRID_INFO
importing
!E_OBJECT
!E_INTERACTIVE .
methods EV_TOP_OF_PAGE
for event TOP_OF_PAGE of ZCL_ALV_GRID_INFO
importing
!E_DYNDOC_ID
!TABLE_INDEX .
methods EV_USER_COMMAND
for event USER_COMMAND of ZCL_ALV_GRID_INFO
importing
!E_UCOMM .
methods GET_NAME_PROGRAM
importing
!P_PROGRAMA type PROGNAME .
Tal como en la gráfica:
Cerciorarse de que todos los métodos tengan asignado el manejador de eventos correspondiente,
tal como en la gráfica:
En cada método definimos lo siguiente:
METHOD ev_after_refresh.
PERFORM after_refresh
IN PROGRAM (p_programa_info) IF FOUND.
ENDMETHOD.
METHOD ev_after_user_command.
PERFORM after_user_command
IN PROGRAM (p_programa_info) USING e_ucomm e_saved e_not_processed IF FOUND.
ENDMETHOD.
METHOD ev_before_user_command.
PERFORM before_user_command
IN PROGRAM (p_programa_info) USING e_ucomm IF FOUND.
ENDMETHOD.
METHOD ev_button_click.
PERFORM button_click
IN PROGRAM (p_programa_info) USING es_col_id es_row_no IF FOUND.
ENDMETHOD.
METHOD ev_context_menu_request.
PERFORM context_menu_request
IN PROGRAM (p_programa_info) USING e_object IF FOUND.
ENDMETHOD.
METHOD ev_data_changed.
PERFORM data_changed
IN PROGRAM (p_programa_info) USING er_data_changed e_onf4 e_onf4_before
e_onf4_after e_ucomm IF FOUND.
ENDMETHOD.
METHOD ev_data_changed_finished.
PERFORM data_changed_finished
IN PROGRAM (p_programa_info) USING e_modified et_good_cells IF FOUND.
ENDMETHOD.
METHOD ev_delayed_callback.
PERFORM delayed_callback
IN PROGRAM (p_programa_info) IF FOUND.
ENDMETHOD.
METHOD ev_del_changed_sel_callback.
PERFORM delayed_changed_sel_callback
IN PROGRAM (p_programa_info) IF FOUND.
ENDMETHOD.
METHOD ev_double_click.
PERFORM double_click
IN PROGRAM (p_programa_info) USING e_row e_column es_row_no IF FOUND.
ENDMETHOD.
METHOD ev_end_of_list.
PERFORM end_of_list
IN PROGRAM (p_programa_info) USING e_dyndoc_id IF FOUND.
ENDMETHOD.
METHOD ev_hotspot_click.
PERFORM hotspot_click
IN PROGRAM (p_programa_info) USING e_row_id e_column_id es_row_no IF FOUND.
ENDMETHOD.
METHOD ev_left_click_design.
PERFORM left_click_design
IN PROGRAM (p_programa_info) IF FOUND.
ENDMETHOD.
METHOD ev_left_click_run.
PERFORM left_click_run
IN PROGRAM (p_programa_info) IF FOUND.
ENDMETHOD.
METHOD ev_menu_button.
PERFORM menu_button
IN PROGRAM (p_programa_info) USING e_object e_ucomm IF FOUND.
ENDMETHOD.
METHOD ev_move_control.
PERFORM move_control
IN PROGRAM (p_programa_info) IF FOUND.
ENDMETHOD.
METHOD ev_ondrag.
PERFORM ondrag
IN PROGRAM (p_programa_info) USING e_row e_column es_row_no e_dragdropobj IF FOUND.
ENDMETHOD.
METHOD ev_ondrop.
PERFORM ondrop
IN PROGRAM (p_programa_info) USING e_row e_column es_row_no e_dragdropobj IF FOUND.
ENDMETHOD.
METHOD ev_ondropcomplete.
PERFORM ondropcomplete
IN PROGRAM (p_programa_info) USING e_row e_column es_row_no e_dragdropobj IF FOUND.
ENDMETHOD.
METHOD ev_ondropgetflavor.
PERFORM ondropgetflavor
IN PROGRAM (p_programa_info) USING e_row e_column es_row_no e_dragdropobj e_flavors IF FOUND.
ENDMETHOD.
METHOD ev_onf1.
PERFORM onf1
IN PROGRAM (p_programa_info) USING e_fieldname es_row_no er_event_data IF FOUND.
ENDMETHOD.
METHOD ev_onf4.
PERFORM onf4
IN PROGRAM (p_programa_info) USING e_fieldname e_fieldvalue es_row_no
er_event_data et_bad_cells e_display IF FOUND.
ENDMETHOD.
METHOD ev_print_end_of_list.
PERFORM print_end_of_list
IN PROGRAM (p_programa_info) IF FOUND.
ENDMETHOD.
METHOD ev_print_end_of_page.
PERFORM print_end_of_page
IN PROGRAM (p_programa_info) IF FOUND.
ENDMETHOD.
METHOD ev_print_top_of_list.
PERFORM print_top_of_list
IN PROGRAM (p_programa_info) IF FOUND.
ENDMETHOD.
METHOD ev_print_top_of_page.
PERFORM print_top_op_page
IN PROGRAM (p_programa_info) USING table_index IF FOUND.
ENDMETHOD.
METHOD ev_right_click.
PERFORM right_click
IN PROGRAM (p_programa_info) IF FOUND.
ENDMETHOD.
METHOD ev_size_control.
PERFORM size_control
IN PROGRAM (p_programa_info) IF FOUND.
ENDMETHOD.
METHOD ev_subtotal_text.
PERFORM subtotal_text
IN PROGRAM (p_programa_info) USING es_subtottxt_info ep_subtot_line e_event_data IF FOUND.
ENDMETHOD.
METHOD ev_toolbar.
PERFORM toolbar
IN PROGRAM (p_programa_info) USING e_object e_interactive IF FOUND.
ENDMETHOD.
METHOD ev_top_of_page.
PERFORM top_of_page
IN PROGRAM (p_programa_info) USING e_dyndoc_id table_index IF FOUND.
ENDMETHOD.
METHOD ev_user_command.
PERFORM user_command
IN PROGRAM (p_programa_info) USING e_ucomm IF FOUND.
ENDMETHOD.
METHOD get_name_program.
p_programa_info = p_programa.
ENDMETHOD.
No hay comentarios:
Publicar un comentario