ALV TREE学习笔记
在这一篇中将学习一下ALV Tree的使用方法。通过名字可以看出,ALV TREE应该是将ALV与TREE这两者进行组合。
ALV Tree实现原理:创建一个 cl_gui_alv_tree对象,定义一个 treev_hhdr类型的数据,主要用来显示tree的Header信息。调用ALVtree的 SET_TABLE_FOR_FIRST_DISPLAY方法,调用ALV tree的 ADD_NODE方法逐行添加数据。在这里不进行详细描述,直接看代码吧。
*&---------------------------------------------------------------------*
*& Report ZTEST_TREE
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZTEST_TREE.
DATA: g_alv_tree TYPE REF TO cl_gui_alv_tree,
g_customer_container TYPE REF TO cl_gui_custom_container.
DATA: gt_sflight type sflight occurs 0,
ok_code like sy-ucomm,
save_ok like sy-ucomm.
start-of-SELECTION.
set SCREEN 100.
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'MAIN0100'.
* SET TITLEBAR 'xxx'.
IF g_alv_tree is INITIAL.
PERFORM init_tree.
ENDIF.
call method cl_gui_cfw=>flush.
ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100 INPUT.
save_ok = ok_code .
CLEAR ok_code.
CASE save_ok .
WHEN 'EXIT'.
CALL METHOD g_alv_tree->FREE.
leave program.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
*& Form init_tree
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM init_tree .
CREATE OBJECT g_customer_container
EXPORTING
CONTAINER_NAME = 'CUS_CON'
.
CREATE OBJECT g_alv_tree
EXPORTING
PARENT = g_customer_container
NODE_SELECTION_MODE = CL_GUI_COLUMN_TREE=>node_sel_mode_single
ITEM_SELECTION = 'X'
NO_HTML_HEADER = 'X'
.
DATA: g_tree_header type treev_hhdr.
g_tree_header-HEADING = 'Month/Carrier/Date'.
g_tree_header-TOOLTIP = 'Flights in a month'.
g_tree_header-width = 30.
CALL METHOD g_alv_tree->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
I_STRUCTURE_NAME = 'SFLIGHT'
IS_HIERARCHY_HEADER = g_tree_header
CHANGING
IT_OUTTAB = gt_sflight.
perform create_hierarchy.
CALL METHOD g_alv_tree->FRONTEND_UPDATE.
ENDFORM. " init_tree
*&---------------------------------------------------------------------*
*& Form create_hierarchy
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM create_hierarchy .
DATA: ls_sflight type sflight,
lt_sflight type sflight occurs 0,
t_yyyymm(6) TYPE C,
t_carrid LIKE sflight-carrid,
t_yyyymm_last(6) TYPE C,
t_carrid_last LIKE sflight-carrid.
DATA: K_month type lvc_nkey,
K_carrid type lvc_nkey,
K_last TYPE lvc_nkey.
select * from sflight into table lt_sflight up to 150 rows.
SORT lt_sflight by fldate+0(6) carrid fldate+6(2).
LOOP AT lt_sflight INTO ls_sflight.
t_yyyymm = ls_sflight-fldate+0(6).
t_carrid = ls_sflight-carrid.
IF t_yyyymm <> t_yyyymm_last.
t_yyyymm_last = t_yyyymm.
PERFORM AddMonth USING t_yyyymm
CHANGING K_month .
CLEAR t_carrid_last.
ENDIF.
IF t_carrid <> t_carrid_last.
t_carrid_last = t_carrid.
PERFORM AddCarrid USING t_carrid K_month
CHANGING K_carrid.
ENDIF.
PERFORM AddLine USING ls_sflight K_carrid
CHANGING K_last.
ENDLOOP.
ENDFORM. " create_hierarchy
*&---------------------------------------------------------------------*
*& Form AddMonth
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_T_YYYYMM text
* <--P_K_MONTH text
*----------------------------------------------------------------------*
FORM AddMonth USING P_T_YYYYMM TYPE C
CHANGING P_K_MONTH TYPE lvc_nkey.
DATA: g_sflight TYPE sflight,
l_node_text type lvc_value.
l_node_text = P_T_YYYYMM.
CALL METHOD g_alv_tree->ADD_NODE
EXPORTING
I_RELAT_NODE_KEY = ''
I_RELATIONSHIP = cl_gui_column_tree=>relat_last_child
IS_OUTTAB_LINE = g_sflight
* IS_NODE_LAYOUT =
* IT_ITEM_LAYOUT =
I_NODE_TEXT = l_node_text
IMPORTING
E_NEW_NODE_KEY = P_K_MONTH
* EXCEPTIONS
* RELAT_NODE_NOT_FOUND = 1
* NODE_NOT_FOUND = 2
* others = 3
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " AddMonth
*&---------------------------------------------------------------------*
*& Form AddCarrid
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_T_CARRID text
* -->P_K_MONTH text
* <--P_K_CARRID text
*----------------------------------------------------------------------*
FORM AddCarrid USING P_T_CARRID TYPE sflight-carrid
P_K_MONTH TYPE lvc_nkey
CHANGING P_K_CARRID TYPE lvc_nkey.
DATA: g_sflight TYPE sflight,
l_node_text type lvc_value.
l_node_text = P_T_CARRID.
CALL METHOD g_alv_tree->ADD_NODE
EXPORTING
I_RELAT_NODE_KEY = P_K_MONTH
I_RELATIONSHIP = cl_gui_column_tree=>relat_last_child
IS_OUTTAB_LINE = g_sflight
* IS_NODE_LAYOUT =
* IT_ITEM_LAYOUT =
I_NODE_TEXT = l_node_text
IMPORTING
E_NEW_NODE_KEY = P_K_CARRID
* EXCEPTIONS
* RELAT_NODE_NOT_FOUND = 1
* NODE_NOT_FOUND = 2
* others = 3
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " AddCarrid
*&---------------------------------------------------------------------*
*& Form AddLine
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_LS_SFLIGHT text
* -->P_K_CARRID text
* <--P_K_LAST text
*----------------------------------------------------------------------*
FORM AddLine USING P_LS_SFLIGHT TYPE sflight
P_K_CARRID TYPE lvc_nkey
CHANGING P_K_LAST TYPE lvc_nkey.
DATA: l_node_text type lvc_value.
l_node_text = P_LS_SFLIGHT-fldate.
CALL METHOD g_alv_tree->ADD_NODE
EXPORTING
I_RELAT_NODE_KEY = P_K_CARRID
I_RELATIONSHIP = cl_gui_column_tree=>relat_last_child
IS_OUTTAB_LINE = P_LS_SFLIGHT
* IS_NODE_LAYOUT =
* IT_ITEM_LAYOUT =
I_NODE_TEXT = l_node_text
IMPORTING
E_NEW_NODE_KEY = P_K_LAST
* EXCEPTIONS
* RELAT_NODE_NOT_FOUND = 1
* NODE_NOT_FOUND = 2
* others = 3
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " AddLine
ALV TREE学习笔记相关推荐
- Link Cut Tree 学习笔记
Link Cut Tree 学习笔记 说在前边 最近补 CF 碰见一道 LCT ,就打算学习一下这个东西...顺便复习一下 splay. 具体算法及实现 参考了FlashHu, Candy? P369 ...
- K-D Tree 学习笔记
K-D Tree 学习笔记 最近看了一下k-NN然后它说如果特征空间维数比较低的时候用K-D Tree来求k近邻比较快所以就来补一下学OI时没学的K-D Tree假装写一个学习笔记吧. 是什么? 是一 ...
- Retrieval based on EI tree学习笔记
Retrieval based on EI tree 针对于图像检索中替换属性的问题,属性的表示贯穿训练始终,但是属性之间的关系却没有被利用好.本文使用了EI-tree的结构,表示属性间的关系. 1. ...
- Decision Tree学习笔记(基础篇)
写在前面,博客仅供个人学习所用,不得商用.有问题请评论,我也是初学者,大家共同进步. 参考链接:决策树的一些基本概念以及实现原理 决策树python调用 决策树实现代码python 基本概念 决策树的 ...
- LSM Tree 学习笔记——MemTable通常用 SkipList 来实现
最近发现很多数据库都使用了 LSM Tree 的存储模型,包括 LevelDB,HBase,Google BigTable,Cassandra,InfluxDB 等.之前还没有留意这么设计的原因,最近 ...
- ALV GRID学习笔记----Double Click事件
10月底的时候进行了BC412课程的培训,课后自己做了一些实验,从今天开始就将这些实验记录下来,以便于以后需要使用的时候能够查询一下!(很遗憾的是公司组织了很多的培训,但是在实际工作中很少能够运到,所 ...
- K-D Tree学习笔记
引入 K-D Tree 是一种处理高维空间的数据结构. 支持O(nk−1k)O(n^{\frac {k-1}k})O(nkk−1)查询给定超矩形内的点的信息, kkk 为维数. 可以用替罪羊树的思想 ...
- Link/Cut Tree学习笔记
最近正是实验课的高峰期,我数了一下,除了毛概没有实验课,其他的课都有实验课...不过好在这些实验都不是很难.我尽力挤出时间用来刷题. 简介 Link/Cut Tree和树链剖分很相似,二者处理的问题也 ...
- Link Cut Tree学习笔记
捋一下思路 模板题:https://www.luogu.org/problemnew/show/P3690 推荐LCT的教程,个人认为很详细,本文做了部分引用:https://www.luogu.or ...
最新文章
- LIbGDX 示例Tests详解一:AccelerometerTest
- shell 练习(13) —— 监控 httpd 进程数是否异常
- vue-cli2、vue-cli3脚手架详细讲解
- java web tcp长连接超时时间_常用java web容器http长连接超时设置
- linux-vim-文本编辑
- 本地、服务器文件互传命令
- nacl溶解度_运用溶解度曲线判断混合物分离、提纯的方法
- 2013.01.16 Python的面向对象编程
- 机械系统传动创新组合设计实验台,QY-JXSX08
- DoTween动画系统
- 微软招 HR 了!看来是招聘需求太旺盛,忙不过来了
- mac小白怎么下载网页视频?
- 从共享征信黑名单开始:LinkEye想打造基于区块链的征信联盟
- 阿里巴巴JAVA代码规范二【Major】
- FastDFS清空数据及文件步骤
- 顺时针打印矩阵(编程题讲解)
- STM32G4外设之GPIO
- jdk和jre(jdk和jre的关系)
- 卡罗林斯卡医学院计算机方向,卡罗林斯卡医学院:全球卫生专业受学生欢迎
- 什么叫克隆人_什么叫克隆人?克隆技术有什么好处,快来涨姿