<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: alv tree checkbox problem in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-tree-checkbox-problem/m-p/4495527#M1063803</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Alejandro&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You may have a look at my sample report &lt;STRONG&gt;ZUS_SDN_ALV_TREE_DEMO&lt;/STRONG&gt;. The field (KNVV-)LOEVM is defined as editable checkbox. In addition, I have registered and defined an event handler for CHECKBOX_CHANGE. Within the event handler method I update the outtab itab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;When the ALV tree is display enter 'DISPLAY' in the command window and see what happens.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp; Report  ZUS_SDN_ALV_TREE_DEMO
*&amp;amp;
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp; Thread: alv tree checkbox problem 
*&amp;amp; &amp;lt;a class="jive_macro jive_macro_thread" href="" __jive_macro_name="thread" modifiedtitle="true" __default_attr="1046535"&amp;gt;&amp;lt;/a&amp;gt;
*&amp;amp;
*&amp;amp; Thread: double click in ALV tree output????
*&amp;amp; &amp;lt;a class="jive_macro jive_macro_thread" href="" __jive_macro_name="thread" modifiedtitle="true" __default_attr="742412"&amp;gt;&amp;lt;/a&amp;gt;
*&amp;amp;
*&amp;amp;
*&amp;amp;---------------------------------------------------------------------*

REPORT  zus_sdn_alv_tree_demo.

CLASS cl_gui_column_tree DEFINITION LOAD.
CLASS cl_gui_cfw DEFINITION LOAD.

TYPE-POOLS: abap.

TYPES: BEGIN OF ty_s_key.
TYPES: nkey       TYPE lvc_nkey.
TYPES: parent_key TYPE lvc_nkey.
TYPES: END OF ty_s_key.

TYPES: BEGIN OF ty_s_outtab.
INCLUDE TYPE knvv AS data.
INCLUDE TYPE ty_s_key AS key.
TYPES: END OF ty_s_outtab.
TYPES: ty_t_outtab    TYPE STANDARD TABLE OF ty_s_outtab
                      WITH DEFAULT KEY.

DATA: gt_outtab    TYPE ty_t_outtab.


DATA:
  gd_okcode        TYPE ui_func,
  gd_repid         TYPE syst-repid,
*
  gt_fcat          TYPE lvc_t_fcat,
  gs_layout        TYPE lvc_s_layo,
  gs_variant       TYPE disvariant,
  go_docking       TYPE REF TO cl_gui_docking_container,
  go_tree          TYPE REF TO cl_gui_alv_tree.


*----------------------------------------------------------------------*
*       CLASS lcl_eventhandler DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_eventhandler DEFINITION.
  PUBLIC SECTION.

    CLASS-METHODS:

    handle_node_double_click
      FOR EVENT node_double_click OF cl_gui_alv_tree
      IMPORTING node_key,

    handle_item_double_click
      FOR EVENT item_double_click OF cl_gui_alv_tree
      IMPORTING node_key
                fieldname,

    handle_checkbox_change
      FOR EVENT checkbox_change of cl_gui_alv_tree
      IMPORTING checked
                fieldname
                node_key.

ENDCLASS.                    "lcl_eventhandler DEFINITION


*----------------------------------------------------------------------*
*       CLASS lcl_eventhandler IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_eventhandler IMPLEMENTATION.

  METHOD handle_node_double_click.
    MESSAGE 'Event=Double-Click on Node' TYPE 'I'.
    CALL TRANSACTION 'XD03'.

  ENDMETHOD.                    "handle_node_double_click

  METHOD handle_item_double_click.
    MESSAGE 'Event=Double-Click on Item' TYPE 'I'.
    CALL TRANSACTION 'VA03'.
  ENDMETHOD.                    "handle_item_double_click

  method handle_checkbox_change.
    data: ls_outtab     type ty_s_outtab.

    break-point.
    CALL METHOD go_tree-&amp;gt;get_outtab_line
      EXPORTING
        i_node_key     = node_key
      IMPORTING
        e_outtab_line  = ls_outtab
*        e_node_text    =
*        et_item_layout =
*        es_node_layout =
      EXCEPTIONS
        node_not_found = 1
        others         = 2.
    IF sy-subrc &amp;lt;&amp;gt; 0.
*     MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.

    ls_outtab-loevm = checked.

    modify gt_outtab from ls_outtab
      TRANSPORTING loevm
      where ( nkey = node_key ).

      " Trigger PAI
      CALL METHOD cl_gui_cfw=&amp;gt;set_new_ok_code
        EXPORTING
          new_code = 'REFRESH'
*        IMPORTING
*          rc       =
          .

    endmethod.

ENDCLASS.                    "lcl_eventhandler IMPLEMENTATION



START-OF-SELECTION.


  PERFORM init_controls.


  gd_repid = syst-repid.
  CALL METHOD go_docking-&amp;gt;link
    EXPORTING
      repid                       = gd_repid
      dynnr                       = '0100'
*      container                   =
    EXCEPTIONS
      cntl_error                  = 1
      cntl_system_error           = 2
      lifetime_dynpro_dynpro_link = 3
      OTHERS                      = 4.
  IF sy-subrc &amp;lt;&amp;gt; 0.
*   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

  CALL SCREEN '0100'.

** NOTE: no elements on screen
**  PROCESS BEFORE OUTPUT.
**    MODULE STATUS_0100.
***
**  PROCESS AFTER INPUT.
**    MODULE USER_COMMAND_0100.





END-OF-SELECTION.

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Module  STATUS_0100  OUTPUT
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
  SET PF-STATUS 'STATUS_0100'.
*  SET TITLEBAR 'xxx'.


ENDMODULE.                 " STATUS_0100  OUTPUT

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Module  USER_COMMAND_0100  INPUT
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.





  TRANSLATE gd_okcode TO UPPER CASE.

  CASE gd_okcode.
    WHEN 'BACK'  OR
         'EXIT'  OR
         'CANC'.
      SET SCREEN 0. LEAVE SCREEN.

    WHEN 'REFRESH'.
      CALL METHOD go_tree-&amp;gt;update_calculations
*        EXPORTING
*          no_frontend_update =
          .


    WHEN 'DISPLAY'.
      PERFORM display.

    WHEN OTHERS.
  ENDCASE.

  CLEAR: gd_okcode.

ENDMODULE.                 " USER_COMMAND_0100  INPUT
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  init_controls
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&amp;gt;  p1        text
*  &amp;lt;--  p2        text
*----------------------------------------------------------------------*
FORM init_controls .

* Create docking container
  CREATE OBJECT go_docking
    EXPORTING
      parent = cl_gui_container=&amp;gt;screen0
      ratio  = 90
    EXCEPTIONS
      OTHERS = 6.
  IF sy-subrc &amp;lt;&amp;gt; 0.
