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.
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:
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
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.
p_programa_info = p_programa.
ENDMETHOD.
METHOD ev_right_click.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM right_click
IN PROGRAM (p_programa_info) IF FOUND.
ENDMETHOD.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM right_click
IN PROGRAM (p_programa_info) IF FOUND.
ENDMETHOD.
METHOD ev_left_click_design.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM left_click_design
IN PROGRAM (p_programa_info) IF FOUND.
ENDMETHOD.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM left_click_design
IN PROGRAM (p_programa_info) IF FOUND.
ENDMETHOD.
METHOD ev_move_control.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM move_control
IN PROGRAM (p_programa_info) IF FOUND.
ENDMETHOD.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM move_control
IN PROGRAM (p_programa_info) IF FOUND.
ENDMETHOD.
METHOD ev_size_control.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM size_control
IN PROGRAM (p_programa_info) IF FOUND.
ENDMETHOD.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM size_control
IN PROGRAM (p_programa_info) IF FOUND.
ENDMETHOD.
METHOD ev_left_click_run.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM left_click_run
IN PROGRAM (p_programa_info) IF FOUND.
ENDMETHOD.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM left_click_run
IN PROGRAM (p_programa_info) IF FOUND.
ENDMETHOD.
METHOD ev_def_context_menu_request.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM default_context_menu_request
IN PROGRAM (p_programa_info) USING menu IF FOUND.
ENDMETHOD.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM default_context_menu_request
IN PROGRAM (p_programa_info) USING menu IF FOUND.
ENDMETHOD.
METHOD ev_hea_context_menu_request.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM header_context_menu_request
IN PROGRAM (p_programa_info) USING fieldname menu IF FOUND.
ENDMETHOD.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM header_context_menu_request
IN PROGRAM (p_programa_info) USING fieldname menu IF FOUND.
ENDMETHOD.
METHOD ev_hea_context_menu_select.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM header_context_menu_select
IN PROGRAM (p_programa_info) USING fieldname fcode IF FOUND.
ENDMETHOD.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM header_context_menu_select
IN PROGRAM (p_programa_info) USING fieldname fcode IF FOUND.
ENDMETHOD.
METHOD ev_before_user_command.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM before_user_command
IN PROGRAM (p_programa_info) USING ucomm IF FOUND.
ENDMETHOD.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM before_user_command
IN PROGRAM (p_programa_info) USING ucomm IF FOUND.
ENDMETHOD.
METHOD ev_after_user_command.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM after_user_command
IN PROGRAM (p_programa_info) USING ucomm IF FOUND.
ENDMETHOD.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM after_user_command
IN PROGRAM (p_programa_info) USING ucomm IF FOUND.
ENDMETHOD.
METHOD ev_top_of_page.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM top_of_page
IN PROGRAM (p_programa_info) IF FOUND.
ENDMETHOD.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM top_of_page
IN PROGRAM (p_programa_info) IF FOUND.
ENDMETHOD.
METHOD ev_def_context_menu_select.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM default_context_menu_select
IN PROGRAM (p_programa_info) USING fcode IF FOUND.
ENDMETHOD.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM default_context_menu_select
IN PROGRAM (p_programa_info) USING fcode IF FOUND.
ENDMETHOD.
METHOD ev_top_of_list.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM top_of_list
IN PROGRAM (p_programa_info) IF FOUND.
ENDMETHOD.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM top_of_list
IN PROGRAM (p_programa_info) IF FOUND.
ENDMETHOD.
METHOD ev_button_click.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM button_click
IN PROGRAM (p_programa_info) USING fieldname node_key IF FOUND.
ENDMETHOD.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM button_click
IN PROGRAM (p_programa_info) USING fieldname node_key IF FOUND.
ENDMETHOD.
METHOD ev_checkbox_change.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM checkbox_change
IN PROGRAM (p_programa_info) USING checked fieldname node_key IF FOUND.
ENDMETHOD.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM checkbox_change
IN PROGRAM (p_programa_info) USING checked fieldname node_key IF FOUND.
ENDMETHOD.
METHOD ev_expand_nc.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM expand_nc
IN PROGRAM (p_programa_info) USING node_key IF FOUND.
ENDMETHOD.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM expand_nc
IN PROGRAM (p_programa_info) USING node_key IF FOUND.
ENDMETHOD.
METHOD ev_header_click.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM header_click
IN PROGRAM (p_programa_info) USING fieldname IF FOUND.
ENDMETHOD.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM header_click
IN PROGRAM (p_programa_info) USING fieldname IF FOUND.
ENDMETHOD.
METHOD ev_hea_context_menu.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM header_context_menu
IN PROGRAM (p_programa_info) USING fieldname ucomm IF FOUND.
ENDMETHOD.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM header_context_menu
IN PROGRAM (p_programa_info) USING fieldname ucomm IF FOUND.
ENDMETHOD.
METHOD ev_item_context_menu_request.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM item_context_menu_request
IN PROGRAM (p_programa_info) USING menu IF FOUND.
ENDMETHOD.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM item_context_menu_request
IN PROGRAM (p_programa_info) USING menu IF FOUND.
ENDMETHOD.
METHOD ev_item_context_menu_selected.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM item_context_menu_selected
IN PROGRAM (p_programa_info) USING fcode fieldname node_key IF FOUND.
ENDMETHOD.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM item_context_menu_selected
IN PROGRAM (p_programa_info) USING fcode fieldname node_key IF FOUND.
ENDMETHOD.
METHOD ev_item_double_click.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM item_double_click
IN PROGRAM (p_programa_info) USING fieldname node_key IF FOUND.
ENDMETHOD.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM item_double_click
IN PROGRAM (p_programa_info) USING fieldname node_key IF FOUND.
ENDMETHOD.
METHOD ev_item_keypress.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM item_keypress
IN PROGRAM (p_programa_info) USING fieldname key node_key IF FOUND.
ENDMETHOD.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM item_keypress
IN PROGRAM (p_programa_info) USING fieldname key node_key IF FOUND.
ENDMETHOD.
METHOD ev_link_click.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM link_click
IN PROGRAM (p_programa_info) USING fieldname node_key IF FOUND.
ENDMETHOD.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM link_click
IN PROGRAM (p_programa_info) USING fieldname node_key IF FOUND.
ENDMETHOD.
METHOD ev_node_context_menu_request.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM node_context_menu_request
IN PROGRAM (p_programa_info) USING menu IF FOUND.
ENDMETHOD.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM node_context_menu_request
IN PROGRAM (p_programa_info) USING menu IF FOUND.
ENDMETHOD.
METHOD ev_node_context_menu_selected.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM node_context_menu_selected
IN PROGRAM (p_programa_info) USING fcode node_key IF FOUND.
ENDMETHOD.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM node_context_menu_selected
IN PROGRAM (p_programa_info) USING fcode node_key IF FOUND.
ENDMETHOD.
METHOD ev_on_drag.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM on_drag
IN PROGRAM (p_programa_info) USING drag_drop_object fieldname node_key IF FOUND.
ENDMETHOD.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM on_drag
IN PROGRAM (p_programa_info) USING drag_drop_object fieldname node_key IF FOUND.
ENDMETHOD.
METHOD ev_on_drag_multiple.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM on_drag_multiple
IN PROGRAM (p_programa_info) USING drag_drop_object fieldname node_key_table IF FOUND.
ENDMETHOD.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM on_drag_multiple
IN PROGRAM (p_programa_info) USING drag_drop_object fieldname node_key_table IF FOUND.
ENDMETHOD.
METHOD ev_on_drop.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM on_drop
IN PROGRAM (p_programa_info) USING drag_drop_object node_key IF FOUND.
ENDMETHOD.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM on_drop
IN PROGRAM (p_programa_info) USING drag_drop_object node_key IF FOUND.
ENDMETHOD.
METHOD ev_on_drop_complete.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM on_drop_complete
IN PROGRAM (p_programa_info) USING drag_drop_object fieldname node_key IF FOUND.
ENDMETHOD.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM on_drop_complete
IN PROGRAM (p_programa_info) USING drag_drop_object fieldname node_key IF FOUND.
ENDMETHOD.
METHOD ev_on_drop_complete_multiple.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM on_drop_complete_multiple
IN PROGRAM (p_programa_info) USING drag_drop_object fieldname node_key_table IF FOUND.
ENDMETHOD.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM on_drop_complete_multiple
IN PROGRAM (p_programa_info) USING drag_drop_object fieldname node_key_table IF FOUND.
ENDMETHOD.
METHOD ev_on_drop_get_flavor.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM on_drop_get_flavor
IN PROGRAM (p_programa_info) USING drag_drop_object IF FOUND.
ENDMETHOD.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM on_drop_get_flavor
IN PROGRAM (p_programa_info) USING drag_drop_object IF FOUND.
ENDMETHOD.
METHOD ev_selection_changed.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM selection_changed
IN PROGRAM (p_programa_info) USING node_key IF FOUND.
ENDMETHOD.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM selection_changed
IN PROGRAM (p_programa_info) USING node_key IF FOUND.
ENDMETHOD.
METHOD ev_node_keypress.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM node_keypress
IN PROGRAM (p_programa_info) USING key node_key IF FOUND.
ENDMETHOD.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM node_keypress
IN PROGRAM (p_programa_info) USING key node_key IF FOUND.
ENDMETHOD.
method EV_NODE_DOUBLE_CLICK.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM node_double_click
IN PROGRAM (p_programa_info) USING node_key IF FOUND.
endmethod.
PERFORM flag_tree
IN PROGRAM (p_programa_info) IF FOUND.
PERFORM node_double_click
IN PROGRAM (p_programa_info) USING 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