PARTE 1


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_infoIF FOUND.

ENDMETHOD.

METHOD ev_after_user_command.

  PERFORM after_user_command
    IN PROGRAM (p_programa_infoUSING e_ucomm e_saved e_not_processed IF FOUND.

ENDMETHOD.

METHOD ev_before_user_command.

  PERFORM before_user_command
    IN PROGRAM (p_programa_infoUSING e_ucomm IF FOUND.

ENDMETHOD.

METHOD ev_button_click.

  PERFORM button_click
    IN PROGRAM (p_programa_infoUSING es_col_id es_row_no IF FOUND.

ENDMETHOD.

METHOD ev_context_menu_request.

  PERFORM context_menu_request
    IN PROGRAM (p_programa_infoUSING e_object IF FOUND.

ENDMETHOD.

METHOD ev_data_changed.

  PERFORM data_changed
    IN PROGRAM (p_programa_infoUSING 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_infoUSING e_modified et_good_cells IF FOUND.

ENDMETHOD.

METHOD ev_delayed_callback.

  PERFORM delayed_callback
    IN PROGRAM (p_programa_infoIF FOUND.

ENDMETHOD.

METHOD ev_del_changed_sel_callback.

  PERFORM delayed_changed_sel_callback
    IN PROGRAM (p_programa_infoIF FOUND.

ENDMETHOD. 

METHOD ev_double_click.

  PERFORM double_click
    IN PROGRAM (p_programa_infoUSING e_row e_column es_row_no IF FOUND.

ENDMETHOD.

METHOD ev_end_of_list.

  PERFORM end_of_list
    IN PROGRAM (p_programa_infoUSING e_dyndoc_id IF FOUND.

ENDMETHOD.

METHOD ev_hotspot_click.

  PERFORM hotspot_click
    IN PROGRAM (p_programa_infoUSING 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_infoIF FOUND.

ENDMETHOD. 

METHOD ev_left_click_run.

  PERFORM left_click_run
    IN PROGRAM (p_programa_infoIF FOUND.

ENDMETHOD.

METHOD ev_menu_button.

  PERFORM menu_button
    IN PROGRAM (p_programa_infoUSING e_object e_ucomm IF FOUND.

ENDMETHOD.

METHOD ev_move_control.

  PERFORM move_control
    IN PROGRAM (p_programa_infoIF FOUND.

ENDMETHOD.

METHOD ev_ondrag.

  PERFORM ondrag
    IN PROGRAM (p_programa_infoUSING e_row e_column es_row_no e_dragdropobj IF FOUND.

ENDMETHOD.

METHOD ev_ondrop.

  PERFORM ondrop
    IN PROGRAM (p_programa_infoUSING e_row e_column es_row_no e_dragdropobj IF FOUND.

ENDMETHOD.

METHOD ev_ondropcomplete.

  PERFORM ondropcomplete
    IN PROGRAM (p_programa_infoUSING e_row e_column es_row_no e_dragdropobj IF FOUND.

ENDMETHOD.

METHOD ev_ondropgetflavor.

  PERFORM ondropgetflavor
    IN PROGRAM (p_programa_infoUSING e_row e_column es_row_no e_dragdropobj e_flavors IF FOUND.

ENDMETHOD.

METHOD ev_onf1.

  PERFORM onf1
    IN PROGRAM (p_programa_infoUSING e_fieldname es_row_no er_event_data IF FOUND.

ENDMETHOD.

METHOD ev_onf4.

  PERFORM onf4
    IN PROGRAM (p_programa_infoUSING 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_infoIF FOUND.

ENDMETHOD.

METHOD ev_print_end_of_page.

  PERFORM print_end_of_page
    IN PROGRAM (p_programa_infoIF FOUND.

ENDMETHOD. 

METHOD ev_print_top_of_list.

  PERFORM print_top_of_list
    IN PROGRAM (p_programa_infoIF FOUND.

ENDMETHOD.

METHOD ev_print_top_of_page.

  PERFORM print_top_op_page
    IN PROGRAM (p_programa_infoUSING table_index IF FOUND.

ENDMETHOD. 

METHOD ev_right_click.

  PERFORM right_click
    IN PROGRAM (p_programa_infoIF FOUND.

ENDMETHOD.

METHOD ev_size_control.

  PERFORM size_control
    IN PROGRAM (p_programa_infoIF FOUND.

ENDMETHOD.

METHOD ev_subtotal_text.

  PERFORM subtotal_text
    IN PROGRAM (p_programa_infoUSING es_subtottxt_info ep_subtot_line e_event_data IF FOUND.

ENDMETHOD.

METHOD ev_toolbar.

  PERFORM toolbar
    IN PROGRAM (p_programa_infoUSING e_object e_interactive IF FOUND.

ENDMETHOD.

METHOD ev_top_of_page.

  PERFORM top_of_page
    IN PROGRAM (p_programa_infoUSING e_dyndoc_id table_index IF FOUND.

ENDMETHOD.  

METHOD ev_user_command.

  PERFORM user_command
    IN PROGRAM (p_programa_infoUSING e_ucomm IF FOUND.

ENDMETHOD.

METHOD get_name_program.

  p_programa_info p_programa.

ENDMETHOD.


No hay comentarios:

Publicar un comentario