*   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

* create tree control
  CREATE OBJECT go_tree
    EXPORTING
      parent                      = go_docking
      node_selection_mode         = cl_gui_column_tree=&amp;gt;node_sel_mode_multiple
      item_selection              = 'X'  " required for double-click event on item
      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 &amp;lt;&amp;gt; 0.
    MESSAGE x208(00) WITH 'ERROR'.                          "#EC NOTEXT
  ENDIF.


* create Hierarchy-header
  DATA ls_hierarchy_header TYPE treev_hhdr.
  PERFORM build_hierarchy_header CHANGING ls_hierarchy_header.


  PERFORM build_fieldcatalog.
  PERFORM set_layout_and_variant.

* create emty tree-control
  CALL METHOD go_tree-&amp;gt;set_table_for_first_display
    EXPORTING
**      i_structure_name     = 'KNVV'
      is_variant           = gs_variant
      i_save               = 'A'
*      i_default            = 'X'
      is_hierarchy_header  = ls_hierarchy_header
*      is_exception_field   =
*      it_special_groups    =
*      it_list_commentary   =
*      i_logo               =
*      i_background_id      =
*      it_toolbar_excluding =
*      it_except_qinfo      =
    CHANGING
      it_outtab            = gt_outtab
*      it_filter            =
      it_fieldcatalog      = gt_fcat.

* create hierarchy
  PERFORM create_hierarchy.

* register events
  PERFORM register_events.

* adjust column_width
  CALL METHOD go_tree-&amp;gt;column_optimize.

ENDFORM.                    " init_controls


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  build_hierarchy_header
*&amp;amp;---------------------------------------------------------------------*
*       build hierarchy-header-information
*----------------------------------------------------------------------*
*      --&amp;gt;P_L_HIERARCHY_HEADER  strucxture for hierarchy-header
*----------------------------------------------------------------------*
FORM build_hierarchy_header CHANGING
                               p_hierarchy_header TYPE treev_hhdr.

  p_hierarchy_header-heading = 'Hierarchy Header'.          "#EC NOTEXT
  p_hierarchy_header-tooltip =
                         'This is the Hierarchy Header !'.  "#EC NOTEXT
  p_hierarchy_header-width = 30.
  p_hierarchy_header-width_pix = ''.

ENDFORM.                               " build_hierarchy_header



*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  BUILD_FIELDCATALOG
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&amp;gt;  p1        text
*  &amp;lt;--  p2        text
*----------------------------------------------------------------------*
FORM build_fieldcatalog .
  DATA: ls_fcat   TYPE lvc_s_fcat.

  REFRESH: gt_fcat.
  CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
    EXPORTING
*     I_BUFFER_ACTIVE              =
      i_structure_name             = 'KNVV'
*     I_CLIENT_NEVER_DISPLAY       = 'X'
      i_bypassing_buffer           = 'X'
*     I_INTERNAL_TABNAME           =
    CHANGING
      ct_fieldcat                  = gt_fcat
    EXCEPTIONS
      inconsistent_interface       = 1
      program_error                = 2
      OTHERS                       = 3.
  IF sy-subrc &amp;lt;&amp;gt; 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

  DELETE gt_fcat FROM 10.
  READ TABLE gt_fcat INTO ls_fcat
       WITH KEY fieldname = 'LOEVM'.
  IF ( syst-subrc = 0 ).
    ls_fcat-checkbox = 'X'.
    ls_fcat-edit     = 'X'.
**    ls_fcat-hotspot  = 'X'.
    MODIFY gt_fcat FROM ls_fcat INDEX syst-tabix.
  ENDIF.

ENDFORM.                    " BUILD_FIELDCATALOG


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  SET_LAYOUT_AND_VARIANT
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&amp;gt;  p1        text
*  &amp;lt;--  p2        text
*----------------------------------------------------------------------*
FORM set_layout_and_variant .

  CLEAR: gs_layout,
         gs_variant.

  gs_variant-report = syst-repid.
  gs_variant-handle = 'TREE'.

ENDFORM.                    " SET_LAYOUT_AND_VARIANT
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  create_hierarchy
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&amp;gt;  p1        text
*  &amp;lt;--  p2        text
*----------------------------------------------------------------------*
FORM create_hierarchy .
  DATA: ls_knvv     TYPE sflight,
        ld_idx      TYPE i,
        ls_outtab   TYPE ty_s_outtab,
        lt_outtab   TYPE ty_t_outtab.

* get data
  SELECT * FROM knvv INTO CORRESPONDING FIELDS OF TABLE lt_outtab
                        UP TO 20 ROWS .                 "#EC CI_NOWHERE

  SORT lt_outtab BY kunnr vkorg.

* add data to tree
  DATA: ld_root_key  TYPE lvc_nkey,
        ld_kunnr_key TYPE lvc_nkey,
        ld_vkorg_key TYPE lvc_nkey,
        ld_last_key  TYPE lvc_nkey.

  ld_idx = 0.
  LOOP AT lt_outtab INTO ls_outtab.

    AT FIRST.
      PERFORM add_root_line USING    ls_outtab-data
                                         ''
                              CHANGING ld_root_key.

      ADD 1 TO ld_idx.
      ls_outtab-nkey       = ld_root_key.
      ls_outtab-parent_key = space.
      MODIFY gt_outtab FROM ls_outtab INDEX ld_idx
        TRANSPORTING key.
    ENDAT.

    ON CHANGE OF ls_outtab-kunnr.
      PERFORM add_customer_line USING    ls_outtab-data
                                         ld_root_key
                              CHANGING ld_kunnr_key.
      ADD 1 TO ld_idx.
      ls_outtab-nkey       = ld_kunnr_key.
      ls_outtab-parent_key = ld_root_key.
      MODIFY gt_outtab FROM ls_outtab INDEX ld_idx
        TRANSPORTING key.
    ENDON.



    ON CHANGE OF ls_outtab-vkorg.
      PERFORM add_salesorg_line USING    ls_outtab-data
                                         ld_kunnr_key
                              CHANGING ld_vkorg_key.
      ADD 1 TO ld_idx.
      ls_outtab-nkey       = ld_vkorg_key.
      ls_outtab-parent_key = ld_kunnr_key.
      MODIFY gt_outtab FROM ls_outtab INDEX ld_idx
        TRANSPORTING key.
    ENDON.
    PERFORM add_complete_line USING  ls_outtab-data
                                     ld_vkorg_key
                            CHANGING ld_last_key.

    ADD 1 TO ld_idx.
    ls_outtab-nkey       = ld_last_key.
    ls_outtab-parent_key = ld_vkorg_key.
    MODIFY gt_outtab FROM ls_outtab INDEX ld_idx
      TRANSPORTING key.
  ENDLOOP.

