ALV TREE - Double click on an item

Hi all,
I need to handle the double click action on an Item of ad ALV_TREE defined cl_gui_alv_tree_simple
What I did at now is:
u2026
DATA tree1  TYPE REF TO cl_gui_alv_tree_simple.
u2026     
  CREATE OBJECT event_receiver.
  SET HANDLER event_receiver->item_double_click FOR tree1.
  SET HANDLER event_receiver->node_double_click FOR tree1.
u2026
CLASS lcl_event_receiver DEFINITION.
  PUBLIC SECTION.
    METHODS:
*Double-click control
    item_double_click FOR EVENT item_double_click OF cl_gui_alv_tree_simple
                      IMPORTING index_outtab
                                fieldname
                                grouplevel,
*Double-click control
    node_double_click FOR EVENT node_double_click OF cl_gui_alv_tree_simple
                      IMPORTING index_outtab
                                grouplevel.
  PRIVATE SECTION.
ENDCLASS.                    "lcl_event_receiver DEFINITION
CLASS lcl_event_receiver IMPLEMENTATION.
  METHOD item_double_click.
    break <my_user_id>.
  ENDMETHOD.                    "handle_double_click
  METHOD node_double_click.
    break <my_user_id>.
  ENDMETHOD.                    "handle_double_click
ENDCLASS.                    "lcl_event_receiver IMPLEMENTATION
When I double click on item the program do nothing and I donu2019t understand the why.
Note: I think I could try to define the events passed, using the method et_registered_events, but I donu2019t know how to obtain the id of method item_double_click defined in class cl_gui_alv_tree_simple.
Any Idea?
Thank you in advance.

Register the events with the below code...
  data: lt_events type cntl_simple_events,
        l_event type cntl_simple_event.
  l_event-eventid = cl_gui_column_tree=>eventid_node_double_click.
  append l_event to lt_events.
  l_event-eventid = cl_gui_column_tree=>eventid_item_double_CLICK.
  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.

