TRANSLATION:
Create an ALV TREE. Easy to use and has a function as close to an ALV GRID (Buttons Sort, Filter, Graphics, etc, etc) and also use its properties with only an 'X', then follow the steps.

PARTE 1 - PART 1

Empezemos.. Va a ser un poco tedioso al principio y tengamos que perder algo de tiempo. Pero lo importante es tener las clases, para luego utilizarlas en los programas de forma fácil y sin pérdida de tiempo.

Vamos a la Transacción SE24,
Creamos una clase pública. Yo le puse de nombre:
ZCL_ALV_TREE_INFO.


*********************************************************************************************************
TRANSLATION:
Let's start .. It will be a bit tedious at first and have to spend some time. But the important thing is to have classes, and then use them in programs easily and without delay.
Go to the Transaction SE24,
Create a public class. I put in name:
ZCL_ALV_TREE_INFO.


*********************************************************************************************************

 En la pestaña de atributos, agregamos el atributo siguiente:


Luego, en la pestaña de métodos vamos a crear estos métodos:




Para lograrlo implementar, procedemos de esta manera:

Ingresamos a Impl->Sección Pública y copiamos lo siguiente:


************************************************************************************
TRANSLATION:
To achieve this implementation, we proceed as follows:
We joined Impl-> Public Section and copy the following:


************************************************************************************
class ZCL_ALV_TREE_INFO definition
  public
  inheriting from CL_GUI_ALV_TREE
  final
  create public .