* calculate totals
  CALL METHOD go_tree-&amp;gt;update_calculations.

* this method must be called to send the data to the frontend
  CALL METHOD go_tree-&amp;gt;frontend_update.
ENDFORM.                    " create_hierarchy


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  add_customer_line
*&amp;amp;---------------------------------------------------------------------*
*       add hierarchy-level 1 to tree
*----------------------------------------------------------------------*
*      --&amp;gt;P_LS_SFLIGHT  sflight
*      --&amp;gt;P_RELEATKEY   relatkey
*     &amp;lt;--&amp;gt;p_node_key    new node-key
*----------------------------------------------------------------------*
FORM add_root_line USING     us_data TYPE ty_s_outtab-data
                             ud_relat_key TYPE lvc_nkey
                     CHANGING  cd_node_key TYPE lvc_nkey.

  DATA: l_node_text TYPE lvc_value,
        ls_data TYPE ty_s_outtab-data.

* set item-layout
  DATA: lt_item_layout TYPE lvc_t_layi,
        ls_item_layout TYPE lvc_s_layi.
  ls_item_layout-t_image = '@3Q@'.  " icon_overview
  ls_item_layout-fieldname = go_tree-&amp;gt;c_hierarchy_column_name.
  ls_item_layout-style   =
                        cl_gui_column_tree=&amp;gt;style_intensifd_critical.
  APPEND ls_item_layout TO lt_item_layout.

* add node
  l_node_text =  'Overview: Sales Areas'.

  DATA: ls_node TYPE lvc_s_layn.
  ls_node-n_image   = space.
  ls_node-exp_image = space.

  CALL METHOD go_tree-&amp;gt;add_node
    EXPORTING
      i_relat_node_key = ud_relat_key
      i_relationship   = cl_gui_column_tree=&amp;gt;relat_last_child
      i_node_text      = l_node_text
      is_outtab_line   = ls_data
      is_node_layout   = ls_node
      it_item_layout   = lt_item_layout
    IMPORTING
      e_new_node_key   = cd_node_key.

ENDFORM.                               " add_root_line


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  add_customer_line
*&amp;amp;---------------------------------------------------------------------*
*       add hierarchy-level 1 to tree
*----------------------------------------------------------------------*
*      --&amp;gt;P_LS_SFLIGHT  sflight
*      --&amp;gt;P_RELEATKEY   relatkey
*     &amp;lt;--&amp;gt;p_node_key    new node-key
*----------------------------------------------------------------------*
FORM add_customer_line USING     us_data TYPE ty_s_outtab-data
                                 ud_relat_key TYPE lvc_nkey
                     CHANGING  cd_node_key TYPE lvc_nkey.

  DATA: l_node_text TYPE lvc_value,
        ls_data TYPE ty_s_outtab-data.

* set item-layout
  DATA: lt_item_layout TYPE lvc_t_layi,
        ls_item_layout TYPE lvc_s_layi.
  ls_item_layout-t_image = '@A0@'.  " icon_customer.
  ls_item_layout-fieldname = go_tree-&amp;gt;c_hierarchy_column_name.
  ls_item_layout-style   =
                        cl_gui_column_tree=&amp;gt;style_intensifd_critical.
  APPEND ls_item_layout TO lt_item_layout.

* add node
  l_node_text =  us_data-kunnr.

  DATA: ls_node TYPE lvc_s_layn.
  ls_node-n_image   = space.
  ls_node-exp_image = space.

  CALL METHOD go_tree-&amp;gt;add_node
    EXPORTING
      i_relat_node_key = ud_relat_key
      i_relationship   = cl_gui_column_tree=&amp;gt;relat_last_child
      i_node_text      = l_node_text
      is_outtab_line   = ls_data
      is_node_layout   = ls_node
      it_item_layout   = lt_item_layout
    IMPORTING
      e_new_node_key   = cd_node_key.

ENDFORM.                               " add_customer_line


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  add_salesorg_line
*&amp;amp;---------------------------------------------------------------------*
*       add hierarchy-level 1 to tree
*----------------------------------------------------------------------*
*      --&amp;gt;P_LS_SFLIGHT  sflight
*      --&amp;gt;P_RELEATKEY   relatkey
*     &amp;lt;--&amp;gt;p_node_key    new node-key
*----------------------------------------------------------------------*
FORM add_salesorg_line USING     us_data TYPE ty_s_outtab-data
                                 ud_relat_key TYPE lvc_nkey
                     CHANGING  cd_node_key TYPE lvc_nkey.

  DATA: l_node_text TYPE lvc_value,
        ls_data TYPE ty_s_outtab-data.

* set item-layout
  DATA: lt_item_layout TYPE lvc_t_layi,
        ls_item_layout TYPE lvc_s_layi.
  ls_item_layout-t_image = '@DS@'.  " ICON_PARTNER_SALES_ACTIVITY
  ls_item_layout-fieldname = go_tree-&amp;gt;c_hierarchy_column_name.
  ls_item_layout-style   =
                        cl_gui_column_tree=&amp;gt;style_intensifd_critical.
  APPEND ls_item_layout TO lt_item_layout.

* add node
  l_node_text =  us_data-vkorg.

  DATA: ls_node TYPE lvc_s_layn.
  ls_node-n_image   = space.
  ls_node-exp_image = space.

  CALL METHOD go_tree-&amp;gt;add_node
    EXPORTING
      i_relat_node_key = ud_relat_key
      i_relationship   = cl_gui_column_tree=&amp;gt;relat_last_child
      i_node_text      = l_node_text
      is_outtab_line   = ls_data
      is_node_layout   = ls_node
      it_item_layout   = lt_item_layout
    IMPORTING
      e_new_node_key   = cd_node_key.

ENDFORM.                               " add_salesorg_line


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  add_cmplete_line
*&amp;amp;---------------------------------------------------------------------*
*       add hierarchy-level 3 to tree
*----------------------------------------------------------------------*
*      --&amp;gt;P_LS_SFLIGHT  sflight
*      --&amp;gt;P_RELEATKEY   relatkey
*     &amp;lt;--&amp;gt;p_node_key    new node-key
*----------------------------------------------------------------------*
FORM add_complete_line USING     us_data TYPE ty_s_outtab-data
                                 ud_relat_key TYPE lvc_nkey
                     CHANGING  cd_node_key TYPE lvc_nkey.

  DATA: l_node_text TYPE lvc_value.

