SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

ALV tree simple Demo



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ALV Grid / ALV Tree / ALV List
View previous topic :: View next topic  
Author Message
admin
Администратор
Администратор



Joined: 01 Sep 2007
Posts: 1640

PostPosted: Sun Feb 24, 2008 5:15 pm    Post subject: ALV tree simple Demo Reply with quote

Code:
*&---------------------------------------------------------------------*
*& Report  BCALV_TREE_SIMPLE_DEMO                                      *
*&                                                                     *
*&---------------------------------------------------------------------*
*&                                                                     *
*&                                                                     *
*&---------------------------------------------------------------------*

report  bcalv_tree_simple_demo.

class cl_gui_column_tree definition load.
class cl_gui_cfw definition load.

data tree1  type ref to cl_gui_alv_tree_simple.


include <icon>.
include bcalv_simple_event_receiver.

data: gt_sflight      type sflight occurs 0,      "Output-Table
      gt_fieldcatalog type lvc_t_fcat, "Fieldcatalog
      gt_sort         type lvc_t_sort, "Sortiertabelle
      ok_code         like sy-ucomm.   "OK-Code

start-of-selection.

end-of-selection.

  call screen 100.

*&---------------------------------------------------------------------*
*&      Form  BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
form build_fieldcatalog.
* get fieldcatalog
  call function 'LVC_FIELDCATALOG_MERGE'
       exporting
            i_structure_name = 'SFLIGHT'
       changing
            ct_fieldcat      = gt_fieldcatalog.

* change fieldcatalog
  data: ls_fieldcatalog type lvc_s_fcat.
  loop at gt_fieldcatalog into ls_fieldcatalog.
    case ls_fieldcatalog-fieldname.
      when 'CARRID' or 'CONNID' or 'FLDATE'.
        ls_fieldcatalog-no_out = 'X'.
        ls_fieldcatalog-key    = ''.
      when 'PRICE' or 'SEATSOCC' or 'SEATSMAX' or 'PAYMENTSUM'.
        ls_fieldcatalog-do_sum = 'X'.
    endcase.
    modify gt_fieldcatalog from ls_fieldcatalog.
  endloop.

endform.                               " BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
*&      Form  BUILD_OUTTAB
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form build_outtab.

  select * from sflight into table gt_sflight.
*              up to 1 rows.

endform.                               " BUILD_OUTTAB

*&---------------------------------------------------------------------*
*&      Form  BUILD_SORT_TABLE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form build_sort_table.

  data ls_sort_wa type lvc_s_sort.

* create sort-table
  ls_sort_wa-spos = 1.
  ls_sort_wa-fieldname = 'CARRID'.
  ls_sort_wa-up = 'X'.
  ls_sort_wa-subtot = 'X'.
  append ls_sort_wa to gt_sort.

  ls_sort_wa-spos = 2.
  ls_sort_wa-fieldname = 'CONNID'.
  ls_sort_wa-up = 'X'.
  ls_sort_wa-subtot = 'X'.
  append ls_sort_wa to gt_sort.

  ls_sort_wa-spos = 3.
  ls_sort_wa-fieldname = 'FLDATE'.
  ls_sort_wa-up = 'X'.
  append ls_sort_wa to gt_sort.

endform.                               " BUILD_SORT_TABLE
*&---------------------------------------------------------------------*
*&      Module  PBO  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
module pbo output.
  if tree1 is initial.
    perform init_tree.
  endif.
  set pf-status 'MAIN100'.

endmodule.                             " PBO  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  PAI  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
module pai input.

  case ok_code.
    when 'EXIT' or 'BACK' or 'CANC'.
      perform exit_program.

    when others.
      call method cl_gui_cfw=>dispatch.
  endcase.
  clear ok_code.
endmodule.                             " PAI  INPUT
*&---------------------------------------------------------------------*
*&      Form  exit_program
*&---------------------------------------------------------------------*
*       free object and leave program
*----------------------------------------------------------------------*
form exit_program.

  call method tree1->free.
  leave program.

endform.                               " exit_program
*&---------------------------------------------------------------------*
*&      Form  register_events
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form register_events.
* define the events which will be passed to the backend
  data: lt_events type cntl_simple_events,
        l_event type cntl_simple_event.

* define the events which will be passed to the backend
  l_event-eventid = cl_gui_column_tree=>eventid_node_context_menu_req.
  append l_event to lt_events.
  l_event-eventid = cl_gui_column_tree=>eventid_item_context_menu_req.
  append l_event to lt_events.
  l_event-eventid = cl_gui_column_tree=>eventid_header_context_men_req.
  append l_event to lt_events.
  l_event-eventid = cl_gui_column_tree=>eventid_expand_no_children.
  append l_event to lt_events.
  l_event-eventid = cl_gui_column_tree=>eventid_header_click.
  append l_event to lt_events.
  l_event-eventid = cl_gui_column_tree=>eventid_item_keypress.
  append l_event to lt_events.

  call method tree1->set_registered_events
    exporting
      events = lt_events
    exceptions
      cntl_error                = 1
      cntl_system_error         = 2
      illegal_event_combination = 3.