*"* public components of class ZCL_ALV_TREE_INFO
*"* do not include other source files here!!!
public section.

  class-data P_PROGRAMA_INFO type PROGNAME .

  methods GET_NAME_PROGRAM
    importing
      !P_PROGRAMA type PROGNAME .
  methods EV_RIGHT_CLICK
    for event RIGHT_CLICK of ZCL_ALV_TREE_INFO .
  methods EV_LEFT_CLICK_DESIGN
    for event LEFT_CLICK_DESIGN of ZCL_ALV_TREE_INFO .
  methods EV_MOVE_CONTROL
    for event MOVE_CONTROL of ZCL_ALV_TREE_INFO .
  methods EV_SIZE_CONTROL
    for event SIZE_CONTROL of ZCL_ALV_TREE_INFO .
  methods EV_LEFT_CLICK_RUN
    for event LEFT_CLICK_RUN of ZCL_ALV_TREE_INFO .
  methods EV_DEF_CONTEXT_MENU_REQUEST
    for event DEFAULT_CONTEXT_MENU_REQUEST of ZCL_ALV_TREE_INFO
    importing
      !MENU .
  methods EV_HEA_CONTEXT_MENU_REQUEST
    for event HEADER_CONTEXT_MENU_REQUEST of ZCL_ALV_TREE_INFO
    importing
      !FIELDNAME
      !MENU .
  methods EV_HEA_CONTEXT_MENU_SELECT
    for event HEADER_CONTEXT_MENU_SELECT of ZCL_ALV_TREE_INFO
    importing
      !FIELDNAME
      !FCODE .
  methods EV_BEFORE_USER_COMMAND
    for event BEFORE_USER_COMMAND of ZCL_ALV_TREE_INFO
    importing
      !UCOMM .
  methods EV_AFTER_USER_COMMAND
    for event AFTER_USER_COMMAND of ZCL_ALV_TREE_INFO
    importing
      !UCOMM .
  methods EV_TOP_OF_PAGE
    for event TOP_OF_PAGE of ZCL_ALV_TREE_INFO .
  methods EV_DEF_CONTEXT_MENU_SELECT
    for event DEFAULT_CONTEXT_MENU_SELECT of ZCL_ALV_TREE_INFO
    importing
      !FCODE .
  methods EV_TOP_OF_LIST
    for event TOP_OF_LIST of ZCL_ALV_TREE_INFO .
  methods EV_BUTTON_CLICK
    for event BUTTON_CLICK of ZCL_ALV_TREE_INFO
    importing
      !FIELDNAME
      !NODE_KEY .
  methods EV_CHECKBOX_CHANGE
    for event CHECKBOX_CHANGE of ZCL_ALV_TREE_INFO
    importing
      !CHECKED
      !FIELDNAME
      !NODE_KEY .
  methods EV_EXPAND_NC
    for event EXPAND_NC of ZCL_ALV_TREE_INFO
    importing
      !NODE_KEY .
  methods EV_HEADER_CLICK
    for event HEADER_CLICK of ZCL_ALV_TREE_INFO
    importing
      !FIELDNAME .
  methods EV_HEA_CONTEXT_MENU
    for event HEADER_CONTEXT_MENU of ZCL_ALV_TREE_INFO
    importing
      !FIELDNAME
      !UCOMM .
  methods EV_ITEM_CONTEXT_MENU_REQUEST
    for event ITEM_CONTEXT_MENU_REQUEST of ZCL_ALV_TREE_INFO
    importing
      !FIELDNAME
      !MENU
      !NODE_KEY .
  methods EV_ITEM_CONTEXT_MENU_SELECTED
    for event ITEM_CONTEXT_MENU_SELECTED of ZCL_ALV_TREE_INFO
    importing
      !FCODE
      !FIELDNAME
      !NODE_KEY .
  methods EV_ITEM_DOUBLE_CLICK
    for event ITEM_DOUBLE_CLICK of ZCL_ALV_TREE_INFO
    importing
      !FIELDNAME
      !NODE_KEY .
  methods EV_ITEM_KEYPRESS
    for event ITEM_KEYPRESS of ZCL_ALV_TREE_INFO
    importing
      !FIELDNAME
      !KEY
      !NODE_KEY .
  methods EV_LINK_CLICK
    for event LINK_CLICK of ZCL_ALV_TREE_INFO
    importing
      !FIELDNAME
      !NODE_KEY .
  methods EV_NODE_CONTEXT_MENU_REQUEST
    for event NODE_CONTEXT_MENU_REQUEST of ZCL_ALV_TREE_INFO
    importing
      !MENU
      !NODE_KEY .
  methods EV_NODE_CONTEXT_MENU_SELECTED
    for event NODE_CONTEXT_MENU_SELECTED of ZCL_ALV_TREE_INFO
    importing
      !FCODE
      !NODE_KEY .
  methods EV_ON_DRAG
    for event ON_DRAG of ZCL_ALV_TREE_INFO
    importing
      !DRAG_DROP_OBJECT
      !FIELDNAME
      !NODE_KEY .
  methods EV_ON_DRAG_MULTIPLE
    for event ON_DRAG_MULTIPLE of ZCL_ALV_TREE_INFO
    importing
      !DRAG_DROP_OBJECT
      !FIELDNAME
      !NODE_KEY_TABLE .
  methods EV_ON_DROP
    for event ON_DROP of ZCL_ALV_TREE_INFO
    importing
      !DRAG_DROP_OBJECT
      !NODE_KEY .
  methods EV_ON_DROP_COMPLETE
    for event ON_DROP_COMPLETE of ZCL_ALV_TREE_INFO
    importing
      !DRAG_DROP_OBJECT
      !FIELDNAME
      !NODE_KEY .
  methods EV_ON_DROP_COMPLETE_MULTIPLE
    for event ON_DROP_COMPLETE_MULTIPLE of ZCL_ALV_TREE_INFO
    importing
      !DRAG_DROP_OBJECT
      !FIELDNAME
      !NODE_KEY_TABLE .
  methods EV_ON_DROP_GET_FLAVOR
    for event ON_DROP_GET_FLAVOR of ZCL_ALV_TREE_INFO
    importing
      !DRAG_DROP_OBJECT
      !NODE_KEY .
  methods EV_SELECTION_CHANGED
    for event SELECTION_CHANGED of ZCL_ALV_TREE_INFO
    importing
      !NODE_KEY .
  methods EV_NODE_KEYPRESS
    for event NODE_KEYPRESS of ZCL_ALV_TREE_INFO
    importing
      !KEY
      !NODE_KEY .
  methods EV_NODE_DOUBLE_CLICK
    for event NODE_DOUBLE_CLICK of ZCL_ALV_TREE_INFO
    importing
      !NODE_KEY . 

-------------------------------------------------------------------------------------------------------------------------------
Ahora bien, en cada método colocamos lo siguiente:
********************************************************************
TRANSLATION:
However, each method in place as follows:


********************************************************************
METHOD GET_NAME_PROGRAM.

  p_programa_info p_programa.

ENDMETHOD. 