* set item-layout
  DATA: lt_item_layout TYPE lvc_t_layi,
        ls_item_layout TYPE lvc_s_layi.
  ls_item_layout-fieldname = go_tree-&amp;gt;c_hierarchy_column_name.
**  ls_item_layout-class   = cl_gui_column_tree=&amp;gt;item_class_checkbox.
**  ls_item_layout-editable = 'X'.
  APPEND ls_item_layout TO lt_item_layout.

**  CLEAR ls_item_layout.
**  ls_item_layout-fieldname = 'PLANETYPE'.
**  ls_item_layout-alignment = cl_gui_column_tree=&amp;gt;align_right.
**  APPEND ls_item_layout TO lt_item_layout.

  l_node_text =  us_data-vtweg.

  DATA: ls_node TYPE lvc_s_layn.
  ls_node-n_image   = space.
  ls_node-exp_image = space.

  CALL METHOD go_tree-&amp;gt;add_node
    EXPORTING
      i_relat_node_key = ud_relat_key
      i_relationship   = cl_gui_column_tree=&amp;gt;relat_last_child
      is_outtab_line   = us_data
      i_node_text      = l_node_text
      is_node_layout   = ls_node
      it_item_layout   = lt_item_layout
    IMPORTING
      e_new_node_key   = cd_node_key.
ENDFORM.                               " add_complete_line



*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  register_events
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&amp;gt;  p1        text
*  &amp;lt;--  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=&amp;gt;eventid_expand_no_children.
  APPEND l_event TO lt_events.
  l_event-eventid = cl_gui_column_tree=&amp;gt;eventid_checkbox_change.
  APPEND l_event TO lt_events.
**  l_event-eventid = cl_gui_column_tree=&amp;gt;eventid_header_context_men_req.
**  APPEND l_event TO lt_events.
**  l_event-eventid = cl_gui_column_tree=&amp;gt;eventid_node_context_menu_req.
**  APPEND l_event TO lt_events.
**  l_event-eventid = cl_gui_column_tree=&amp;gt;eventid_item_context_menu_req.
**  APPEND l_event TO lt_events.
**  l_event-eventid = cl_gui_column_tree=&amp;gt;eventid_header_click.
**  APPEND l_event TO lt_events.
**  l_event-eventid = cl_gui_column_tree=&amp;gt;eventid_item_keypress.
**  APPEND l_event TO lt_events.

  l_event-eventid = cl_gui_column_tree=&amp;gt;eventid_node_double_click.
  APPEND l_event TO lt_events.
  l_event-eventid = cl_gui_column_tree=&amp;gt;eventid_item_double_click.
  APPEND l_event TO lt_events.


  CALL METHOD go_tree-&amp;gt;set_registered_events
    EXPORTING
      events                    = lt_events
    EXCEPTIONS
      cntl_error                = 1
      cntl_system_error         = 2
      illegal_event_combination = 3.
  IF sy-subrc &amp;lt;&amp;gt; 0.
    MESSAGE x208(00) WITH 'ERROR'.                          "#EC NOTEXT
  ENDIF.



* set Handler
  SET HANDLER:
    lcl_eventhandler=&amp;gt;handle_node_double_click FOR go_tree,
    lcl_eventhandler=&amp;gt;handle_item_double_click FOR go_tree,
    lcl_eventhandler=&amp;gt;handle_checkbox_change   for go_tree.

**  DATA: l_event_receiver TYPE REF TO lcl_tree_event_receiver.
**  CREATE OBJECT l_event_receiver.
**  SET HANDLER l_event_receiver-&amp;gt;handle_node_ctmenu_request
**                                                        FOR tree1.
**  SET HANDLER l_event_receiver-&amp;gt;handle_node_ctmenu_selected
**                                                        FOR tree1.
**  SET HANDLER l_event_receiver-&amp;gt;handle_item_ctmenu_request
**                                                        FOR tree1.
**  SET HANDLER l_event_receiver-&amp;gt;handle_item_ctmenu_selected
**                                                        FOR tree1.
**  SET HANDLER l_event_receiver-&amp;gt;handle_checkbox_change FOR tree1.

ENDFORM.                               " register_events



*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  DISPLAY
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&amp;gt;  p1        text
*  &amp;lt;--  p2        text
*----------------------------------------------------------------------*
FORM display .
  DATA: ls_outtab   TYPE ty_s_outtab,
        ls_line     type ty_s_outtab,
        ld_msg      TYPE bapi_msg.


  LOOP AT gt_outtab INTO ls_outtab
          WHERE ( loevm = 'X' ).
    CONCATENATE ls_outtab-kunnr
                ls_outtab-vkorg
                ls_outtab-vtweg
                ls_outtab-spart
                ls_outtab-loevm
      INTO ld_msg SEPARATED BY space.
    MESSAGE ld_msg TYPE 'I'.
  ENDLOOP.
  IF ( syst-subrc NE 0 ).
    MESSAGE 'No marked checkboxes found' TYPE 'I'.
  ENDIF.

ENDFORM.                    " DISPLAY
&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;  Uwe&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 15 Sep 2008 20:11:36 GMT</pubDate>
    <dc:creator>uwe_schieferstein</dc:creator>
    <dc:date>2008-09-15T20:11:36Z</dc:date>
    <item>
      <title>alv tree checkbox problem</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-tree-checkbox-problem/m-p/4495526#M1063802</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi i have this little problem , im using an alvtree and i am creating the field catalog like this&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR gs_fieldcat.&lt;/P&gt;&lt;P&gt;  gs_fieldcat-col_pos = 10.&lt;/P&gt;&lt;P&gt;  gs_fieldcat-reptext = 'Bo.Ejecutivo'.&lt;/P&gt;&lt;P&gt;  gs_fieldcat-scrtext_s = 'Bo.Ejecutivo'.&lt;/P&gt;&lt;P&gt;  gs_fieldcat-fieldname = 'CHECK'.&lt;/P&gt;&lt;P&gt;  gs_fieldcat-tabname = 'IT_FINAL'.&lt;/P&gt;&lt;P&gt;  gs_fieldcat-checkbox = 'X'.&lt;/P&gt;&lt;P&gt;  gs_fieldcat-edit = 'X'.&lt;/P&gt;&lt;P&gt;  gS_FIELDCAT-COL_OPT = 'X'.&lt;/P&gt;&lt;P&gt;  gs_fieldcat-outputlen = '5'.&lt;/P&gt;&lt;P&gt;  APPEND gs_fieldcat TO gt_fieldcat_tree.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;then when the user select a row i use this&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CALL METHOD g_alv_tree-&amp;gt;get_selected_nodes&lt;/P&gt;&lt;P&gt;          CHANGING&lt;/P&gt;&lt;P&gt;            ct_selected_nodes = lt_selected_node.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;       &lt;/P&gt;&lt;P&gt;          CALL METHOD g_alv_tree-&amp;gt;get_outtab_line&lt;/P&gt;&lt;P&gt;            EXPORTING&lt;/P&gt;&lt;P&gt;              i_node_key    = l_selected_node&lt;/P&gt;&lt;P&gt;            IMPORTING&lt;/P&gt;&lt;P&gt;              e_outtab_line = wa_finalop.&lt;/P&gt;&lt;P&gt;          &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;but if i mark the chekbox, the work area check field is empty i dont know why any idea?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 15 Sep 2008 18:50:21 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-tree-checkbox-problem/m-p/4495526#M1063802</guid>
      <dc:creator>alejandro_romero2</dc:creator>
      <dc:date>2008-09-15T18:50:21Z</dc:date>
    </item>
    <item>
      <title>Re: alv tree checkbox problem</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-tree-checkbox-problem/m-p/4495527#M1063803</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Alejandro&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You may have a look at my sample report &lt;STRONG&gt;ZUS_SDN_ALV_TREE_DEMO&lt;/STRONG&gt;. The field (KNVV-)LOEVM is defined as editable checkbox. In addition, I have registered and defined an event handler for CHECKBOX_CHANGE. Within the event handler method I update the outtab itab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;When the ALV tree is display enter 'DISPLAY' in the command window and see what happens.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp; Report  ZUS_SDN_ALV_TREE_DEMO