* set Handler
  data: l_event_receiver type ref to lcl_tree_event_receiver.
  create object l_event_receiver.
  set handler l_event_receiver->on_add_hierarchy_node
                                                        for tree1.
endform.                               " register_events
*&---------------------------------------------------------------------*
*&      Form  build_header
*&---------------------------------------------------------------------*
*       build table for html_header
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form build_comment using
      pt_list_commentary type slis_t_listheader
      p_logo             type sdydo_value.

  data: ls_line type slis_listheader.
*
* LIST HEADING LINE: TYPE H
  clear ls_line.
  ls_line-typ  = 'H'.
* LS_LINE-KEY:  NOT USED FOR THIS TYPE
  ls_line-info = 'ALV-tree-simple-Demo: flight-overview'.   "#EC NOTEXT
  append ls_line to pt_list_commentary.
* STATUS LINE: TYPE S
  clear ls_line.
  ls_line-typ  = 'S'.
  ls_line-key  = 'valid to'.                                "#EC NOTEXT
  ls_line-info = 'January 29 1999'.                         "#EC NOTEXT
  append ls_line to pt_list_commentary.
  ls_line-key  = 'time'.
  ls_line-info = '2.00 pm'.                                 "#EC NOTEXT
  append ls_line to pt_list_commentary.
* ACTION LINE: TYPE A
  clear ls_line.
  ls_line-typ  = 'A'.
* LS_LINE-KEY:  NOT USED FOR THIS TYPE
  ls_line-info = 'up-to-date data'.                         "#EC NOTEXT
  append ls_line to pt_list_commentary.

  p_logo = 'ENJOYSAP_LOGO'.
endform.
*&---------------------------------------------------------------------*
*&      Form  init_tree
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM init_tree.
  perform build_fieldcatalog.

  perform build_outtab.

  perform build_sort_table.

* create container for alv-tree
  data: l_tree_container_name(30) type c,
        l_custom_container type ref to cl_gui_custom_container.
  l_tree_container_name = 'TREE1'.

  create object l_custom_container
      exporting
            container_name = l_tree_container_name
      exceptions
            cntl_error                  = 1
            cntl_system_error           = 2
            create_error                = 3
            lifetime_error              = 4
            lifetime_dynpro_dynpro_link = 5.

* create tree control
  create object tree1
    exporting
        i_parent              = l_custom_container
        i_node_selection_mode =
                              cl_gui_column_tree=>node_sel_mode_multiple
        i_item_selection      = 'X'
        i_no_html_header      = ''
        i_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.

* create info-table for html-header
  data: lt_list_commentary type slis_t_listheader,
        l_logo             type sdydo_value.
  perform build_comment using
                 lt_list_commentary
                 l_logo.

* repid for saving variants
  data: ls_variant type disvariant.
  ls_variant-report = sy-repid.

* register events
  perform register_events.

* create hierarchy
  call method tree1->set_table_for_first_display
          exporting
               it_list_commentary   = lt_list_commentary
               i_logo               = l_logo
               i_background_id      = 'ALV_BACKGROUND'
               i_save               = 'A'
               is_variant            = ls_variant
          changing
               it_sort              = gt_sort
               it_outtab            = gt_sflight
               it_fieldcatalog      = gt_fieldcatalog.

* expand first level
  call method tree1->expand_Tree
         exporting
             i_level = 1.

* optimize column-width
  call method tree1->column_optimize
           exporting
               i_start_column = tree1->c_hierarchy_column_name
               i_end_column   = tree1->c_hierarchy_column_name.


ENDFORM.                    " init_tree

*----------------------------------------------------------------------*
*   INCLUDE BCALV_SIMPLE_EVENT_RECEIVER                                *
*----------------------------------------------------------------------*
class lcl_tree_event_receiver definition.

  public section.

    methods: on_add_hierarchy_node
              for event on_add_hierarchy_node of cl_gui_alv_tree_simple
                    importing grouplevel
                              index_outtab.

endclass.

class lcl_tree_event_receiver implementation.

  method on_add_hierarchy_node.
    data ls_outtab_line type sflight.
    ls_outtab_line-planetype = 'Note'. "#EC NOTEXT
    call method tree1->set_hierarchy_data
            exporting
                is_outtab_line = ls_outtab_line.
  endmethod.

endclass.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ALV Grid / ALV Tree / ALV List All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG.
SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG.
Every effort is made to ensure content integrity. Use information on this site at your own risk.