Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

ALV Tree - Event Handler

Former Member
0 Likes
1,753

Hi All,

I amd currently developing an ALV tree program to capture the hierarchy of functional location. I managed to display the hierarchy in ALV Tree using cl_gui_column_tree.

Now, i am working on double clicking the functional location and it will bring me to tcode IL03. But, it seems like i cannot capture of the field value clicked. Below are my source code. Can anyone pls help me on this? Thank you very much

&----


*& 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.

CALL METHOD gd_tree->get_registered_events

IMPORTING

events = lt_events.

l_event-eventid = cl_gui_column_tree=>eventid_item_double_click.

l_event-appl_event = 'X'.

APPEND l_event TO lt_events.

CALL METHOD gd_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'.

ENDIF.

  • Set Handler

DATA: l_event_receiver TYPE REF TO lcl_tree_event_receiver.

CREATE OBJECT l_event_receiver.

SET HANDLER l_event_receiver->handle_item_double_click FOR gd_tree.

ENDFORM. " register_events

CLASS lcl_tree_event_receiver DEFINITION.

PUBLIC SECTION.

METHODS handle_item_double_click

FOR EVENT item_double_click OF cl_gui_alv_tree

IMPORTING node_key

fieldname.

ENDCLASS. "lcl_tree_event_receiver DEFINITION

CLASS lcl_tree_event_receiver IMPLEMENTATION.

METHOD handle_item_double_click.

DATA: lt_selected_nodes TYPE lvc_nkey,

lt_fieldname TYPE lvc_fname.

  • Determine which line is selected

CALL METHOD gd_tree->get_selected_item

IMPORTING

e_selected_node = lt_selected_nodes

e_fieldname = lt_fieldname.

CALL METHOD cl_gui_cfw=>flush.

SET PARAMETER ID 'IFL' FIELD lt_fieldname.

SET PARAMETER ID 'ISR' FIELD 'MOB01'.

CALL TRANSACTION 'IL03' AND SKIP FIRST SCREEN.

ENDMETHOD. "handle_item_double_click

ENDCLASS. "lcl_tree_event_receiver IMPLEMENTATION

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
818

One of the parameters of the event double click is the node_key (IMPORTING node_key), so i guess you should be able to read the data and figure what row has been clicked, right?

Using that you should be able to navigate to IL03.

Regards,

Ravi

Note - Please mark all the helpful answers

3 REPLIES 3
Read only

Former Member
0 Likes
819

One of the parameters of the event double click is the node_key (IMPORTING node_key), so i guess you should be able to read the data and figure what row has been clicked, right?

Using that you should be able to navigate to IL03.

Regards,

Ravi

Note - Please mark all the helpful answers

Read only

uwe_schieferstein
Active Contributor
0 Likes
818

Hello Goh

Based on your coding you are using CL_GUI_ALV_TREE instead of CL_GUI_COLUMN_TREE.

Calling method get_selected_item within your event handler method is unnecessary because these data are already provided by the event interface.

[code]METHOD handle_item_double_click.

DATA: lt_selected_nodes TYPE lvc_nkey,

lt_fieldname TYPE lvc_fname.

*$Comment: unnecessary because these data are already provided

  • by the event interface (IMPORTING nodekey fieldname).

      • Determine which line is selected

**CALL METHOD gd_tree->get_selected_item

**IMPORTING

**e_selected_node = lt_selected_nodes

**e_fieldname = lt_fieldname.

...

ENDMETHOD. "handle_item_double_click[/code]

The following sample is based in report BCALV_TREE_04 but can be simply applied to your application:

[code] METHOD handle_item_double_click.

  • define local data

DATA:

ls_outtab TYPE sflight.

FIELD-SYMBOLS:

<ld_fld> TYPE ANY.

  • Call this method to get the values of the selected tree line

CALL METHOD g_alv_tree->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 <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ASSIGN COMPONENT fieldname OF STRUCTURE ls_outtab TO <ld_fld>.

IF ( <ld_fld> IS ASSIGNED ).

  • ... Call transaction with selected (item) value.

ENDIF.

ENDMETHOD. "handle_item_double_click[/code]

The ASSIGN statement will work if no item of the hierarchy part is selected.

Regards

Uwe

Read only

Former Member
0 Likes
818

Thanks for all your help