*&amp;amp;
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp; Thread: alv tree checkbox problem 
*&amp;amp; &amp;lt;a class="jive_macro jive_macro_thread" href="" __jive_macro_name="thread" modifiedtitle="true" __default_attr="1046535"&amp;gt;&amp;lt;/a&amp;gt;
*&amp;amp;
*&amp;amp; Thread: double click in ALV tree output????
*&amp;amp; &amp;lt;a class="jive_macro jive_macro_thread" href="" __jive_macro_name="thread" modifiedtitle="true" __default_attr="742412"&amp;gt;&amp;lt;/a&amp;gt;
*&amp;amp;
*&amp;amp;
*&amp;amp;---------------------------------------------------------------------*

REPORT  zus_sdn_alv_tree_demo.

CLASS cl_gui_column_tree DEFINITION LOAD.
CLASS cl_gui_cfw DEFINITION LOAD.

TYPE-POOLS: abap.

TYPES: BEGIN OF ty_s_key.
TYPES: nkey       TYPE lvc_nkey.
TYPES: parent_key TYPE lvc_nkey.
TYPES: END OF ty_s_key.

TYPES: BEGIN OF ty_s_outtab.
INCLUDE TYPE knvv AS data.
INCLUDE TYPE ty_s_key AS key.
TYPES: END OF ty_s_outtab.
TYPES: ty_t_outtab    TYPE STANDARD TABLE OF ty_s_outtab
                      WITH DEFAULT KEY.

DATA: gt_outtab    TYPE ty_t_outtab.


DATA:
  gd_okcode        TYPE ui_func,
  gd_repid         TYPE syst-repid,
*
  gt_fcat          TYPE lvc_t_fcat,
  gs_layout        TYPE lvc_s_layo,
  gs_variant       TYPE disvariant,
  go_docking       TYPE REF TO cl_gui_docking_container,
  go_tree          TYPE REF TO cl_gui_alv_tree.


*----------------------------------------------------------------------*
*       CLASS lcl_eventhandler DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_eventhandler DEFINITION.
  PUBLIC SECTION.

    CLASS-METHODS:

    handle_node_double_click
      FOR EVENT node_double_click OF cl_gui_alv_tree
      IMPORTING node_key,

    handle_item_double_click
      FOR EVENT item_double_click OF cl_gui_alv_tree
      IMPORTING node_key
                fieldname,

    handle_checkbox_change
      FOR EVENT checkbox_change of cl_gui_alv_tree
      IMPORTING checked
                fieldname
                node_key.

ENDCLASS.                    "lcl_eventhandler DEFINITION


*----------------------------------------------------------------------*
*       CLASS lcl_eventhandler IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_eventhandler IMPLEMENTATION.

  METHOD handle_node_double_click.
    MESSAGE 'Event=Double-Click on Node' TYPE 'I'.
    CALL TRANSACTION 'XD03'.

  ENDMETHOD.                    "handle_node_double_click

  METHOD handle_item_double_click.
    MESSAGE 'Event=Double-Click on Item' TYPE 'I'.
    CALL TRANSACTION 'VA03'.
  ENDMETHOD.                    "handle_item_double_click

  method handle_checkbox_change.
    data: ls_outtab     type ty_s_outtab.

    break-point.
    CALL METHOD go_tree-&amp;gt;get_outtab_line
      EXPORTING
        i_node_key     = node_key
      IMPORTING
        e_outtab_line  = ls_outtab
*        e_node_text    =
*        et_item_layout =
*        es_node_layout =
      EXCEPTIONS
        node_not_found = 1
        others         = 2.
    IF sy-subrc &amp;lt;&amp;gt; 0.
*     MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.

    ls_outtab-loevm = checked.

    modify gt_outtab from ls_outtab
      TRANSPORTING loevm
      where ( nkey = node_key ).

      " Trigger PAI
      CALL METHOD cl_gui_cfw=&amp;gt;set_new_ok_code
        EXPORTING
          new_code = 'REFRESH'
*        IMPORTING
*          rc       =
          .

    endmethod.

ENDCLASS.                    "lcl_eventhandler IMPLEMENTATION



START-OF-SELECTION.


  PERFORM init_controls.


  gd_repid = syst-repid.
  CALL METHOD go_docking-&amp;gt;link
    EXPORTING
      repid                       = gd_repid
      dynnr                       = '0100'
*      container                   =
    EXCEPTIONS
      cntl_error                  = 1
      cntl_system_error           = 2
      lifetime_dynpro_dynpro_link = 3
      OTHERS                      = 4.
  IF sy-subrc &amp;lt;&amp;gt; 0.
*   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

  CALL SCREEN '0100'.

** NOTE: no elements on screen
**  PROCESS BEFORE OUTPUT.
**    MODULE STATUS_0100.
***
**  PROCESS AFTER INPUT.
**    MODULE USER_COMMAND_0100.





END-OF-SELECTION.

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Module  STATUS_0100  OUTPUT
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
  SET PF-STATUS 'STATUS_0100'.
*  SET TITLEBAR 'xxx'.


