EJEMPLO DE COMO ASOCIAR EL ALV TREE CON UN PROGRAMA
Tenemos un programa el cuál un almacén tiene asignado muchas plantillas.
El
caso es que deseamos que el ALV TREE nos permita seleccionar todos ó
solamente una plantilla, para grabar. También poderlo ordenar ascendente
ó descendente, en fin como deseemos. Así mismo filtrarlo, Exportarlo a
excel, etc etc..
****************TRANSLATION*********************
EXAMPLE OF HOW TO REGISTER WITH THE CMA PROGRAM TREE
We have a program on which a store has many templates assigned.
The fact is that we want the ALV TREE allows us to select all or only a template for recording. Also being able to sort ascending or descending, in short as we wish. If we can include a graphic button, filter, export to Excel, etc etc. ..
**********************************************************
We have a program on which a store has many templates assigned.
The fact is that we want the ALV TREE allows us to select all or only a template for recording. Also being able to sort ascending or descending, in short as we wish. If we can include a graphic button, filter, export to Excel, etc etc. ..
**********************************************************
COMO LO HACEMOS?
DEFINIMOS: PERFORM INIT_TREE.
EN ALGUNA PARTE DEL PROGRAMA.
****************************TRANSLATION*************************
HOW WE DO IT?
DEFINE: PERFORM INIT_TREE.
IN ANY PORTION OF THE PROGRAM.
DEFINE: PERFORM INIT_TREE.
IN ANY PORTION OF THE PROGRAM.
***********************************************************************
FORM INIT_TREE.
CALL SCREEN 200.
ENDFORM.
******************************************************************************
SCREEN 200:
PROCESS BEFORE OUTPUT.
MODULE pbo.
PROCESS AFTER INPUT.
CHAIN.
ENDCHAIN.
MODULE exit_command_0100 AT EXIT-COMMAND.
MODULE pai.
****************************************************************************
MODULE pbo OUTPUT.
SET PF-STATUS 'SUBDIV' EXCLUDING fcode.
SET TITLEBAR 'MAINTITLE'. "TITULO
PERFORM init.
ENDMODULE.
MODULE pai INPUT.
DATA: answer TYPE c.
save_ok = ok_code.
CLEAR ok_code.
CASE save_ok.
WHEN 'EXIT'.
PERFORM exit_program.
WHEN 'BACK'.
PERFORM exit_program2.
WHEN OTHERS.
ENDCASE.
ENDMODULE. "pai INPUT
*********************************************************************************
**
YA EN EL PROGRAMA
DEFINIMOS LAS VARIABLES GLOBALES
YA EN EL PROGRAMA
DEFINIMOS LAS VARIABLES GLOBALES
****************************TRANSLATION******************************
AND IN THE PROGRAM
DEFINE GLOBAL VARIABLES
DEFINE GLOBAL VARIABLES
DATA:
ao_tree TYPE REF TO zcl_alv_tree_mainp,
ao_tree1 TYPE REF TO zcl_alv_tree_mainp,
ao_container TYPE REF TO cl_gui_custom_container,
ao_container1 TYPE REF TO cl_gui_custom_container,
ao_toolbar TYPE REF TO cl_gui_toolbar,
ao_toolbar1 TYPE REF TO cl_gui_toolbar,
ao_graphic TYPE REF TO cl_alv_graphics.
DATA: at_nodetab TYPE zwplant OCCURS 0 WITH HEADER LINE,
l_top_key TYPE lvc_nkey.
** tablas
INCLUDE <icon>.
** dynpro
* Defino una clase local para los eventos del toolbar
CLASS lcl_toolbar_event_receiverx DEFINITION.
PUBLIC SECTION.
METHODS: on_function_selected
FOR EVENT function_selected OF cl_gui_toolbar
IMPORTING fcode.
ENDCLASS. "lcl_toolbar_event_receiver DEFINITION
*----------------------------------------------------------------------*
* CLASS lcl_toolbar_event_receiver IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
** DEFINIMOS UNA CLASE PARA ADICIONAR EL BOTON DE GRABAR
CLASS lcl_toolbar_event_receiverx IMPLEMENTATION.
METHOD on_function_selected.
DATA: flag_s TYPE c.
CASE fcode.
WHEN '&GRE'.
PERFORM graba_eliminacion.
ENDCASE.
ENDMETHOD. "on_function_selected
ENDCLASS. "lcl_toolbar_event_receiver IMPLEMENTATION
*&---------------------------------------------------------------------*
*& Form GRABA_ELIMINACION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM graba_eliminacion.
FIELD-SYMBOLS: <te> TYPE table.
FIELD-SYMBOLS: <we> TYPE zwplant.
DATA: answer TYPE c.
DATA: t_table TYPE REF TO data.
CREATE DATA t_table TYPE TABLE OF zwplant.
ASSIGN t_table->* TO <te>.
CALL METHOD zcl_msg=>popup_to_confirm
EXPORTING
ps_line1 = 'Está seguro que desea eliminar '
ps_line2 = 'las plantillas seleccionadas ?'
ps_titel = 'ELIMINACION DE PLANTILLAS'
pc_hide_cancel_button = 'X'
IMPORTING
ps_respuesta = answer.
IF answer = 'J'.
** AQUI ASIGNAMOS LA INFORMACION DEL ARBOL (TABLA)
ASSIGN ao_tree->ao_nodetab->* TO <te>.
DATA: sent TYPE string.
LOOP AT <te> ASSIGNING <we>.
IF <we>-checkbox = 'X' AND <we>-type = '02'.
.........
........
........
.......
ENDLOOP.
ENDIF.
ENDFORM. "GRABA_ELIMINACION
** AQUI DEFINO UNA ESTRUCTURA PARA EL ALV TREE. En este caso es ZWPLANT.
** SIEMPRE nuestra estructura debe INCLUIR LA ESTRUCTURA ZTREE que tiene los componentes
** del árbol. El resto podemos definir lo que deseemos para el fieldcatalog.
**
ESTRUCTURA ZWPLANT:
***********TRANSLATION*****************************************
** Here I am defining a structure for ALV TREE. In this case is ZWPLANT.
ALWAYS ** our structure should include the structure that has the components ZTREE
Tree **. The rest we can define what we want for fieldcatalog.
**
ZWPLANT STRUCTURE:
ALWAYS ** our structure should include the structure that has the components ZTREE
Tree **. The rest we can define what we want for fieldcatalog.
**
ZWPLANT STRUCTURE:
CHECKBOX | XFELD | CHAR | 1 |
.INCLUDE | ZTREE | 0 | |
TKEY | LVC_NKEY | CHAR | 12 |
TYPE | SEU_TYPE | CHAR | 4 |
TSCREEN | SEU_LOCK | CHAR | 1 |
TSAVE | ZESAVE | CHAR | 1 |
TPAGE | ZEPAGINA | INT2 | 5 |
TCOM | CHAR1 | CHAR | 1 |
TEXT1 | CHAR10 | CHAR | 10 |
TEXT2 | ZEDESCP | CHAR | 20 |
NUMBER2 | INT4 | INT4 | 10 |
TEXT3 | ZEELIM | CHAR | 1 |
******************************************************************************
FORM init.
DATA: l_tree_container_name(30) TYPE c.
DATA l_hierarchy_header TYPE treev_hhdr.
DATA: at_toolbar_excl TYPE ui_functions.
DATA: ls_variant TYPE disvariant.
IF ao_tree IS INITIAL.
CREATE OBJECT ao_tree.
ls_variant-report = sy-repid.
PERFORM build_hierarchy_header CHANGING l_hierarchy_header.
** PODEMOS DEFINIR CUALQUIER ATRIBUTO QUE QUERRAMOS Y QUE
** NECESITEMOS EN ESTE CASO ESCONDEMOS CIERTOS BOTONES DE
** CALCULOS, BOTONES GRAFICOS, ETC, ETC
************************TRANSLATION***************************************
We can define ** ANY AND ATTRIBUTE that we want
IN THIS CASE ** need to hide certain buttons on
CALCULATIONS **, graphical buttons, ETC, ETC
We can define ** ANY AND ATTRIBUTE that we want
IN THIS CASE ** need to hide certain buttons on
CALCULATIONS **, graphical buttons, ETC, ETC
*********************************************************************************
CALL METHOD ao_tree->init_tree
EXPORTING
p_program = sy-repid
p_structure = 'ZWPLANT'
p_header = l_hierarchy_header
p_alv_is_variant = ls_variant
p_alv_i_save = 'A'
* p_alv_i_default = 'x'
* p_alv_is_exception_field =
* p_alv_it_special_groups =
* p_alv_it_list_commentary =
* p_alv_i_logo =
* p_alv_i_background_id =
* p_alv_it_except_qinfo =
* p_alv_it_filter =
* p_hide_mc_fc_f4 =
p_hide_mc_fc_calculate = 'X'
p_hide_mc_fc_calculate_avg = 'X'
p_hide_mc_fc_calculate_max = 'X'
p_hide_mc_fc_calculate_min = 'X'
p_hide_mc_fc_calculate_sum = 'X'
p_hide_mc_fc_col_optimize = ' '
p_hide_ap_button_gr1 = 'X'
p_hide_ap_button_gr2 = 'X'
p_hide_ap_button_xxl = ' '
p_hide_ap_button_crr = 'X'
p_hide_ap_button_crl = 'X'
p_hide_ap_button_ctl = 'X'
p_hide_ap_button_ctr = 'X'.
* p_hide_ap_button_gr2 = 'X'
* p_hide_mc_fc_collapse =
* p_hide_mc_fc_col_invisible =
* p_hide_mc_fc_col_optimize =
* p_hide_mc_fc_current_variant =
* p_hide_mc_fc_detail =
* p_hide_mc_fc_expand =
* p_hide_mc_fc_find =
* p_hide_mc_fc_graphics =
* p_hide_mc_fc_help =
* p_hide_mc_fc_load_variant =
* p_hide_mc_fc_maintain_variant =
* p_hide_mc_fc_print_back =
* p_hide_mc_fc_print_back_all =
* p_hide_mc_fc_print_prev =
* p_hide_mc_fc_print_prev_all =
* p_hide_mc_fc_save_variant =
* p_hide_mc_fc_settop =
* p_hide_mc_fc_find_more =
.
* construyo cabecera
PERFORM build_fieldcatalog.
* escondo funciones
CALL METHOD ao_tree->display_alv.
** creo la jerarquia del arbol
PERFORM select_data.
CALL METHOD cl_gui_cfw=>flush.
ENDIF.
ENDFORM. "init
*----------------------------------------------------------------------
FORM build_hierarchy_header CHANGING p_hierarchy_header TYPE treev_hhdr.
p_hierarchy_header-heading = ' C O D I G O'.
p_hierarchy_header-tooltip = ' CODIGO'.
p_hierarchy_header-width = 25.
p_hierarchy_header-width_pix = 'X'.
p_hierarchy_header-t_image = icon_partner.
ENDFORM. "build_hierarchy_header
*---------------------------------------------------------------------*
FORM build_fieldcatalog.
DATA: ls_fieldcatalog TYPE lvc_s_fcat,
ls_fcat TYPE lvc_s_fcat.
** ACCESAMOS AL FIELDCATALOG DEL ARBOL.
LOOP AT ao_tree->at_fieldcatalog INTO ls_fieldcatalog.
ls_fieldcatalog-no_out = 'X'.
IF ls_fieldcatalog-fieldname+0(3) = 'NUM'.
ls_fieldcatalog-do_sum = 'X'.
ENDIF.
IF ls_fieldcatalog-fieldname = 'TEXT3_ICON'.
ls_fieldcatalog-icon = 'X'.
ls_fieldcatalog-outputlen = 10.
ENDIF.
IF ls_fieldcatalog-fieldname = 'TEXT3'.
ls_fieldcatalog-outputlen = 1.
ENDIF.
IF ls_fieldcatalog-fieldname = 'TEXT1' OR ls_fieldcatalog-fieldname = 'NUMBER1'.
ls_fieldcatalog-no_out = 'X'.
ENDIF.
ls_fieldcatalog-col_opt = 'X'.
MODIFY ao_tree->at_fieldcatalog FROM ls_fieldcatalog.
ENDLOOP.
ENDFORM. "build_fieldcatalog
FORM select_data.
DATA: node_tab TYPE zwplant.
DATA: conta TYPE lvc_nkey.
DATA: conta_g TYPE i.
DATA: conta_g2 TYPE i.
DATA: fecha_out(11) TYPE c.
DATA: fecha_in TYPE datum.
DATA: caden TYPE string.
DATA:
label_nodex TYPE lvc_value,
item_imagex TYPE tv_image,
item_image2x TYPE tv_image,
node_imagex TYPE tv_image.
FIELD-SYMBOLS <node_header> TYPE zwplant.
FIELD-SYMBOLS <node_detail> TYPE zwplant.
TYPES: BEGIN OF t_date,
year(4) TYPE n,
month(2) TYPE n,
day(2) TYPE n,
END OF t_date.
FIELD-SYMBOLS <fecha> TYPE t_date.
DATA sep TYPE c.
** inicializacion
CLEAR: node_tab. REFRESH: at_nodetab.
CLEAR conta.
REFRESH fcode.
usuario = sy-uname.
conta = 0.
** DEFINIMOS EL NODO RAIZ
CALL METHOD ao_tree->layout_nivel_text
EXPORTING
p_key = conta
p_node_text = 'PLANTILLAS'.
node_imagex = icon_display.
CALL METHOD ao_tree->layout_nivel_node
EXPORTING
p_key = conta
p_isfolder = 'X'
* p_hidden = 'X'
p_style = cl_gui_column_tree=>style_emphasized_c "ATRIBUTO DE COLORES
p_n_image = node_imagex. "APARECERA UNA IMAGEN
** EN EL PROGRAMA HEMOS LLENADO ANTERIORMENTE DOS TABLAS INTERNAS ** EL CUAL CONTIENE LOS DATOS QUE VAMOS A PRESENTAR EN EL ALV TREE
** EN ESTE CASO SON:
TI_T508B - PADRE
TI_T508C - HIJO
****************************TRANSLATION****************************************
IN PROGRAM ** HAVE COMPLETED TWO ABOVE ** INTERNAL TABLES WHICH CONTAINS THE DATA THAT WE WILL FILE IN ALV TREE
IN THIS CASE ARE **:
TI_T508B - FATHER
TI_T508C - CHILD
IN THIS CASE ARE **:
TI_T508B - FATHER
TI_T508C - CHILD
**************************************************************************************
IF ti_t508c[] IS NOT INITIAL.
LOOP AT ti_t508b ASSIGNING <node_header>.
MOVE-CORRESPONDING <node_header> TO node_tab.
conta = conta + 1. "INDICE INTERNO - SIEMPRE DEBE IR - INTERNAL RATE - ALWAYS GO
node_tab-type = '01'. "DEFINIMOS EL PRIMER NIVEL DEL ARBOL - EJEMPLO ES H003 .... DEFINE THE FIRST LEVEL OF THE TREE - H003 EXAMPLE IS
** a nivel de texto
node_tab-name = <node_header>-text1. "EN EL EJEMPLO ES : HIPERSUR .. IN THE EXAMPLE IS: HIPERSUR
CALL METHOD ao_tree->layout_nivel_text
EXPORTING
p_key = conta
p_node_text = node_tab-name.
** a nivel de nodo - at the node level.
node_imagex = icon_warehouse.
CALL METHOD ao_tree->layout_nivel_node
EXPORTING
p_key = conta
* p_isfolder = ' '
* p_hidden = 'X'
p_style = cl_gui_column_tree=>style_intensified "COLOR
p_n_image = node_imagex. "ICONO
** a nivel de item - item-level
CALL METHOD ao_tree->layout_nivel_item
EXPORTING
p_key = conta
p_fieldname = 'TEXT3_ICON'
p_t_image = node_tab-text3_icon. "ICONO TRAIDO DESDE LA TABLA INTERNA
CALL METHOD ao_tree->layout_nivel_item
EXPORTING
p_key = conta
p_class = cl_gui_column_tree=>item_class_checkbox
p_editable = 'X'
p_fieldname = ao_tree->ao_tree->c_hierarchy_column_name. "NOMBRE DE LA COLUMNA 1
APPEND node_tab TO at_nodetab.
CLEAR node_tab.
LOOP AT ti_t508c ASSIGNING <node_detail>
WHERE btrtl = <node_header>-text1.
** EN EL EJEMPLO BUSCAMOS TODAS LAS PLANTILLAS DEL ALMACEN H003 - EXAMPLE LOOK AT ALL STORAGE TEMPLATES H003
MOVE-CORRESPONDING <node_detail> TO node_tab.
conta = conta + 1. "INDICE DEL ARBOL - TREE INDEX
node_tab-type = '02'. "SEGUNDO NIVEL DEL ARBOL - SECOND LEVEL OF THE TREE
** a nivel de texto - text level
node_tab-name = node_tab-text1.
CALL METHOD ao_tree->layout_nivel_text
EXPORTING
p_key = conta
p_node_text = node_tab-name. "NOMBRE DE LA PLANTILLA
** a nivel de nodo - at the node level.
node_imagex = icon_plant.
CALL METHOD ao_tree->layout_nivel_node
EXPORTING
p_key = conta
p_style = cl_gui_column_tree=>style_emphasized "COLOR
p_n_image = node_imagex. "ICONO
IF node_tab-text3 = 'X'. "eliminado
caden = 'ELIMINADO'.
ELSE.
caden = 'NO ELIMINADO'.
ENDIF.
** EN ESTA PARTE DESEAMOS COLOCARLE UN TEXTO AL ICONO - IN THIS PART WISH TO PLACE TEXT ICON
CALL METHOD zcl_alv_tree_main=>change_icon
EXPORTING
p_text = caden
CHANGING
p_item_image = node_tab-text3_icon.
CALL METHOD ao_tree->layout_nivel_item
EXPORTING
p_key = conta
p_fieldname = 'TEXT3_ICON'
p_t_image = node_tab-text3_icon.
** CHECBOX EN EL SEGUNDO NIVEL - CHECBOX AT SECOND LEVEL
CALL METHOD ao_tree->layout_nivel_item
EXPORTING
p_key = conta
p_class = cl_gui_column_tree=>item_class_checkbox
p_editable = 'X'
p_fieldname = ao_tree->ao_tree->c_hierarchy_column_name.
APPEND node_tab TO at_nodetab.
CLEAR node_tab.
** SI HUBIERAN MAS NIVELES.. SE LO HACE DE LA MISMA MANERA..
** ES DECIR:
** LOOP
conta = conta + 1. "INDICE DEL ARBOL
node_tab-type = '03'. "N NIVEL DEL ARBOL
......
.....
.....
.....
** ENDLOOP
** HIGHER LEVELS THEY ** .. ARE DOING THE SAME WAY ..
LOOP **
conta = conta + 1. "TREE INDEX
node_tab-type = '03 '. "N LEVEL TREE
LOOP **
conta = conta + 1. "TREE INDEX
node_tab-type = '03 '. "N LEVEL TREE
ENDLOOP.
ENDLOOP.
* ENDLOOP.
PERFORM create_nodo USING conta.
ELSE.
MESSAGE ID 'ZHRMSG' TYPE 'S' NUMBER 080. "NO HAY DATOS ALV
* LEAVE TO LIST-PROCESSING and RETURN TO SCREEN 0.
ENDIF.
ENDFORM. "select_data
*---------------------------------------------------------------------*
FORM create_nodo USING conta TYPE lvc_nkey.
DATA: flag_p TYPE c.
DATA: cadena TYPE string.
DATA: cadena2 TYPE seu_type.
DATA: cadena3 TYPE string.
DATA: cadena4 TYPE string.
* claves
DATA:
key_relative TYPE lvc_nkey,
key_relative2 TYPE lvc_nkey,
key_header TYPE lvc_nkey,
key_detail TYPE lvc_nkey,
key_subdetail TYPE lvc_nkey.
* node-layout
DATA:
label_node TYPE lvc_value,
item_image TYPE tv_image,
item_image2 TYPE tv_image,
node_image TYPE tv_image,
node_result TYPE zwtree3.
DATA idx TYPE sytabix.
CLEAR flag_p.
CLEAR node_result.
** ASIGNAMOS LA TABLA INTERNA DEL ARBOL A MEMORIA
** Assigned ** INTERNAL TABLE TO MEMORY TREE
DATA: t_tabla TYPE REF TO data.
FIELD-SYMBOLS: <ta> TYPE table.
CREATE DATA t_tabla TYPE TABLE OF zwplant.
ASSIGN t_tabla->* TO <ta>.
************************************************
INSERT LINES OF at_nodetab INTO TABLE <ta>.
**************************************************
CALL METHOD ao_tree->send_data
EXPORTING
p_nodetab = t_tabla
p_update_calculations = 'X'
* p_nodetab_graph = t_tabla_g
p_field_graphics = '9,10,14'
* p_nivel_graphics = '01'
p_collect_graphics = 'X' "DEFINO QUE LOS VALORES NO SEAN REPETIDOS - GRAFICO - DeFinE VALUES THAT ARE NOT REPEATED - GRAPHIC
* p_nodetab_graph2 = t_tabla_g2
* p_field_graphics2 = cadena
* p_nivel_graphics2 = '02'
* p_collect_graphics2 = 'X'
* p_nodetab_excel = t_tabla_e
* p_nivel_excel = '02'
p_field_out_excel = '8,9,10,11,12,13,19' "QUE POSICION DE CAMPOS APARECERAN EXCEL - FIELDS THAT APPEAR EXCEL POSITION
* p_agroup_field = '16'
* p_screen_field = 'P_SOCIEDAD'
* p_screen_page_begin = 'PAGE_MIN'
* p_screen_page_end = 'PAGE_MAX'
p_sort = t_tabla_s
p_ev_before_user_command = 'X'
p_ev_after_user_command = 'X'
p_ev_top_of_page = 'X' "ACTIVO ESTOS EVENTOS - THESE ASSETS EVENTS
p_ev_top_of_list = 'X'
* p_ev_button_click = 'X'.
* p_ev_link_click = 'X'
p_ev_checkbox_change = 'X'.
PERFORM change_toolbar. "COMO NECESITAMOS UN BOTON DE GRABAR LO DEFINIMOS - AS WE NEED A RECORD BUTTON DEFINE IT
ENDFORM. "create_nodo
*&---------------------------------------------------------------------*
*& Form build_comment
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PT_LIST_COMMENTARY text
* -->P_LOGO text
*----------------------------------------------------------------------*
FORM build_comment USING
pt_list_commentary TYPE slis_t_listheader
p_logo TYPE sdydo_value.
DATA: ls_line TYPE slis_listheader.
CLEAR ls_line.
ls_line-typ = 'H'.
ls_line-info = 'PLANTILLAS X ALMACEN'.
APPEND ls_line TO pt_list_commentary.
ls_line-typ = 'S'.
ls_line-key = 'USUARIO :'.
ls_line-info = usuario.
APPEND ls_line TO pt_list_commentary.
* p_logo = 'ENJOYSAP_LOGO'.
ENDFORM. "build_comment
*---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form change_toolbar
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM change_toolbar.
** creamos el toolbar
CALL METHOD ao_tree->ao_tree->get_toolbar_object
IMPORTING
er_toolbar = ao_toolbar.
CHECK NOT ao_toolbar IS INITIAL.
** modifico toolbar
** adiciono el separador
CALL METHOD ao_toolbar->add_button
EXPORTING
fcode = ''
icon = ''
butn_type = cntb_btype_sep
EXCEPTIONS
cntl_error = 1
cntb_btype_error = 2
cntb_error_fcode = 3
OTHERS = 4.
CALL METHOD ao_toolbar->add_button
EXPORTING
fcode = '&GRE'
* icon = ICON_EXPAND
icon = icon_pm_insert
butn_type = cntb_btype_button
text = 'Grabar'
quickinfo = 'Grabar'
EXCEPTIONS
cntl_error = 1
cntb_btype_error = 2
cntb_error_fcode = 3
OTHERS = 4.
* establezco comunicacion con el manejador de eventos de ao_toolbar
DATA: events TYPE cntl_simple_events,
event TYPE cntl_simple_event,
l_event_receiver TYPE REF TO lcl_toolbar_event_receiverx.
CREATE OBJECT l_event_receiver.
** DEFINO LA COMUNICACION CON EL ARBOL AL PRESIONAR UN BOTON DEL
** TOOLBAR
SET HANDLER l_event_receiver->on_function_selected FOR ao_tree->ao_toolbar.
ENDFORM. "change_toolbar
*&---------------------------------------------------------------------*
*& Form exit_program
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM exit_program.
CALL METHOD ao_tree->free_program.
LEAVE TO SCREEN 0.
ENDFORM. "exit_program
*&---------------------------------------------------------------------*
*& Form exit_program2
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM exit_program2.
CALL METHOD ao_tree->free_program.
LEAVE TO SCREEN 0.
ENDFORM. "exit_program2
**********************************************************************************
** AQUI SE DESCRIBEN TODOS LOS EVENTOS DEL ARBOL
** SE VAN A ACTIVAR LOS QUE DEFINI ANTERIORMENTE
** ES DECIR TOP_OF_PAGE, CHECBOX_CHANGE, ETC,ETC
DESCRIBED HERE ** ALL EVENTS OF THE TREE
** WILL BE ON THE ABOVE I defined
IE ** TOP_OF_PAGE, CHECBOX_CHANGE, ETC, ETC
** WILL BE ON THE ABOVE I defined
IE ** TOP_OF_PAGE, CHECBOX_CHANGE, ETC, ETC
*&---------------------------------------------------------------------*
*& Form desbloqueo
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->WESTR text
*----------------------------------------------------------------------*
FORM desbloqueo USING westr TYPE zwtree3.
ENDFORM. "desbloqueo
*&---------------------------------------------------------------------*
*& Form RIGHT_CLICK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM right_click.
ENDFORM. "RIGHT_CLICK
*&---------------------------------------------------------------------*
*& Form LEFT_CLICK_DESIGN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM left_click_design.
ENDFORM. "left_click_design
*&---------------------------------------------------------------------*
*& Form MOVE_CONTROL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM move_control.
ENDFORM. "move_control
*&---------------------------------------------------------------------*
*& Form SIZE_CONTROL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM size_control.
ENDFORM. "size_control
*&---------------------------------------------------------------------*
*& Form LEFT_CLICK_RUN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM left_click_run .
ENDFORM. "left_click_run
*&---------------------------------------------------------------------*
*& Form DEFAULT_CONTEXT_MENU_REQUEST
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->MENU text
*----------------------------------------------------------------------*
FORM default_context_menu_request USING menu .
ENDFORM. "default_context_menu_request
*&---------------------------------------------------------------------*
*& Form HEADER_CONTEXT_MENU_REQUEST
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->FIELDNAME text
* -->MENU text
*----------------------------------------------------------------------*
FORM header_context_menu_request USING fieldname menu .
ENDFORM. "header_context_menu_request
*&---------------------------------------------------------------------*
*& Form HEADER_CONTEXT_MENU_SELECT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->FIELDNAME text
* -->FCODE text
*----------------------------------------------------------------------*
FORM header_context_menu_select USING fieldname fcode .
ENDFORM. "header_context_menu_select
*&---------------------------------------------------------------------*
*& Form BEFORE_USER_COMMAND
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->UCOMM text
*----------------------------------------------------------------------*
FORM before_user_command USING ucomm .
DATA: w_outtab1 TYPE zwtree3.
DATA: ls_fieldcatalog TYPE lvc_s_fcat.
DATA: wlayout_node TYPE lvc_s_layn.
IF ucomm = '&PRINT_BACK' OR ucomm = '&PRINT_PREV'
OR ucomm = '&PRINT_BACK_ALL' OR ucomm = '&PRINT_PREV_ALL'.
CALL METHOD ao_tree->print_normal_to_bold
EXPORTING
p_nivel = '01'.
ENDIF.
ENDFORM. "before_user_command
*&---------------------------------------------------------------------*
*& Form AFTER_USER_COMMAND
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->UCOMM text
*----------------------------------------------------------------------*
FORM after_user_command USING ucomm .
DATA: w_outtab1 TYPE zwtree3.
DATA: ls_fieldcatalog TYPE lvc_s_fcat.
DATA: wlayout_node TYPE lvc_s_layn.
IF ucomm = '&PRINT_BACK' OR ucomm = '&PRINT_PREV'
OR ucomm = '&PRINT_BACK_ALL' OR ucomm = '&PRINT_PREV_ALL'.
** cambiamos las negritas a normal para el screen.
CALL METHOD ao_tree->print_bold_to_normal
EXPORTING
p_nivel = '01'.
ENDIF.
ENDFORM. "before_user_command
*&---------------------------------------------------------------------*
*& Form TOP_OF_PAGE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM top_of_page.
PERFORM top_page USING fucomm.
* CALL METHOD ao_tree->grabar_nodos_checkeados
* EXPORTING
* flag_g = '1'.
*
*
*CALL METHOD ao_tree->grabar_nodos_seleccionados
* EXPORTING
* flag_g = '1'.
*
*ULINE.
ENDFORM. "top_of_page
*&---------------------------------------------------------------------*
*& Form DEFAULT_CONTEXT_MENU_SELECT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->FCODE text
*----------------------------------------------------------------------*
FORM default_context_menu_select USING fcode .
ENDFORM. "default_context_menu_select
*&---------------------------------------------------------------------*
*& Form TOP_OF_LIST
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM top_of_list.
ENDFORM. "top_of_list
*&---------------------------------------------------------------------*
*& Form BUTTON_CLICK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->FIELDNAME text
* -->NODE_KEY text
*----------------------------------------------------------------------*
FORM button_click USING fieldname node_key .
ENDFORM. "button_click
*&---------------------------------------------------------------------*
*& Form CHECKBOX_CHANGE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->CHECKED text
* -->FIELDNAME text
* -->NODE_KEY text
*----------------------------------------------------------------------*
FORM checkbox_change USING checked fieldname node_key .
** AQUI SELECCIONO LOS CHECKS O LOS DESELECCIONO
IF checked = 'X'.
CALL METHOD ao_tree->mark_father
EXPORTING
p_key = node_key.
ELSE.
CALL METHOD ao_tree->unmark_father
EXPORTING
p_key = node_key.
ENDIF.
ENDFORM. "checkbox_change
*&---------------------------------------------------------------------*
*& Form EXPAND_NC
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->NODE_KEY text
*----------------------------------------------------------------------*
FORM expand_nc USING node_key .
ENDFORM. "expand_nc
*&---------------------------------------------------------------------*
*& Form HEADER_CLICK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->FIELDNAME text
*----------------------------------------------------------------------*
FORM header_click USING fieldname .
ENDFORM. "header_click
*&---------------------------------------------------------------------*
*& Form HEADER_CONTEXT_MENU
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->FIELDNAME text
* -->UCOMM text
*----------------------------------------------------------------------*
FORM header_context_menu USING fieldname ucomm .
ENDFORM. "header_context_menu
*&---------------------------------------------------------------------*
*& Form ITEM_CONTEXT_MENU_REQUEST
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->FIELDNAME text
* -->MENU text
* -->NODE_KEY text
*----------------------------------------------------------------------*
FORM item_context_menu_request USING fieldname menu node_key .
ENDFORM. "item_context_menu_request
*&---------------------------------------------------------------------*
*& Form ITEM_CONTEXT_MENU_SELECTED
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->FCODE text
* -->FIELDNAME text
* -->NODE_KEY text
*----------------------------------------------------------------------*
FORM item_context_menu_selected USING fcode fieldname node_key .
ENDFORM. "item_context_menu_selected
*&---------------------------------------------------------------------*
*& Form ITEM_DOUBLE_CLICK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->FIELDNAME text
* -->NODE_KEY text
*----------------------------------------------------------------------*
FORM item_double_click USING fieldname node_key .
ENDFORM. "item_double_click
*&---------------------------------------------------------------------*
*& Form ITEM_KEYPRESS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->FIELDNAME text
* -->KEY text
* -->NODE_KEY text
*----------------------------------------------------------------------*
FORM item_keypress USING fieldname key node_key .
ENDFORM. "item_keypress
*&---------------------------------------------------------------------*
*& Form LINK_CLICK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->FIELDNAME text
* -->NODE_KEY text
*----------------------------------------------------------------------*
FORM link_click USING fieldname node_key .
ENDFORM. "link_click
*&---------------------------------------------------------------------*
*& Form NODE_CONTEXT_MENU_REQUEST
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->MENU text
* -->NODE_KEY text
*----------------------------------------------------------------------*
FORM node_context_menu_request USING menu node_key .
ENDFORM. "node_context_menu_request
*&---------------------------------------------------------------------*
*& Form NODE_CONTEXT_MENU_SELECTED
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->FCODE text
* -->NODE_KEY text
*----------------------------------------------------------------------*
FORM node_context_menu_selected USING fcode node_key .
ENDFORM. "node_context_menu_selected
*&---------------------------------------------------------------------*
*& Form ON_DRAG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->DRAG_DROP_OBJECT text
* -->FIELDNAME text
* -->NODE_KEY text
*----------------------------------------------------------------------*
FORM on_drag USING drag_drop_object fieldname node_key .
ENDFORM. "on_drag
*&---------------------------------------------------------------------*
*& Form ON_DRAG_MULTIPLE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->DRAG_DROP_OBJECT text
* -->FIELDNAME text
* -->NODE_KEY_TABLE text
*----------------------------------------------------------------------*
FORM on_drag_multiple USING drag_drop_object fieldname node_key_table .
ENDFORM. "on_drag_multiple
*&---------------------------------------------------------------------*
*& Form ON_DROP
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->DRAG_DROP_OBJECT text
* -->NODE_KEY text
*----------------------------------------------------------------------*
FORM on_drop USING drag_drop_object node_key.
ENDFORM. "on_drop
*&---------------------------------------------------------------------*
*& Form ON_DROP_COMPLETE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->DRAG_DROP_OBJECT text
* -->FIELDNAME text
* -->NODE_KEY text
*----------------------------------------------------------------------*
FORM on_drop_complete USING drag_drop_object fieldname node_key .
ENDFORM. "on_drop_complete
*&---------------------------------------------------------------------*
*& Form ON_DROP_COMPLETE_MULTIPLE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->DRAG_DROP_OBJECT text
* -->FIELDNAME text
* -->NODE_KEY_TABLE text
*----------------------------------------------------------------------*
FORM on_drop_complete_multiple USING drag_drop_object fieldname node_key_table .
ENDFORM. "on_drop_complete_multiple
*&---------------------------------------------------------------------*
*& Form ON_DROP_GET_FLAVOR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->DRAG_DROP_OBJECT text
* -->NODE_KEY text
*----------------------------------------------------------------------*
FORM on_drop_get_flavor USING drag_drop_object node_key .
ENDFORM. "on_drop_get_flavor
*&---------------------------------------------------------------------*
*& Form SELECTION_CHANGED
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->NODE_KEY text
*----------------------------------------------------------------------*
FORM selection_changed USING node_key .
ENDFORM. "selection_changed
*&---------------------------------------------------------------------*
*& Form NODE_KEYPRESS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->KEY text
* -->NODE_KEY text
*----------------------------------------------------------------------*
FORM node_keypress USING key node_key .
ENDFORM. "node_keypress
********************************************************************************
De alli se corre el programa y queda como el gráfico inicial.
Fácil de utilizar para cualquier programa. Defino los niveles que deseo, y puedo aplicar eventos que actualmente el árbol no permite, como ordenar, filtrar, gráficos de barras, etc, etc..Con sólo colocar un 'X' activo eventos, escondo botones, etc, etc..
Cualquier duda ó pregunta lo pueden hacer, me indican su mail y estaré presto a ayudarles.
Fácil de utilizar para cualquier programa. Defino los niveles que deseo, y puedo aplicar eventos que actualmente el árbol no permite, como ordenar, filtrar, gráficos de barras, etc, etc..Con sólo colocar un 'X' activo eventos, escondo botones, etc, etc..
Cualquier duda ó pregunta lo pueden hacer, me indican su mail y estaré presto a ayudarles.
TRANSLATION:
From there you run the program and remains the original graph.
Easy to use for any program. Define the levels you desire, and I can apply events currently does not allow the tree, such as sorting, filtering, bar graphs, etc, etc. .. Just put an 'X' active events, hide buttons, etc, etc. ..
Any doubt or question they can do, tell me your email and I'll be ready to help.
Easy to use for any program. Define the levels you desire, and I can apply events currently does not allow the tree, such as sorting, filtering, bar graphs, etc, etc. .. Just put an 'X' active events, hide buttons, etc, etc. ..
Any doubt or question they can do, tell me your email and I'll be ready to help.
No hay comentarios:
Publicar un comentario