METHOD ev_right_click.

  PERFORM flag_tree
    IN PROGRAM (p_programa_infoIF FOUND.

  PERFORM right_click
    IN PROGRAM (p_programa_infoIF FOUND.

ENDMETHOD.  

METHOD ev_left_click_design.

  PERFORM flag_tree
    IN PROGRAM (p_programa_infoIF FOUND.

  PERFORM left_click_design
    IN PROGRAM (p_programa_infoIF FOUND.

ENDMETHOD. 

METHOD ev_move_control.

  PERFORM flag_tree
    IN PROGRAM (p_programa_infoIF FOUND.

  PERFORM move_control
    IN PROGRAM (p_programa_infoIF FOUND.

ENDMETHOD.  

METHOD ev_size_control.
  PERFORM flag_tree
    IN PROGRAM (p_programa_infoIF FOUND.

  PERFORM size_control
    IN PROGRAM (p_programa_infoIF FOUND.

ENDMETHOD. 

METHOD ev_left_click_run.

  PERFORM flag_tree
    IN PROGRAM (p_programa_infoIF FOUND.

  PERFORM left_click_run
    IN PROGRAM (p_programa_infoIF FOUND.

ENDMETHOD.  

METHOD ev_def_context_menu_request.

  PERFORM flag_tree
    IN PROGRAM (p_programa_infoIF FOUND.

  PERFORM default_context_menu_request
    IN PROGRAM (p_programa_infoUSING menu IF FOUND.

ENDMETHOD. 

METHOD ev_hea_context_menu_request.
  PERFORM flag_tree
    IN PROGRAM (p_programa_infoIF FOUND.

  PERFORM header_context_menu_request
    IN PROGRAM (p_programa_infoUSING fieldname menu IF FOUND.

ENDMETHOD. 

METHOD ev_hea_context_menu_select.

  PERFORM flag_tree
    IN PROGRAM (p_programa_infoIF FOUND.

  PERFORM header_context_menu_select
    IN PROGRAM (p_programa_infoUSING fieldname fcode IF FOUND.

ENDMETHOD.  

METHOD ev_before_user_command.

  PERFORM flag_tree
    IN PROGRAM (p_programa_infoIF FOUND.

  PERFORM before_user_command
    IN PROGRAM (p_programa_infoUSING ucomm IF FOUND.

ENDMETHOD. 

METHOD ev_after_user_command.

  PERFORM flag_tree
    IN PROGRAM (p_programa_infoIF FOUND.

  PERFORM after_user_command
    IN PROGRAM (p_programa_infoUSING ucomm IF FOUND.

ENDMETHOD.  

METHOD ev_top_of_page.
  PERFORM flag_tree
    IN PROGRAM (p_programa_infoIF FOUND.

  PERFORM top_of_page
    IN PROGRAM (p_programa_infoIF FOUND.

ENDMETHOD. 

METHOD ev_def_context_menu_select.

  PERFORM flag_tree
    IN PROGRAM (p_programa_infoIF FOUND.

  PERFORM default_context_menu_select
    IN PROGRAM (p_programa_infoUSING fcode IF FOUND.

ENDMETHOD.  

METHOD ev_top_of_list.

  PERFORM flag_tree
    IN PROGRAM (p_programa_infoIF FOUND.

  PERFORM top_of_list
    IN PROGRAM (p_programa_infoIF FOUND.

ENDMETHOD.

METHOD ev_button_click.

  PERFORM flag_tree
    IN PROGRAM (p_programa_infoIF FOUND.

  PERFORM button_click
    IN PROGRAM (p_programa_infoUSING fieldname node_key IF FOUND.

ENDMETHOD.

METHOD ev_checkbox_change.

  PERFORM flag_tree
    IN PROGRAM (p_programa_infoIF FOUND.

  PERFORM checkbox_change
    IN PROGRAM (p_programa_infoUSING checked fieldname node_key IF FOUND.

ENDMETHOD. 

METHOD ev_expand_nc.

  PERFORM flag_tree
    IN PROGRAM (p_programa_infoIF FOUND.

  PERFORM expand_nc
    IN PROGRAM (p_programa_infoUSING node_key IF FOUND.

ENDMETHOD.  

METHOD ev_header_click.
  PERFORM flag_tree
    IN PROGRAM (p_programa_infoIF FOUND.

  PERFORM header_click
    IN PROGRAM (p_programa_infoUSING fieldname IF FOUND.

ENDMETHOD. 

METHOD ev_hea_context_menu.

  PERFORM flag_tree
    IN PROGRAM (p_programa_infoIF FOUND.

  PERFORM header_context_menu
    IN PROGRAM (p_programa_infoUSING fieldname ucomm IF FOUND.

ENDMETHOD.  

METHOD ev_item_context_menu_request.
  PERFORM flag_tree
    IN PROGRAM (p_programa_infoIF FOUND.

  PERFORM item_context_menu_request
    IN PROGRAM (p_programa_infoUSING menu IF FOUND.

ENDMETHOD. 

METHOD ev_item_context_menu_selected.
  PERFORM flag_tree
    IN PROGRAM (p_programa_infoIF FOUND.

  PERFORM item_context_menu_selected
    IN PROGRAM (p_programa_infoUSING fcode fieldname node_key IF FOUND.

ENDMETHOD.  

METHOD ev_item_double_click.
  PERFORM flag_tree
    IN PROGRAM (p_programa_infoIF FOUND.

  PERFORM item_double_click
    IN PROGRAM (p_programa_infoUSING fieldname node_key IF FOUND.

ENDMETHOD. 

METHOD ev_item_keypress.

  PERFORM flag_tree
    IN PROGRAM (p_programa_infoIF FOUND.

  PERFORM item_keypress
    IN PROGRAM (p_programa_infoUSING fieldname key node_key IF FOUND.

ENDMETHOD.  

METHOD ev_link_click.

  PERFORM flag_tree
    IN PROGRAM (p_programa_infoIF FOUND.

  PERFORM link_click
    IN PROGRAM (p_programa_infoUSING fieldname node_key IF FOUND.

ENDMETHOD. 

METHOD ev_node_context_menu_request.

  PERFORM flag_tree
    IN PROGRAM (p_programa_infoIF FOUND.

  PERFORM node_context_menu_request
    IN PROGRAM (p_programa_infoUSING menu IF FOUND.

ENDMETHOD.  

METHOD ev_node_context_menu_selected.

  PERFORM flag_tree
    IN PROGRAM (p_programa_infoIF FOUND.

  PERFORM node_context_menu_selected
    IN PROGRAM (p_programa_infoUSING fcode node_key IF FOUND.

ENDMETHOD. 

METHOD ev_on_drag.
  PERFORM flag_tree
    IN PROGRAM (p_programa_infoIF FOUND.

  PERFORM on_drag
    IN PROGRAM (p_programa_infoUSING drag_drop_object fieldname node_key IF FOUND.

ENDMETHOD.  

METHOD ev_on_drag_multiple.
  PERFORM flag_tree
    IN PROGRAM (p_programa_infoIF FOUND.

  PERFORM on_drag_multiple
    IN PROGRAM (p_programa_infoUSING drag_drop_object fieldname node_key_table IF FOUND.

ENDMETHOD. 

METHOD ev_on_drop.
  PERFORM flag_tree
    IN PROGRAM (p_programa_infoIF FOUND.

  PERFORM on_drop
    IN PROGRAM (p_programa_infoUSING drag_drop_object node_key IF FOUND.

ENDMETHOD. 

METHOD ev_on_drop_complete.

  PERFORM flag_tree
    IN PROGRAM (p_programa_infoIF FOUND.

  PERFORM on_drop_complete
    IN PROGRAM (p_programa_infoUSING drag_drop_object fieldname node_key IF FOUND.

ENDMETHOD. 

METHOD ev_on_drop_complete_multiple.

  PERFORM flag_tree
    IN PROGRAM (p_programa_infoIF FOUND.

  PERFORM on_drop_complete_multiple
    IN PROGRAM (p_programa_infoUSING drag_drop_object fieldname node_key_table IF FOUND.

ENDMETHOD.  

METHOD ev_on_drop_get_flavor.

  PERFORM flag_tree
    IN PROGRAM (p_programa_infoIF FOUND.

  PERFORM on_drop_get_flavor
    IN PROGRAM (p_programa_infoUSING drag_drop_object IF FOUND.

ENDMETHOD. 

METHOD ev_selection_changed.

  PERFORM flag_tree
    IN PROGRAM (p_programa_infoIF FOUND.

  PERFORM selection_changed
    IN PROGRAM (p_programa_infoUSING node_key IF FOUND.

ENDMETHOD.  

METHOD ev_node_keypress.

  PERFORM flag_tree
    IN PROGRAM (p_programa_infoIF FOUND.

  PERFORM node_keypress
    IN PROGRAM (p_programa_infoUSING key node_key IF FOUND.

ENDMETHOD. 

method EV_NODE_DOUBLE_CLICK.

  PERFORM flag_tree
    IN PROGRAM (p_programa_infoIF FOUND.

  PERFORM node_double_click
    IN PROGRAM (p_programa_infoUSING node_key IF FOUND.

endmethod.  

----------------------------------------------------------------------------------------------------------------------------
Comprobar que en cada método esté asociado a  su evento correspondiente:

Ejemplo :

***************************************************************************
 Check that each method is associated with its corresponding event:
example:


***************************************************************************

------------------------------------------------------------------------------------------------------------------------------

No hay comentarios:

Publicar un comentario