ENDMODULE.                 " STATUS_0100  OUTPUT

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Module  USER_COMMAND_0100  INPUT
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.





  TRANSLATE gd_okcode TO UPPER CASE.

  CASE gd_okcode.
    WHEN 'BACK'  OR
         'EXIT'  OR
         'CANC'.
      SET SCREEN 0. LEAVE SCREEN.

    WHEN 'REFRESH'.
      CALL METHOD go_tree-&amp;gt;update_calculations
*        EXPORTING
*          no_frontend_update =
          .


    WHEN 'DISPLAY'.
      PERFORM display.

    WHEN OTHERS.
  ENDCASE.

  CLEAR: gd_okcode.

ENDMODULE.                 " USER_COMMAND_0100  INPUT
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  init_controls
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&amp;gt;  p1        text
*  &amp;lt;--  p2        text
*----------------------------------------------------------------------*
FORM init_controls .

* Create docking container
  CREATE OBJECT go_docking
    EXPORTING
      parent = cl_gui_container=&amp;gt;screen0
      ratio  = 90
    EXCEPTIONS
      OTHERS = 6.
  IF sy-subrc &amp;lt;&amp;gt; 0.
*   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

* create tree control
  CREATE OBJECT go_tree
    EXPORTING
      parent                      = go_docking
      node_selection_mode         = cl_gui_column_tree=&amp;gt;node_sel_mode_multiple
      item_selection              = 'X'  " required for double-click event on item
      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 &amp;lt;&amp;gt; 0.
    MESSAGE x208(00) WITH 'ERROR'.                          "#EC NOTEXT
  ENDIF.


* create Hierarchy-header
  DATA ls_hierarchy_header TYPE treev_hhdr.
  PERFORM build_hierarchy_header CHANGING ls_hierarchy_header.


  PERFORM build_fieldcatalog.
  PERFORM set_layout_and_variant.

* create emty tree-control
  CALL METHOD go_tree-&amp;gt;set_table_for_first_display
    EXPORTING
**      i_structure_name     = 'KNVV'
      is_variant           = gs_variant
      i_save               = 'A'
*      i_default            = 'X'
      is_hierarchy_header  = ls_hierarchy_header
*      is_exception_field   =
*      it_special_groups    =
*      it_list_commentary   =
*      i_logo               =
*      i_background_id      =
*      it_toolbar_excluding =
*      it_except_qinfo      =
    CHANGING
      it_outtab            = gt_outtab
*      it_filter            =
      it_fieldcatalog      = gt_fcat.

* create hierarchy
  PERFORM create_hierarchy.

* register events
  PERFORM register_events.

* adjust column_width
  CALL METHOD go_tree-&amp;gt;column_optimize.

ENDFORM.                    " init_controls


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  build_hierarchy_header
*&amp;amp;---------------------------------------------------------------------*
*       build hierarchy-header-information
*----------------------------------------------------------------------*
*      --&amp;gt;P_L_HIERARCHY_HEADER  strucxture for hierarchy-header
*----------------------------------------------------------------------*
FORM build_hierarchy_header CHANGING
                               p_hierarchy_header TYPE treev_hhdr.

  p_hierarchy_header-heading = 'Hierarchy Header'.          "#EC NOTEXT
  p_hierarchy_header-tooltip =
                         'This is the Hierarchy Header !'.  "#EC NOTEXT
  p_hierarchy_header-width = 30.
  p_hierarchy_header-width_pix = ''.

ENDFORM.                               " build_hierarchy_header



*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  BUILD_FIELDCATALOG
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&amp;gt;  p1        text
*  &amp;lt;--  p2        text
*----------------------------------------------------------------------*
FORM build_fieldcatalog .
  DATA: ls_fcat   TYPE lvc_s_fcat.

  REFRESH: gt_fcat.
  CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
    EXPORTING
*     I_BUFFER_ACTIVE              =
      i_structure_name             = 'KNVV'
*     I_CLIENT_NEVER_DISPLAY       = 'X'
      i_bypassing_buffer           = 'X'
*     I_INTERNAL_TABNAME           =
    CHANGING
      ct_fieldcat                  = gt_fcat
    EXCEPTIONS
      inconsistent_interface       = 1
      program_error                = 2
      OTHERS                       = 3.
  IF sy-subrc &amp;lt;&amp;gt; 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

  DELETE gt_fcat FROM 10.
  READ TABLE gt_fcat INTO ls_fcat
       WITH KEY fieldname = 'LOEVM'.
  IF ( syst-subrc = 0 ).
    ls_fcat-checkbox = 'X'.
    ls_fcat-edit     = 'X'.
**    ls_fcat-hotspot  = 'X'.
    MODIFY gt_fcat FROM ls_fcat INDEX syst-tabix.
  ENDIF.

ENDFORM.                    " BUILD_FIELDCATALOG


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  SET_LAYOUT_AND_VARIANT
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&amp;gt;  p1        text
*  &amp;lt;--  p2        text
*----------------------------------------------------------------------*
FORM set_layout_and_variant .

  CLEAR: gs_layout,
         gs_variant.

  gs_variant-report = syst-repid.
  gs_variant-handle = 'TREE'.

ENDFORM.                    " SET_LAYOUT_AND_VARIANT
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  create_hierarchy
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&amp;gt;  p1        text
*  &amp;lt;--  p2        text
*----------------------------------------------------------------------*
FORM create_hierarchy .
  DATA: ls_knvv     TYPE sflight,
        ld_idx      TYPE i,
        ls_outtab   TYPE ty_s_outtab,
        lt_outtab   TYPE ty_t_outtab.

* get data
  SELECT * FROM knvv INTO CORRESPONDING FIELDS OF TABLE lt_outtab
                        UP TO 20 ROWS .                 "#EC CI_NOWHERE

  SORT lt_outtab BY kunnr vkorg.

