创建list ALV tree[RS_TREE_LIST_DISPLAY]

ABAP程序中的ALV显示是很常用的一种数据展示手段,除了常规的alv,有时也会用到ALV tree这种有层次结构的展示方式更好的展现数据,下面介绍一个创建list alv tree的方法:

1)用函数RS_TREE_CONSTRUCT构造alv 树的层次结构,

alv tree的节点类型(node type)分两种:T和P,区别如下:区别就是个文件夹的图标。

2017-03-13_20-44-24

2)调用函数RS_TREE_LIST_DISPLAY显示alv tree

完整代码:

用list alv tree来显示采购订单和采购订单行项目。

REPORT ztest_tree_alv.

*Data declaration for additional node information
DATA : gwa_node TYPE snodetext.
*Internal table for nodes
DATA : git_node LIKE TABLE OF gwa_node.
DATA:git_ekko TYPE STANDARD TABLE OF ekko WITH HEADER LINE,
     git_ekpo TYPE STANDARD TABLE OF ekpo WITH HEADER LINE.

CLEAR :  gwa_node.
REFRESH: git_node.

SELECT *
  FROM ekko
  INTO TABLE git_ekko
 UP TO 10 ROWS.

SELECT *
  INTO TABLE git_ekpo
  FROM ekpo
   FOR ALL ENTRIES IN git_ekko
 WHERE ebeln = git_ekko-ebeln.

gwa_node-type = 'T'.                   "第一个
gwa_node-id   = 'FIRST'.
gwa_node-name = '采购'.
gwa_node-tlevel = 1.                   "层次一
gwa_node-nlength = '15'.
gwa_node-color = '4'.
gwa_node-text = '采购订单信息'.
gwa_node-tlength ='20'.
gwa_node-tcolor = 3.
APPEND gwa_node TO git_node.
LOOP AT git_ekko.
  CLEAR gwa_node.
  gwa_node-type = 'P'.
  gwa_node-id   = 'HEAD'.
  gwa_node-name = '采购订单号'.
  gwa_node-tlevel = 2.                  "层次二
  gwa_node-nlength = '8'.
  gwa_node-color = '1'.
  gwa_node-text = git_ekko-ebeln.
  gwa_node-tlength ='20'.
  gwa_node-tcolor = 4.
  APPEND gwa_node TO git_node.
  CLEAR gwa_node.
  LOOP AT git_ekpo where ebeln = git_ekko-ebeln.
    CLEAR gwa_node.
    gwa_node-type = 'P'.
    gwa_node-id   = 'ITEM'.
    gwa_node-name = '行项目'.
    gwa_node-tlevel = 3.                  "层次三
    gwa_node-nlength = '6'.
    gwa_node-color = '1'.
    gwa_node-text = git_ekpo-ebelp.
    gwa_node-tlength ='5'.
    gwa_node-tcolor = 4.
    APPEND gwa_node TO git_node.
    CLEAR gwa_node.
  ENDLOOP.
ENDLOOP.

*Fm for constructing the tree
CALL FUNCTION 'RS_TREE_CONSTRUCT'
  TABLES
    nodetab = git_node.

*FM for displaying the tree
CALL FUNCTION 'RS_TREE_LIST_DISPLAY'
  EXPORTING
    callback_program     = sy-repid
    check_duplicate_name = '1'
    color_of_node        = '4'
    color_of_mark        = '3'
    color_of_link        = '1'
    color_of_match       = '5'
    node_length          = 30
    text_length          = 75
    use_control          = 'L'.

运行结果:

2017-03-13_20-29-10

以上。

原文地址:https://www.cnblogs.com/datie/p/11435532.html