Similar Messages

  • I have Thunderbird 24.5.0. When I double click the desktop item to open it up, it opens immediately, but when I'm in the main page with all the folders on the

    I have Thunderbird 24.5.0. When I double click the desktop item to open it up, it opens immediately, but when I'm in the main page with all the folders on the left & the corresponding email details on the right of that same page, it seems to have problems. Before, when I would highlight a certain box / folder (whether it would b “inbox”, “sent” folder, “trash” folder, or whatever, it takes a good 5 min (minimum) to open that certain folder so I can see the emails of that folder.
    Can u help me determine what is causing this? Just 3 days ago, it was fine.
    Thank you

    What is your anti-virus software?

  • My computer had to be shut down this morning when I could move my mouse around but it would not respond when I double clicked on an item to select.  Now I cannot open a file in my finder window by double clicking on it.  Any suggestions?

    My computer had to be shut down this morning when I could move my mouse around but it would not respond when I double clicked on an item to select.  Now I cannot open a file in my finder window by double clicking on it.  Any suggestions?

    Did you reinstall CS3 after CC?
    For that matter, doing an in-place upgrade on the OS is always a gamble with Adobe programs. Reinstalling all the versions you need, in order, would probably solve your problem.
    And you shouldn't need to save as IDML after opening the .inx in CC.

  • When i double click on and item in the firefox downloads window the item dosn't open, left clicking on the item still dose not give me the choice to "open". how to fix this problem thanks

    When i double click on an item in the firefox dowloads window the item dos'nt open.Left clicking on the item dose not give me the choice to "open" the item.
    the downloaded item is a pdf file of 59 kb, and was downloaded using adobe acrobat version 5

    I have sort of the exact same problem. Extremely far away from user friendly
    I have an second issue as well: When I hook off all-day it comes up with an 8 hour event!
    And then if I put in a late start hour it pushes end time to next day due to the 8 hour event suggestion.
    All in all this gives a lot of changes just to enter an event.
    Command N
    I learnt from your input to use this fuction. At least that comes up with a one hour event as default.

  • Double clicking a list item

    Hi,
    I'm just trying to perform an action by double-clicking a list item, but doesn't seem to work. code:
    WHEN-MOUSE-DOUBLE-CLICK trigger on List item (TList).
    DECLARE
    v_verwalten VARCHAR2(40);
    BEGIN
    v_verwalten := :CONTROL.LIST;
    IF v_verwalten = 'Codes verwalten'
    THEN NEW_FORM('COD_VER');
    END IF;
    END;

    Hi all,
    When the list item type is tlist, the trigger 'WHEN-LIST-ACTIVATED' will fire for "mouse double click" and "key enter".
    Try with placing the code in 'WHEN-LIST-ACTIVATED' trigger.
    Cheers,
    Zakiy

  • ALV-Tree Node click not working

    Hi All,
    I am displaying the data in ALV tree. When the user click on the node i want to capture some event and method in which i have to do some coding. Can you tell me which method and  event i should use to achieve this functionality. its bit urgent.
    Immediate response will be apprecited.
    Regards,
    Ranjan

    Hi ,
    I have gone through the link. I have done the below part in my coding even though when i double click on the node, the event node_double_click is not getting triggered. Kindly suggest me what i have missed.
    1) Register event with tree instance:
    Register event for NODE_DOUBLE_CLICK
    l_event-eventid = cl_gui_column_tree=>eventid_node_double_click.
    APPEND l_event TO lt_events.
    (2) Set handler for event:
    SET HANDLER l_event_receiver->handle_node_double_click FOR tree1
    (3) Define and implement event handler method:
    METHODS handle_node_double_click
    FOR EVENT node_double_click OF cl_gui_alv_tree
    IMPORTING node_key.
    ENDCLASS. "lcl_tree_event_receiver DEFINITION
    CLASS lcl_tree_event_receiver IMPLEMENTATION
    CLASS lcl_tree_event_receiver IMPLEMENTATION.
    METHOD handle_node_double_click.
    break-point.
    ENDMETHOD. "handle_node_double_click
    Regards,
    Ranjan

  • ALV Class Double click event

    Hi All,
    I have created an alv report using alv class. I have handled the double click event in that i am calling transaction using row currenlty selected. But after doing subtotalling the list and then i double click a line it is passing wrong data.
    Points are awarded,
    Regards,
    Bharat Mistry
    Message was edited by: Bharat Mistry

    Hi Bharat,
    Read the internal table contents in double click event with e_row-index , then you will get the data of that particular row.
    check below code :
    local class to handle semantic checks
    CLASS lcl_event_receiver DEFINITION DEFERRED.
    DATA: g_event_receiver TYPE REF TO lcl_event_receiver.
    LOCAL CLASS Definition
    *§4.Define and implement event handler to handle event DATA_CHANGED.
    CLASS lcl_event_receiver DEFINITION.
      public section.
        METHODS:
          handle_double_click
                 FOR EVENT double_click OF cl_gui_alv_grid
                 IMPORTING e_row e_column.
    ENDCLASS.
    CLASS lcl_event_receiver IMPLEMENTATION.
      METHOD handle_double_click.
      read table gt_outtab index e_row-index into
    Regards
    Appana
    *Reward Points for helpful answers
    Message was edited by: L Appana

  • How to display data in alv through double click

    Hello Friends,
    I am new to this community,please tell me if I make any mistake while posting.
    Friends I had written this code. ALV is displayed at first time but when I am double clicking on the row then error is coming related to mismatch of actual and formal paramaters while calling function 'USER_COMMAND'. I am unable to locate where the error is. Please help me out.
    REPORT  ZALV12.
    TYPE-POOLS SLIS.
    DATA: it_vbak type standard table of VBAK,
          it_vbap type table of VBAP.
    DATA: wa_vbak like line of it_vbak,
          wa_vbap like line of it_vbap.
    DATA syrepid like sy-repid.
    DATA:fld_vbak type SLIS_T_FIELDCAT_ALV,
          fld_vbap type SLIS_T_FIELDCAT_ALV.
    DATA:fld_wa_vbak type SLIS_FIELDCAT_ALV,
         fld_wa_vbap type SLIS_FIELDCAT_ALV.
    DATA:vevent type SLIS_T_EVENT,
         waevent type SLIS_ALV_EVENT.
    DATA:LST_HEADR type SLIS_T_LISTHEADER.
    DATA title_alv type LVC_TITLE value 'LIST FOR VBAK'.
    INITIALIZATION.
    syrepid = sy-repid.
    perform get_event.
    perform populate_event.
    perform set_list_headr using LST_HEADR.
    perform field_cat.
    START-OF-SELECTION.
    .....                       "code for displaying data from table VBAK in ALV.
    form USER_COMMAND using R_UCOMM type SY-UCOMM.           "error is in this function.
        data r_selfield type SLIS_SELFIELD.
        case R_UCOMM.
         when '&IC1'.
           read table it_vbak into wa_vbak index r_selfield-TABINDEX.
            perform data_select.
            perform list_heading using LST_HEADR.
            perform event_get.
            perform build_event.
            perform alv_display.
        endcase.
    endform.
    form data_select.
       select * from VBAP into table it_vbap up to 20 rows.
    endform.
    form list_heading using i_lst type SLIS_T_LISTHEADER.
       data HLINE type SLIS_LISTHEADER.
       HLINE-TYP = 'H'.
       HLINE-INFO = 'FOR VBAP'.
       append HLINE to i_lst.
    endform.
    form alv_display.
       CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
         EXPORTING
           I_CALLBACK_PROGRAM                = syrepid
          I_STRUCTURE_NAME                  = 'VBAP'
           I_GRID_TITLE                      = 'SCREEN2_VBAP'
         TABLES
           T_OUTTAB                          = it_vbap
       IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
       ENDIF.
       endform.
       form event_get.
         CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
           EXPORTING
             I_LIST_TYPE           = 0
         IMPORTING
             ET_EVENTS             = vevent
         EXCEPTIONS
           LIST_TYPE_WRONG       = 1
           OTHERS                = 2
         IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
         ENDIF.
      endform.
      form build_event.
        read table vevent into waevent with key name = 'TOP_OF_PAGE'.
        if sy-subrc = 0.
          waevent-form = 'F_TOP_OF_PAGE'.
          modify vevent from waevent transporting form
          where name = 'TOP_OF_PAGE'.
          endif.
      endform.
      form F_TOP_OF_PAGE.
        CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
          EXPORTING
            IT_LIST_COMMENTARY       = LST_HEADR
          I_LOGO                   =
          I_END_OF_LIST_GRID       =
          I_ALV_FORM               =
      endform.

    You missed one paramete in user_command form
    FORM user_command  USING r_ucomm LIKE sy-ucomm
                             rs_selfield TYPE slis_selfield.
    Regards,
    Raymond

  • How to get index of the item from table when user double click on an item

    Can anyone tell me how to get the corresponding index of a table in which
    elements are listed as array of strings? I am looking for the index of the
    item being double-clicked on?
    Thank you in advance
    Cheers,
    NQ.

    Hi NQ,
    Although the question is not thouroughly clear, I can give a few suggestions. You can use the property node for table to refer to any particular row or column of the table. The correpsonding elements in the property node will be "SelStart", "SelSize" etc. Just as a side thought, the index of a table starts with (0,0).
    I am attaching a test file. Please see if it helps you in figuring out what exactly you want. This example VI is just to help you try different options under property node (if you havent already tried)to get what you want.
    Regards,
    Sastry Vadlamani
    Applications Engineer
    National Instruments
    Attachments:
    test.vi ‏27 KB

  • ALV Tree Report--clicking on a row....

    Hello Experts,
    i have a alv tree report.my requirement is,
    "Selecting a row means clicking on record  and then click on a another button called YES ,For other functionality i need to capture the row '.
    How can i solve this  problem.
    Thanks,
    Sridhar.

    hi check this..
    REPORT  z_simpletree.
    type pool declarations for tree
    TYPE-POOLS : fibs,stree.
    *Data declaration for additional node information
    DATA : t_node TYPE snodetext.
    *Internal table and wa decl for nodes
    DATA : it_node LIKE TABLE OF t_node INITIAL SIZE 0,
           wa_node LIKE t_node.
    *Internal table and wa decl for Education table PA0022
    DATA : it_0022 TYPE STANDARD TABLE OF pa0022 INITIAL SIZE 0,
           wa_0022 TYPE pa0022.
    *Internal table and wa decl for text table t517x
    DATA : it_517x TYPE STANDARD TABLE OF t517x INITIAL SIZE 0,
           wa_517x TYPE t517x.
    *Internal table and wa decl for text table t517T
    DATA : it_517t TYPE STANDARD TABLE OF t517t INITIAL SIZE 0,
           wa_517t TYPE t517t.
    *Internal table and wa decl for text table t519T
    DATA : it_519t TYPE STANDARD TABLE OF t519t INITIAL SIZE 0,
           wa_519t TYPE t519t.
    *initialization event
    INITIALIZATION.
    *Start of selection  event
    START-OF-SELECTION.
    *Select the data for tree
      PERFORM fetch_data.
    *Build the hierarchy for tree
      PERFORM build_hierarchy.
    *Build Tree for display
      PERFORM build_tree.
    *&      Form  fetch_data
          text
    -->  p1        text
    <--  p2        text
    FORM fetch_data .
    *select data from PA0022
      SELECT * FROM pa0022 INTO CORRESPONDING FIELDS OF TABLE it_0022
       UP TO 50 ROWS.
    *select data from T517x
      SELECT * FROM t517x INTO CORRESPONDING FIELDS OF TABLE it_517x
       WHERE langu = 'E'.
    *select data from T517T
      SELECT * FROM t517t INTO CORRESPONDING FIELDS OF TABLE it_517t
       WHERE sprsl = 'E'.
    *select data from T519t
      SELECT * FROM t519t INTO CORRESPONDING FIELDS OF TABLE it_519t
       WHERE sprsl = 'E'.
      ENDFORM.                    " fetch_data
    *&      Form  build_hierarchy
          text
    -->  p1        text
    <--  p2        text
    FORM build_hierarchy .
    *Building the nodes and hierarchy for tree
      CLEAR : it_node[],
      wa_node.
      wa_node-type = 'T'.
      wa_node-name = 'Education'.
      wa_node-tlevel = '01'.
      wa_node-nlength = '15'.
      wa_node-color = '4'.
      wa_node-text = 'Infotype 0022'.
      wa_node-tlength ='20'.
      wa_node-tcolor = 3.
      APPEND wa_node TO it_node.
      CLEAR wa_node.
    *Filling the values of internal table into tree
      LOOP AT it_0022 INTO wa_0022.
        wa_node-type = 'P'.
        wa_node-name = 'PERNR'.
        wa_node-tlevel = '02'.
        wa_node-nlength = '8'.
        wa_node-color = '1'.
        wa_node-text = wa_0022-pernr.
        wa_node-tlength ='20'.
        wa_node-tcolor = 4.
        APPEND wa_node TO it_node.
        CLEAR wa_node.
    *Filling the text of T517t
        READ TABLE it_517t INTO wa_517t WITH KEY slart = wa_0022-slart.
        wa_node-type = 'P'.
        wa_node-name = wa_0022-slart.
        wa_node-tlevel = '03'.
        wa_node-nlength = '8'.
        wa_node-color = '1'.
        wa_node-text = wa_517t-stext.
        wa_node-tlength ='40'.
        wa_node-tcolor = 4.
        APPEND wa_node TO it_node.
        CLEAR wa_node.
    *Filling the text of T519t
        READ TABLE it_519t INTO wa_519t WITH KEY slabs = wa_0022-slabs.
        wa_node-type = 'P'.
        wa_node-name = wa_0022-slabs.
        wa_node-tlevel = '04'.
        wa_node-nlength = '8'.
        wa_node-color = '2'.
        wa_node-text = wa_519t-stext.
        wa_node-tlength ='40'.
        wa_node-tcolor = 4.
        APPEND wa_node TO it_node.
        CLEAR wa_node.
    *Filling the text of T517x
        READ TABLE it_517x INTO wa_517x WITH KEY faart = wa_0022-sltp1.
        wa_node-type = 'P'.
        wa_node-name = wa_0022-sltp1.
        wa_node-tlevel = '05'.
        wa_node-nlength = '8'.
        wa_node-color = '1'.
        wa_node-text = wa_517x-ftext.
        wa_node-tlength ='40'.
        wa_node-tcolor = 4.
        APPEND wa_node TO it_node.
        CLEAR wa_node.
        wa_node-type = 'P'.
        wa_node-tlevel = '06'.
        wa_node-nlength = '8'.
        wa_node-color = '1'.
        wa_node-text = '% Completed'.
        wa_node-tlength ='15'.
        wa_node-tcolor = 4.
        APPEND wa_node TO it_node.
        CLEAR wa_node.
        ENDLOOP.
        ENDFORM.                    " build_hierarchy
    *&      Form  build_tree
          text
    -->  p1        text
    <--  p2        text
    FORM build_tree .
    *Fm for constructing the tree
      CALL FUNCTION 'RS_TREE_CONSTRUCT'
        TABLES
         nodetab = it_node.
      IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    *FM for displaying the tree
      CALL FUNCTION 'RS_TREE_LIST_DISPLAY'
        EXPORTING
          callback_program     = sy-repid
          check_duplicate_name = '1'
          color_of_node        = '3'
          color_of_mark        = '3'
          color_of_link        = '1'
          color_of_match       = '5'
          node_length          = 30
          text_length          = 75
          use_control          = 'L'.ENDFORM.                    " build_tree
    regards,
    venkat

  • Double click for JList items selection

    I would like to select JList items only by double clicking on them. I can write a mouse listener for detecting double clicks by my own (and handle it afterwards), by please tell me how to turn the default behavior off (selecting items by clicking one time).
    Thanks in advance
    Marek

    I would like to select JList items only by double clicking on them. Well the standard is to select or highlight on a mouseClick or by using the arrow keys on the keyboard.
    Then once you have a selected item you can perform and Action on the item by double clicking or by using the enter key. Remember you should always be able to use either the keyboard or the mouse to perform any given function.
    This posting shows my solution for the above scenario:
    http://forum.java.sun.com/thread.jspa?forumID=57&threadID=626866

  • ALV OOPS Double-click event

    Hi,
    I want to handle the double-click event in ALV grid (OOPs).
    The output should be shown in the same fashion as it is shown in SE16 when we double-click on any record in the result set.
    i.e. if you have selected the ALV grid display for the Data browser in SE16 and when you double click on any record, the complete record is shown in a window.
    I want this in my ALV as well..
    Can anyone please suggest how to achieve this?
    Regards
    s.a.k

    Hi siemens.a.k ,
    The solution for the issue would be to create a  custom screen and add a custom table controller in a container.
    In this table controller you map the respective fields required for your output
    Now once you are done with data population in the custom controller for ALV grid display using cl_gui_alv_grid_display class...
    create events in your custom class to handle the on click event.
    If you observe the standard functionality it could be clearly seen that sap has created another screen for the display of records in different view.
    You could also replicate the similar thing by creating another screen and populating the required fields into the second screen.
    As of now i am providing this information ...I would even try to simulate the scenario at my system.
    So once i am done i would update you the same...
    Thanks
    M.Naveen Kumar....

  • ALV GRID  - double click event - hot spot event

    Dear developers
    I am building a custom application using ALV GRID (OO method).
    I have three ALV's on the screen.
    User selects a cell on the first ALV from the list. say a specific product group.
    The second ALV displays the product records depnding on selection of first ALV. (this works fine).
    when the user selects a cell of a specific column on ALV grid 2 using double click event or hotspot I am always getting row ID as 1 , irrespective of the user clickin on row 2 or 3 on the specific cell.
    To carry out further processing , I need to get the exact row the user is selecting which I expected to be available in LVC_S_ROID. My further process works always with ROW ID as 1.
    I am using event hot spot in alv grid 1. In grid 2 I tried both hot spot and double click . But both returns the index value of row as 1 , irrespective of the cell being clicked is beyond row 1. in second grid.
    Looking forward for help or suggestion on this,
    Regards
    Kumar

    Hi
    The handler is implemented as follows for all ALV GRIDs.
    I give below only the relevant one grid 2 from my code.
    Class definition
    **03/17/2005 skulist hotspot
    handle_skulist FOR EVENT hotspot_click OF cl_gui_alv_grid
    IMPORTING e_row_id e_column_id es_row_no,
    Class implementation
    **03/17/2005 sku list by currency hotspot on listprice
      METHOD handle_skulist .
        PERFORM handle_skulist USING e_row_id e_column_id es_row_no.
      ENDMETHOD.                    "HANDLE_HOTSPOT_CLICK
    DATA gr_event_handler TYPE REF TO lcl_event_handler.
    DATA gr_event_handler_4 TYPE REF TO lcl_event_handler.
    The above are done in an include and are public in nature.
    Also note that I have similar implementation for similar events for grid 1 bu the event handlers are registered in different names.
    The code below is in the maib program , under a custom container for grid 2
    CREATE OBJECT gr_event_handler_4.
        SET HANDLER gr_event_handler_4->handle_skulist FOR gr_alvgrid1.
    *Based on the user action on grid 2 this form is getting executed. But as I said earlier the parameter I am getting for index is 1 always.
    FORM handle_skulist USING i_row_id1 TYPE lvc_s_row
                                    i_column_id1 TYPE lvc_s_col
                                    is_row_no1 TYPE lvc_s_roid.

  • Double clicking on workflow items does not take release document

    Hi,
    I have configured work flow for PR and PO release ,but in Business work place in SO01 T-Code if I double click on the PR or PO number it is not taking to release document what may be the reason?
    parameter ID WLC is assigned for the user.
    Requesting expert advice.
    Regards
    Kantha

    Can you please check whether the default method gets executed when you try to execute from swo1.
    The default method will be Display.
    Also check for authorization. Please do a SU53 dump when you do not get the screen.
    Thanks
    arghadip

  • Double click in ALV tree output????

    Hi all,
    I am able to display output in tree format. But I want to add the double click functionality to some of the fields in output. Means if I double click on some value in output tree, it should call some transaction. Please help me with this issue of double clicking.
    Please tell how to handle events in this report tree display.
    For the following code its displaying output in tree format and in right way. But i need to add double click functionality to this.
    So provide me some sample program for this one....
    * create hierarchy
      CALL METHOD tree1->set_table_for_first_display
              EXPORTING
                   it_list_commentary   = lt_list_commentary
                   i_background_id      = 'ALV_BACKGROUND'
                   i_save               = 'A'
                   is_variant            = ls_variant
              CHANGING
                   it_sort              = gt_sort[]
                   it_outtab            = itab_outtab
                   it_fieldcatalog      = t_fieldcat. "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.
    In grid ALV we can have double cilck functionality using code:
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
           EXPORTING
                i_callback_program       = w_repid
                i_callback_pf_status_set = 'PF_STATUS'
                i_callback_user_command  = 'USER_COMMAND'
                is_layout                = ls_layout
                it_fieldcat              = gt_fc[]
    Here we can write subroutine for USER_COMMAND and handle the double click evenet. But tell me how to provide this in tree ALV.
    <REMOVED BY MODERATOR>
    Regards,
    Sachin
    Edited by: Alvaro Tejada Galindo on Feb 14, 2008 1:47 PM

    Hello Sachin
    The following sample report ZUS_SDN_ALV_TREE_DEMO demonstrates the crucial parts for double-click event handling (nodes & items) in ALV trees.
    *& Report  ZUS_SDN_ALV_TREE_DEMO
    *& Thread: double click in ALV tree output????
    *& <a class="jive_macro jive_macro_thread" href="" __jive_macro_name="thread" modifiedtitle="true" __default_attr="742412"></a>
    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_outtab.
    INCLUDE TYPE knvv AS data.
    TYPES: nkey       TYPE lvc_nkey.
    TYPES: parent_key TYPE lvc_nkey.
    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.
    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
    ENDCLASS.                    "lcl_eventhandler IMPLEMENTATION
    START-OF-SELECTION.
      PERFORM init_controls.
      gd_repid = syst-repid.
      CALL METHOD go_docking->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 <> 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.
    *&      Module  STATUS_0100  OUTPUT
    *       text
    MODULE status_0100 OUTPUT.
      SET PF-STATUS 'STATUS_0100'.
    *  SET TITLEBAR 'xxx'.
    ENDMODULE.                 " STATUS_0100  OUTPUT
    *&      Module  USER_COMMAND_0100  INPUT
    *       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'.
        WHEN OTHERS.
      ENDCASE.
      CLEAR: gd_okcode.
    ENDMODULE.                 " USER_COMMAND_0100  INPUT
    *&      Form  init_controls
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM init_controls .
    * Create docking container
      CREATE OBJECT go_docking
        EXPORTING
          parent = cl_gui_container=>screen0
          ratio  = 90
        EXCEPTIONS
          OTHERS = 6.
      IF sy-subrc <> 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=>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 <> 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->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->column_optimize.
    ENDFORM.                    " init_controls
    *&      Form  build_hierarchy_header
    *       build hierarchy-header-information
    *      -->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
    *&      Form  BUILD_FIELDCATALOG
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM build_fieldcatalog .
      REFRESH: gt_fcat.
      CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
        EXPORTING
    *     I_BUFFER_ACTIVE              =
          i_structure_name             = 'KNVV'
    *     I_CLIENT_NEVER_DISPLAY       = 'X'
    *     I_BYPASSING_BUFFER           =
    *     I_INTERNAL_TABNAME           =
        CHANGING
          ct_fieldcat                  = gt_fcat
        EXCEPTIONS
          inconsistent_interface       = 1
          program_error                = 2
          OTHERS                       = 3.
      IF sy-subrc <> 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 8.
    ENDFORM.                    " BUILD_FIELDCATALOG
    *&      Form  SET_LAYOUT_AND_VARIANT
    *       text
    *  -->  p1        text
    *  <--  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
    *&      Form  create_hierarchy
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM create_hierarchy .
      DATA: ls_knvv    TYPE sflight,
            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 200 ROWS .                "#EC CI_NOWHERE
      SORT lt_outtab BY kunnr vkorg.
    * add data to tree
      DATA: ld_kunnr_key TYPE lvc_nkey,
            ld_vkorg_key TYPE lvc_nkey,
            ld_last_key  TYPE lvc_nkey.
      LOOP AT lt_outtab INTO ls_outtab.
        ON CHANGE OF ls_outtab-kunnr.
          PERFORM add_customer_line USING    ls_outtab-data
                                  CHANGING ld_kunnr_key.
        ENDON.
        ON CHANGE OF ls_outtab-vkorg.
          PERFORM add_salesorg_line USING    ls_outtab-data
                                             ld_kunnr_key
                                  CHANGING ld_vkorg_key.
        ENDON.
        PERFORM add_complete_line USING  ls_outtab-data
                                         ld_vkorg_key
                                CHANGING ld_last_key.
      ENDLOOP.
    * calculate totals
      CALL METHOD go_tree->update_calculations.
    * this method must be called to send the data to the frontend
      CALL METHOD go_tree->frontend_update.
    ENDFORM.                    " create_hierarchy
    *&      Form  add_customer_line
    *       add hierarchy-level 1 to tree
    *      -->P_LS_SFLIGHT  sflight
    *      -->P_RELEATKEY   relatkey
    *     <-->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->c_hierarchy_column_name.
      ls_item_layout-style   =
                            cl_gui_column_tree=>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->add_node
        EXPORTING
          i_relat_node_key = ud_relat_key
          i_relationship   = cl_gui_column_tree=>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
    *&      Form  add_salesorg_line
    *       add hierarchy-level 1 to tree
    *      -->P_LS_SFLIGHT  sflight
    *      -->P_RELEATKEY   relatkey
    *     <-->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->c_hierarchy_column_name.
      ls_item_layout-style   =
                            cl_gui_column_tree=>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->add_node
        EXPORTING
          i_relat_node_key = ud_relat_key
          i_relationship   = cl_gui_column_tree=>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
    *&      Form  add_cmplete_line
    *       add hierarchy-level 3 to tree
    *      -->P_LS_SFLIGHT  sflight
    *      -->P_RELEATKEY   relatkey
    *     <-->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->c_hierarchy_column_name.
      ls_item_layout-class   = cl_gui_column_tree=>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=>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->add_node
        EXPORTING
          i_relat_node_key = ud_relat_key
          i_relationship   = cl_gui_column_tree=>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
    *&      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_expand_no_children.
      APPEND l_event TO lt_events.
    **  l_event-eventid = cl_gui_column_tree=>eventid_checkbox_change.
    **  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_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_click.
    **  APPEND l_event TO lt_events.
    **  l_event-eventid = cl_gui_column_tree=>eventid_item_keypress.
    **  APPEND l_event TO lt_events.
      l_event-eventid = cl_gui_column_tree=>eventid_node_double_click.
      APPEND l_event TO lt_events.
      l_event-eventid = cl_gui_column_tree=>eventid_item_double_click.
      APPEND l_event TO lt_events.
      CALL METHOD go_tree->set_registered_events
        EXPORTING
          events                    = lt_events
        EXCEPTIONS
          cntl_error                = 1
          cntl_system_error         = 2
          illegal_event_combination = 3.
      IF sy-subrc <> 0.
        MESSAGE x208(00) WITH 'ERROR'.                          "#EC NOTEXT
      ENDIF.
    * set Handler
      set handler:
        lcl_eventhandler=>handle_node_double_click for go_tree,
        lcl_eventhandler=>handle_item_double_click for go_tree.
    **  DATA: l_event_receiver TYPE REF TO lcl_tree_event_receiver.
    **  CREATE OBJECT l_event_receiver.
    **  SET HANDLER l_event_receiver->handle_node_ctmenu_request
    **                                                        FOR tree1.
    **  SET HANDLER l_event_receiver->handle_node_ctmenu_selected
    **                                                        FOR tree1.
    **  SET HANDLER l_event_receiver->handle_item_ctmenu_request
    **                                                        FOR tree1.
    **  SET HANDLER l_event_receiver->handle_item_ctmenu_selected
    **                                                        FOR tree1.
    **  SET HANDLER l_event_receiver->handle_checkbox_change FOR tree1.
    ENDFORM.                               " register_events
    Regards
      Uwe