* add data to tree
  DATA: ld_root_key  TYPE lvc_nkey,
        ld_kunnr_key TYPE lvc_nkey,
        ld_vkorg_key TYPE lvc_nkey,
        ld_last_key  TYPE lvc_nkey.

  ld_idx = 0.
  LOOP AT lt_outtab INTO ls_outtab.

    AT FIRST.
      PERFORM add_root_line USING    ls_outtab-data
                                         ''
                              CHANGING ld_root_key.

      ADD 1 TO ld_idx.
      ls_outtab-nkey       = ld_root_key.
      ls_outtab-parent_key = space.
      MODIFY gt_outtab FROM ls_outtab INDEX ld_idx
        TRANSPORTING key.
    ENDAT.

    ON CHANGE OF ls_outtab-kunnr.
      PERFORM add_customer_line USING    ls_outtab-data
                                         ld_root_key
                              CHANGING ld_kunnr_key.
      ADD 1 TO ld_idx.
      ls_outtab-nkey       = ld_kunnr_key.
      ls_outtab-parent_key = ld_root_key.
      MODIFY gt_outtab FROM ls_outtab INDEX ld_idx
        TRANSPORTING key.
    ENDON.



    ON CHANGE OF ls_outtab-vkorg.
      PERFORM add_salesorg_line USING    ls_outtab-data
                                         ld_kunnr_key
                              CHANGING ld_vkorg_key.
      ADD 1 TO ld_idx.
      ls_outtab-nkey       = ld_vkorg_key.
      ls_outtab-parent_key = ld_kunnr_key.
      MODIFY gt_outtab FROM ls_outtab INDEX ld_idx
        TRANSPORTING key.
    ENDON.
    PERFORM add_complete_line USING  ls_outtab-data
                                     ld_vkorg_key
                            CHANGING ld_last_key.

    ADD 1 TO ld_idx.
    ls_outtab-nkey       = ld_last_key.
    ls_outtab-parent_key = ld_vkorg_key.
    MODIFY gt_outtab FROM ls_outtab INDEX ld_idx
      TRANSPORTING key.
  ENDLOOP.

* calculate totals
  CALL METHOD go_tree-&amp;gt;update_calculations.

* this method must be called to send the data to the frontend
  CALL METHOD go_tree-&amp;gt;frontend_update.
ENDFORM.                    " create_hierarchy


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  add_customer_line
*&amp;amp;---------------------------------------------------------------------*
*       add hierarchy-level 1 to tree
*----------------------------------------------------------------------*
*      --&amp;gt;P_LS_SFLIGHT  sflight
*      --&amp;gt;P_RELEATKEY   relatkey
*     &amp;lt;--&amp;gt;p_node_key    new node-key
*----------------------------------------------------------------------*
FORM add_root_line USING     us_data TYPE ty_s_outtab-data
                             ud_relat_key TYPE lvc_nkey
                     CHANGING  cd_node_key TYPE lvc_nkey.

  DATA: l_node_text TYPE lvc_value,
        ls_data TYPE ty_s_outtab-data.

* set item-layout
  DATA: lt_item_layout TYPE lvc_t_layi,
        ls_item_layout TYPE lvc_s_layi.
  ls_item_layout-t_image = '@3Q@'.  " icon_overview
  ls_item_layout-fieldname = go_tree-&amp;gt;c_hierarchy_column_name.
  ls_item_layout-style   =
                        cl_gui_column_tree=&amp;gt;style_intensifd_critical.
  APPEND ls_item_layout TO lt_item_layout.

* add node
  l_node_text =  'Overview: Sales Areas'.

  DATA: ls_node TYPE lvc_s_layn.
  ls_node-n_image   = space.
  ls_node-exp_image = space.

  CALL METHOD go_tree-&amp;gt;add_node
    EXPORTING
      i_relat_node_key = ud_relat_key
      i_relationship   = cl_gui_column_tree=&amp;gt;relat_last_child
      i_node_text      = l_node_text
      is_outtab_line   = ls_data
      is_node_layout   = ls_node
      it_item_layout   = lt_item_layout
    IMPORTING
      e_new_node_key   = cd_node_key.

ENDFORM.                               " add_root_line


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  add_customer_line
*&amp;amp;---------------------------------------------------------------------*
*       add hierarchy-level 1 to tree
*----------------------------------------------------------------------*
*      --&amp;gt;P_LS_SFLIGHT  sflight
*      --&amp;gt;P_RELEATKEY   relatkey
*     &amp;lt;--&amp;gt;p_node_key    new node-key
*----------------------------------------------------------------------*
FORM add_customer_line USING     us_data TYPE ty_s_outtab-data
                                 ud_relat_key TYPE lvc_nkey
                     CHANGING  cd_node_key TYPE lvc_nkey.

  DATA: l_node_text TYPE lvc_value,
        ls_data TYPE ty_s_outtab-data.

* set item-layout
  DATA: lt_item_layout TYPE lvc_t_layi,
        ls_item_layout TYPE lvc_s_layi.
  ls_item_layout-t_image = '@A0@'.  " icon_customer.
  ls_item_layout-fieldname = go_tree-&amp;gt;c_hierarchy_column_name.
  ls_item_layout-style   =
                        cl_gui_column_tree=&amp;gt;style_intensifd_critical.
  APPEND ls_item_layout TO lt_item_layout.

* add node
  l_node_text =  us_data-kunnr.

  DATA: ls_node TYPE lvc_s_layn.
  ls_node-n_image   = space.
  ls_node-exp_image = space.

  CALL METHOD go_tree-&amp;gt;add_node
    EXPORTING
      i_relat_node_key = ud_relat_key
      i_relationship   = cl_gui_column_tree=&amp;gt;relat_last_child
      i_node_text      = l_node_text
      is_outtab_line   = ls_data
      is_node_layout   = ls_node
      it_item_layout   = lt_item_layout
    IMPORTING
      e_new_node_key   = cd_node_key.

ENDFORM.                               " add_customer_line


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  add_salesorg_line
*&amp;amp;---------------------------------------------------------------------*
*       add hierarchy-level 1 to tree
*----------------------------------------------------------------------*
*      --&amp;gt;P_LS_SFLIGHT  sflight
*      --&amp;gt;P_RELEATKEY   relatkey
*     &amp;lt;--&amp;gt;p_node_key    new node-key
*----------------------------------------------------------------------*
FORM add_salesorg_line USING     us_data TYPE ty_s_outtab-data
                                 ud_relat_key TYPE lvc_nkey
                     CHANGING  cd_node_key TYPE lvc_nkey.

  DATA: l_node_text TYPE lvc_value,
        ls_data TYPE ty_s_outtab-data.

* set item-layout
  DATA: lt_item_layout TYPE lvc_t_layi,
        ls_item_layout TYPE lvc_s_layi.
  ls_item_layout-t_image = '@DS@'.  " ICON_PARTNER_SALES_ACTIVITY
  ls_item_layout-fieldname = go_tree-&amp;gt;c_hierarchy_column_name.
  ls_item_layout-style   =
                        cl_gui_column_tree=&amp;gt;style_intensifd_critical.
  APPEND ls_item_layout TO lt_item_layout.

* add node
  l_node_text =  us_data-vkorg.

  DATA: ls_node TYPE lvc_s_layn.
  ls_node-n_image   = space.
  ls_node-exp_image = space.

  CALL METHOD go_tree-&amp;gt;add_node
    EXPORTING
      i_relat_node_key = ud_relat_key
      i_relationship   = cl_gui_column_tree=&amp;gt;relat_last_child
      i_node_text      = l_node_text
      is_outtab_line   = ls_data
      is_node_layout   = ls_node
      it_item_layout   = lt_item_layout
    IMPORTING
      e_new_node_key   = cd_node_key.

