ABAP程序中的ALV显示是很常用的一种数据展示手段,除了常规的alv,有时也会用到ALV tree这种有层次结构的展示方式更好的展现数据,下面介绍一个创建list alv tree的方法:
1)用函数RS_TREE_CONSTRUCT构造alv 树的层次结构,
alv tree的节点类型(node type)分两种:T和P,区别如下:区别就是个文件夹的图标。
2)调用函数RS_TREE_LIST_DISPLAY显示alv tree
完整代码:
用list alv tree来显示采购订单和采购订单行项目。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
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'.
|
运行结果:
以上