Maybe you are looking for

  • Does anyone know how to print in color on a pages on Pages on a MacBook Pro?

    I have a project that I need to print out, and I recently just got a MacBook Pro, so I'm not 100% acquainted to Pages. SO PLEASE HELP!!!!

  • C7 Microsoft Apps Update

    As I said earlier I have a problem. I told it to Jampe - a moderator - but his solution didn't solve my issue. The Problem is that I have two new updates for my mobile ""NOKIA C7"" . The first one is Microsoft apps & the other one is social but I can

  • Javax.servlet.ServletException: Cannot create bean of class

    People, HELP!! I am getting desperate!!! I am a newbie when it comes to TOMCAT, but i have been using Blazix before. My current system is using APACHE/TOMCAT on a Solaris machine and I keep hitting the same problem. I have gone through the archives b

  • Gzip is very slow on T5220

    I have one SUN Server as oracle 9i server. Server Model: T5220, 32 Virtual CPUs and 16G memory. I am very disappointe for its IO speed using internal disk. When I import data into DB server , it spend 16Hours. but it only spend 8 hours in SUN V480. A

  • Camera Raw crops my image from left and right

    As you can see in the screen cap, camera raw inside AE opens my timelapse images cropped from left and right. I had this problem before in photoshop too, but never tried to fix it. I'm now in serious trouble and need to find a solution ASAP.