ENDFORM.                               " add_salesorg_line


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  add_cmplete_line
*&amp;amp;---------------------------------------------------------------------*
*       add hierarchy-level 3 to tree
*----------------------------------------------------------------------*
*      --&amp;gt;P_LS_SFLIGHT  sflight
*      --&amp;gt;P_RELEATKEY   relatkey
*     &amp;lt;--&amp;gt;p_node_key    new node-key
*----------------------------------------------------------------------*
FORM add_complete_line USING     us_data TYPE ty_s_outtab-data
                                 ud_relat_key TYPE lvc_nkey
                     CHANGING  cd_node_key TYPE lvc_nkey.

  DATA: l_node_text TYPE lvc_value.

* set item-layout
  DATA: lt_item_layout TYPE lvc_t_layi,
        ls_item_layout TYPE lvc_s_layi.
  ls_item_layout-fieldname = go_tree-&amp;gt;c_hierarchy_column_name.
**  ls_item_layout-class   = cl_gui_column_tree=&amp;gt;item_class_checkbox.
**  ls_item_layout-editable = 'X'.
  APPEND ls_item_layout TO lt_item_layout.

**  CLEAR ls_item_layout.
**  ls_item_layout-fieldname = 'PLANETYPE'.
**  ls_item_layout-alignment = cl_gui_column_tree=&amp;gt;align_right.
**  APPEND ls_item_layout TO lt_item_layout.

  l_node_text =  us_data-vtweg.

  DATA: ls_node TYPE lvc_s_layn.
  ls_node-n_image   = space.
  ls_node-exp_image = space.

  CALL METHOD go_tree-&amp;gt;add_node
    EXPORTING
      i_relat_node_key = ud_relat_key
      i_relationship   = cl_gui_column_tree=&amp;gt;relat_last_child
      is_outtab_line   = us_data
      i_node_text      = l_node_text
      is_node_layout   = ls_node
      it_item_layout   = lt_item_layout
    IMPORTING
      e_new_node_key   = cd_node_key.
ENDFORM.                               " add_complete_line



*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  register_events
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&amp;gt;  p1        text
*  &amp;lt;--  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=&amp;gt;eventid_expand_no_children.
  APPEND l_event TO lt_events.
  l_event-eventid = cl_gui_column_tree=&amp;gt;eventid_checkbox_change.
  APPEND l_event TO lt_events.
**  l_event-eventid = cl_gui_column_tree=&amp;gt;eventid_header_context_men_req.
**  APPEND l_event TO lt_events.
**  l_event-eventid = cl_gui_column_tree=&amp;gt;eventid_node_context_menu_req.
**  APPEND l_event TO lt_events.
**  l_event-eventid = cl_gui_column_tree=&amp;gt;eventid_item_context_menu_req.
**  APPEND l_event TO lt_events.
**  l_event-eventid = cl_gui_column_tree=&amp;gt;eventid_header_click.
**  APPEND l_event TO lt_events.
**  l_event-eventid = cl_gui_column_tree=&amp;gt;eventid_item_keypress.
**  APPEND l_event TO lt_events.

  l_event-eventid = cl_gui_column_tree=&amp;gt;eventid_node_double_click.
  APPEND l_event TO lt_events.
  l_event-eventid = cl_gui_column_tree=&amp;gt;eventid_item_double_click.
  APPEND l_event TO lt_events.


  CALL METHOD go_tree-&amp;gt;set_registered_events
    EXPORTING
      events                    = lt_events
    EXCEPTIONS
      cntl_error                = 1
      cntl_system_error         = 2
      illegal_event_combination = 3.
  IF sy-subrc &amp;lt;&amp;gt; 0.
    MESSAGE x208(00) WITH 'ERROR'.                          "#EC NOTEXT
  ENDIF.



* set Handler
  SET HANDLER:
    lcl_eventhandler=&amp;gt;handle_node_double_click FOR go_tree,
    lcl_eventhandler=&amp;gt;handle_item_double_click FOR go_tree,
    lcl_eventhandler=&amp;gt;handle_checkbox_change   for go_tree.

**  DATA: l_event_receiver TYPE REF TO lcl_tree_event_receiver.
**  CREATE OBJECT l_event_receiver.
**  SET HANDLER l_event_receiver-&amp;gt;handle_node_ctmenu_request
**                                                        FOR tree1.
**  SET HANDLER l_event_receiver-&amp;gt;handle_node_ctmenu_selected
**                                                        FOR tree1.
**  SET HANDLER l_event_receiver-&amp;gt;handle_item_ctmenu_request
**                                                        FOR tree1.
**  SET HANDLER l_event_receiver-&amp;gt;handle_item_ctmenu_selected
**                                                        FOR tree1.
**  SET HANDLER l_event_receiver-&amp;gt;handle_checkbox_change FOR tree1.

ENDFORM.                               " register_events



*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  DISPLAY
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&amp;gt;  p1        text
*  &amp;lt;--  p2        text
*----------------------------------------------------------------------*
FORM display .
  DATA: ls_outtab   TYPE ty_s_outtab,
        ls_line     type ty_s_outtab,
        ld_msg      TYPE bapi_msg.


  LOOP AT gt_outtab INTO ls_outtab
          WHERE ( loevm = 'X' ).
    CONCATENATE ls_outtab-kunnr
                ls_outtab-vkorg
                ls_outtab-vtweg
                ls_outtab-spart
                ls_outtab-loevm
      INTO ld_msg SEPARATED BY space.
    MESSAGE ld_msg TYPE 'I'.
  ENDLOOP.
  IF ( syst-subrc NE 0 ).
    MESSAGE 'No marked checkboxes found' TYPE 'I'.
  ENDIF.

ENDFORM.                    " DISPLAY
&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;  Uwe&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 15 Sep 2008 20:11:36 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-tree-checkbox-problem/m-p/4495527#M1063803</guid>
      <dc:creator>uwe_schieferstein</dc:creator>
      <dc:date>2008-09-15T20:11:36Z</dc:date>
    </item>
    <item>
      <title>Re: alv tree checkbox problem</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-tree-checkbox-problem/m-p/4495528#M1063804</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;thanks a lot i solved by my self&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 18 Sep 2008 02:37:58 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-tree-checkbox-problem/m-p/4495528#M1063804</guid>
      <dc:creator>alejandro_romero2</dc:creator>
      <dc:date>2008-09-18T02:37:58Z</dc:date>
    </item>
  </channel>
</rss>

