Final ABAP code for the ALV Tree PBO(..O01) and FORM(..F01) includes
The following code allows the easy creation of all the includes for the example ALVtree report. Simply copy and past it into the appropriate includes(PBO and FORM).
*--------------------------------------------------------------* ***INCLUDE ZDEMO_ALVTREEO01 . *--------------------------------------------------------------* *&-------------------------------------------------------------* *& Module STATUS_0100 OUTPUT *&-------------------------------------------------------------* * text *--------------------------------------------------------------* MODULE status_0100 OUTPUT. SET PF-STATUS 'STATUS1'. * SET TITLEBAR 'xxx'. * If ALVtree already exists then it mush not be re-created as this * will cause a runtime error. IF gd_tree IS INITIAL. * Create ALVtree (must be performed within screen PBO module) PERFORM create_alvtree_container. PERFORM create_object_in_container. PERFORM create_empty_alvtree_control. PERFORM create_alvtree_hierarchy. ENDIF. CALL METHOD cl_gui_cfw=>flush. ENDMODULE. " STATUS_0100 OUTPUT
*--------------------------------------------------------------* * INCLUDE ZDEMO_ALVTREEF01 * *--------------------------------------------------------------* *&-------------------------------------------------------------* *& Form CREATE_ALVTREE_CONTAINER *&-------------------------------------------------------------* * Create container for ALVtree report *--------------------------------------------------------------* form create_alvtree_container. * Create container for alv-tree gd_tree_container_name = 'SCREEN_CONTAINER'. create object gd_custom_container exporting container_name = gd_tree_container_name exceptions cntl_error = 1 cntl_system_error = 2 create_error = 3 lifetime_error = 4 lifetime_dynpro_dynpro_link = 5. if sy-subrc <> 0. message x208(00) with 'ERROR'. endif. endform. " CREATE_ALVTREE_CONTAINER *&---------------------------------------------------------------------* *& Form CREATE_OBJECT_IN_CONTAINER *&---------------------------------------------------------------------* * Create ALVtree object in container *----------------------------------------------------------------------* form create_object_in_container. * Create tree control create object gd_tree exporting parent = gd_custom_container node_selection_mode = cl_gui_column_tree=>node_sel_mode_single item_selection = 'X' no_html_header = '' no_toolbar = '' exceptions cntl_error = 1 cntl_system_error = 2 create_error = 3 lifetime_error = 4 illegal_node_selection_mode = 5 failed = 6 illegal_column_name = 7. if sy-subrc <> 0. message x208(00) with 'ERROR'. endif. endform. " CREATE_OBJECT_IN_CONTAINER *&---------------------------------------------------------------------* *& Form BUILD_REPORT_TITLE *&---------------------------------------------------------------------* * Build table for ALVtree header *----------------------------------------------------------------------* * <-> p1 Header details * <-> p2 Logo value *----------------------------------------------------------------------* FORM build_report_title CHANGING pt_report_title TYPE slis_t_listheader pa_logo TYPE sdydo_value. DATA: ls_line TYPE slis_listheader, ld_date(10) TYPE c. * List Heading Line(TYPE H) CLEAR ls_line. ls_line-typ = 'H'. * ls_line-key "Not Used For This Type(H) ls_line-info = 'PO ALVTree Display'. APPEND ls_line TO pt_report_title. * Status Line(TYPE S) ld_date(2) = sy-datum+6(2). ld_date+2(1) = '/'. ld_date+3(2) = sy-datum+4(2). ld_date+5(1) = '/'. ld_date+6(4) = sy-datum(4). ls_line-typ = 'S'. ls_line-key = 'Date'. ls_line-info = ld_date. APPEND ls_line TO pt_report_title. * Action Line(TYPE A) CLEAR ls_line. ls_line-typ = 'A'. CONCATENATE 'Report: ' sy-repid INTO ls_line-info SEPARATED BY space. APPEND ls_line TO pt_report_title. ENDFORM. " BUILD_REPORT_TITLE *&---------------------------------------------------------------------* *& Form CREATE_EMPTY_ALVTREE_CONTROL *&---------------------------------------------------------------------* * Create empty tree control *----------------------------------------------------------------------* FORM create_empty_alvtree_control. * Create emty tree-control CLEAR: it_emptytab. REFRESH: it_emptytab. CALL METHOD gd_tree->set_table_for_first_display EXPORTING is_hierarchy_header = gd_hierarchy_header it_list_commentary = gd_report_title i_logo = gd_logo * i_background_id = 'ALV_BACKGROUND' i_save = 'A' is_variant = gd_variant CHANGING it_outtab = it_emptytab "Must be empty it_fieldcatalog = gd_fieldcat. ENDFORM. " CREATE_EMPTY_ALVTREE_CONTROL *&---------------------------------------------------------------------* *& Form CREATE_ALVTREE_HIERARCHY *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * Builds ALV tree display, (inserts nodes, subnodes etc) *----------------------------------------------------------------------* form create_alvtree_hierarchy. data: ls_sflight type sflight, lt_sflight type sflight occurs 0. data: ld_ebeln_key type lvc_nkey, ld_ebelp_key type lvc_nkey. loop at it_ekko into wa_ekko. perform add_ekko_node using wa_ekko '' changing ld_ebeln_key. loop at it_ekpo into wa_ekpo where ebeln eq wa_ekko-ebeln. perform add_ekpo_line using wa_ekpo ld_ebeln_key changing ld_ebelp_key. endloop. endloop. * calculate totals call method gd_tree->update_calculations. * this method must be called to send the data to the frontend call method gd_tree->frontend_update. endform. " CREATE_ALVTREE_HIERARCHY *&---------------------------------------------------------------------* *& Form ADD_EKKO_NODE *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_WA_EKPO text * -->P_0553 text * <--P_EBELN_KEY text *----------------------------------------------------------------------* form add_ekko_node using ps_ekko like wa_ekko value(p_relate_key) changing p_node_key. data: ld_node_text type lvc_value, ls_sflight type sflight. * Set item-layout data: lt_item_layout type lvc_t_layi, ls_item_layout type lvc_s_layi. ls_item_layout-t_image = '@3P@'. ls_item_layout-fieldname = gd_tree->c_hierarchy_column_name. ls_item_layout-style = cl_gui_column_tree=>style_default. ld_node_text = ps_ekko-ebeln. append ls_item_layout to lt_item_layout. * Add node call method gd_tree->add_node exporting i_relat_node_key = p_relate_key i_relationship = cl_gui_column_tree=>relat_last_child i_node_text = ld_node_text is_outtab_line = ps_ekko it_item_layout = lt_item_layout importing e_new_node_key = p_node_key. endform. " ADD_EKKO_NODE *&---------------------------------------------------------------------* *& Form ADD_EKPO_LINE *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_WA_EKPO text * -->P_LD_EBELN_KEY text * <--P_LD_EBELP_KEY text *----------------------------------------------------------------------* form add_ekpo_line using ps_ekpo like wa_ekpo value(p_relate_key) changing p_node_key. data: ld_node_text type lvc_value, ls_sflight type sflight. * Set item-layout data: lt_item_layout type lvc_t_layi, ls_item_layout type lvc_s_layi. ls_item_layout-t_image = '@3P@'. ls_item_layout-fieldname = gd_tree->c_hierarchy_column_name. ls_item_layout-style = cl_gui_column_tree=>style_default. ld_node_text = ps_ekpo-ebelp. append ls_item_layout to lt_item_layout. * Add node call method gd_tree->add_node exporting i_relat_node_key = p_relate_key i_relationship = cl_gui_column_tree=>relat_last_child i_node_text = ld_node_text is_outtab_line = ps_ekpo it_item_layout = lt_item_layout importing e_new_node_key = p_node_key. endform. " ADD_EKPO_LINE
Related Articles
Add button to SAP ALV tree toolbar using ABAP code
ABAP ALV Tree tutorial to create a fully working ALVTree Control SAP dynpro program
Create ALV Tree Custom control and add to sap dynpro screen
Create SAP ALV Tree Container in ABAP dynpro screen container
Create Container and Object
Create ALV tree main program including Data & Event declaration
SAP ALV Tree fieldcatalog creation
Set SAP ALV tree table for first display and user interaction
Build SAP ALV tree Hierarchy
Build SAP ALV tree Hierarchy Header
Add alv tree already exists check to pbo module
Create all includes required for the ALV tree report
Full ABAP code listing of main ALV tree program
Module creation screen
Create SAP ALV Tree object within ABAP dynpro screen container/H1>
Create ok code to store ALV tree user interaction
Example Output from ALV tree display
Create screen control
Create Screen along with PBO and PAI modules
Create Pf-status(screen menu functionality)
Refresh ALVtree
Build Report Header(Title)
ALVtree toolbar processing
Implement user defined buttons to ALVtree toolbar
ALVtree user interaction processing
Implement ALVtree user interaction processing
Setup ALVtree variant
Main Steps to create ALV simple Tree(Using Objects)
Create Add Custom control to screen
Final code for the PBO(..O01) and FORM(..F01) includes
Create Container and Object
Create and register events for user interaction
Create ALVtree Hierarchy
Add already exists check!
Create Includes for ALVtree report
Full ABAP code listing of main program
Create Container and Object
Create screen control
Example Output from ALV simple tree display
Create screen control
Create Screen along with PBO and PAI modules
Create Pf-status(screen menu functionality)