按层次显示WBS编码及描述,附加节点双击展开事件和Item双击跳转CJ03功能。
因为本人懒,本例代码都是从标准的BCALV_TREE_01和BCALV_TREE_02拷贝过来修改的,结构不好请别见怪。
REPORT zmac_alvtree_test.
DATA: g_alv_tree TYPE REF TO cl_gui_alv_tree,
g_custom_container TYPE REF TO cl_gui_custom_container.
TYPES: BEGIN OF ty_wbs,
posid TYPE prps-posid,
post1 TYPE prps-post1,
stufe TYPE prps-stufe,
END OF ty_wbs.
DATA: gt_wbs TYPE STANDARD TABLE OF ty_wbs,
gs_wbs TYPE ty_wbs.
DATA: ok_code LIKE sy-ucomm,
save_ok LIKE sy-ucomm, "OK-Code
g_max TYPE i VALUE 255.
DATA: gt_fcat TYPE lvc_t_fcat,
gs_fcat TYPE lvc_s_fcat.
*----------------------------------------------------------------------*
* CLASS lcl_tree_event_receiver DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_tree_event_receiver DEFINITION.
PUBLIC SECTION.
METHODS handle_node_double_click
FOR EVENT node_double_click OF cl_gui_alv_tree
IMPORTING node_key sender.
METHODS handle_item_double_click
FOR EVENT item_double_click OF cl_gui_alv_tree
IMPORTING fieldname node_key.
ENDCLASS. "lcl_tree_event_receiver DEFINITION
******************************************************************
CLASS lcl_tree_event_receiver IMPLEMENTATION.
METHOD handle_node_double_click.
DATA: lt_children TYPE lvc_t_nkey.
CALL METHOD sender->get_children
EXPORTING
i_node_key = node_key
IMPORTING
et_children = lt_children.
IF NOT lt_children IS INITIAL.
CALL METHOD sender->expand_node
EXPORTING
i_node_key = node_key
i_level_count = 2.
ENDIF.
ENDMETHOD. "handle_node_double_click
METHOD handle_item_double_click.
DATA: l_value TYPE lvc_value,
l_layi TYPE lvc_t_layi,
l_layn TYPE lvc_s_layn .
CALL METHOD g_alv_tree->get_outtab_line
EXPORTING
i_node_key = node_key
IMPORTING
e_outtab_line = gs_wbs
e_node_text = l_value
et_item_layout = l_layi
es_node_layout = l_layn
EXCEPTIONS
node_not_found = 1
OTHERS = 2.
IF sy-subrc = 0.
SET PARAMETER ID 'PRO' FIELD gs_wbs-posid.
CALL TRANSACTION 'CJ03' AND SKIP FIRST S