【ABAP】ALV Tree demo(WBS元素分层显示)

按层次显示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

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值