WDA基础五:ALV组件的使用
说明,因为ALV的功能比TABLE强大,所以在很多时候都习惯性的选择ALV显示。
ALV是WDA的组件,封装好的,和SELECT OPTION一样。所以使用的方法一般就是:引入组件,初始化组件,数据绑定,数据显示。。。
1.
1.1程序组件引入ALV组件:

在程序组件中引入ALV组件,命名为ALV。
1.2视图引入组件中集成的ALV对象
视图Properties页签中引入ALV对象

2.初始化ALV
视图method页签中新建方法

将INIT_ALV方法加入到WDDOINIT
INIT_ALV( ).
INIT_ALV添加初始化代码:
METHOD INIT_ALV .
DATA: LR_SALV_WD_TABLE_USAGE TYPE REF TO IF_WD_COMPONENT_USAGE.
DATA: LR_TABLE_SETTINGS TYPE REF TO IF_SALV_WD_TABLE_SETTINGS.
DATA: LR_SALV_WD_TABLE TYPE REF TO IWCI_SALV_WD_TABLE.
LR_SALV_WD_TABLE_USAGE = WD_THIS->WD_CPUSE_ALV( ).
IF LR_SALV_WD_TABLE_USAGE->HAS_ACTIVE_COMPONENT( ) IS INITIAL.
LR_SALV_WD_TABLE_USAGE->CREATE_COMPONENT( ).
ENDIF. LR_SALV_WD_TABLE = WD_THIS->WD_CPIFC_ALV( ).
WD_THIS->ALV_CONFIG_TABLE = LR_SALV_WD_TABLE->GET_MODEL( ). LR_TABLE_SETTINGS ?= WD_THIS->ALV_CONFIG_TABLE.
LR_TABLE_SETTINGS->SET_VISIBLE_ROW_COUNT( '' )."设置可见行
LR_TABLE_SETTINGS->SET_ROW_SELECTABLE( ABAP_TRUE )."设置行选择
LR_TABLE_SETTINGS->SET_WIDTH( '50%' )."设置ALV宽度
LR_TABLE_SETTINGS->SET_EDIT_MODE( IF_SALV_WD_C_TABLE_SETTINGS=>EDIT_MODE )."设置编辑模式
* LR_TABLE_SETTINGS->SET_EDIT_MODE( IF_SALV_WD_C_TABLE_SETTINGS=>EDIT_MODE_STANDARD )."设置不可编辑模式
LR_TABLE_SETTINGS->SET_READ_ONLY( ABAP_FALSE )."设置ALV整体不可编辑
LR_TABLE_SETTINGS->SET_SCROLLABLE_COL_COUNT( '' )."设置滚动条
LR_TABLE_SETTINGS->SET_ENABLED( ABAP_TRUE ) ."可处理的
LR_TABLE_SETTINGS->SET_EMPTY_TABLE_TEXT( 'Empty' ) ."设置空表时显示的文本
LR_TABLE_SETTINGS->SET_FIXED_TABLE_LAYOUT( ABAP_FALSE ). "使列宽可自动调节
LR_TABLE_SETTINGS->SET_DISPLAY_EMPTY_ROWS( ABAP_FALSE ). "不展示空表 *---->ALV COLUMN CONFIGURE
DATA:
LR_COLUMN_SETTINGS TYPE REF TO IF_SALV_WD_COLUMN_SETTINGS,
LR_COLUMN TYPE REF TO CL_SALV_WD_COLUMN,
LR_COLUMN_HEADER TYPE REF TO CL_SALV_WD_COLUMN_HEADER. LR_COLUMN_SETTINGS ?= WD_THIS->ALV_CONFIG_TABLE. "排除不显示的字段
* LR_COLUMN = LR_COLUMN_SETTINGS->GET_COLUMN( 'PROCESS_TYPE' ).
* LR_COLUMN->SET_VISIBLE( IF_WDL_CORE=>VISIBILITY_NONE ).
*
* LR_COLUMN = LR_COLUMN_SETTINGS->GET_COLUMN( 'RETAILER_PARTNER' ).
* LR_COLUMN->SET_VISIBLE( IF_WDL_CORE=>VISIBILITY_NONE ). "设置字段属性(下拉,按钮等)
LR_COLUMN = LR_COLUMN_SETTINGS->GET_COLUMN( 'ZRENO' ).
LR_COLUMN_HEADER = LR_COLUMN->GET_HEADER( ).
LR_COLUMN_HEADER = LR_COLUMN->DELETE_HEADER( ).
LR_COLUMN_HEADER = LR_COLUMN->CREATE_HEADER( ).
* LR_COLUMN_HEADER->SET_TEXT( CL_WD_UTILITIES=>GET_OTR_TEXT_BY_ALIAS( 'ZCRM/SORG' ) ).
LR_COLUMN_HEADER->SET_TEXT( 'TEST NO.' ).
"此处使用INPUT_FIELD 是为了展示前面设置的可编辑属性(默认都是text,不可编辑,所以有要编辑的列,需要这里设置一下)
DATA: LR_INPUT_FIELD TYPE REF TO CL_SALV_WD_UIE_INPUT_FIELD.
CREATE OBJECT LR_INPUT_FIELD
EXPORTING
VALUE_FIELDNAME = 'ZRENO'."此ID要与COLUMN对应,或者用GET_COLUMNS,然后循环处理列属性 LR_COLUMN->SET_CELL_EDITOR( LR_INPUT_FIELD ). "设置ALV按钮排除
WD_THIS->ALV_CONFIG_TABLE->IF_SALV_WD_FUNCTION_SETTINGS~DELETE_FUNCTION( ID = 'SALV_WD_PDF' ).
WD_THIS->ALV_CONFIG_TABLE->IF_SALV_WD_FUNCTION_SETTINGS~DELETE_FUNCTION( ID = 'SALV_WD_VIEW_LOAD' ).
WD_THIS->ALV_CONFIG_TABLE->IF_SALV_WD_FUNCTION_SETTINGS~DELETE_FUNCTION( ID = 'SALV_WD_INPUT_APPEND_ROW' ).
WD_THIS->ALV_CONFIG_TABLE->IF_SALV_WD_FUNCTION_SETTINGS~DELETE_FUNCTION( ID = 'SALV_WD_INPUT_INSERT_ROW' ).
WD_THIS->ALV_CONFIG_TABLE->IF_SALV_WD_FUNCTION_SETTINGS~DELETE_FUNCTION( ID = 'SALV_WD_INPUT_DELETE' ).
WD_THIS->ALV_CONFIG_TABLE->IF_SALV_WD_FUNCTION_SETTINGS~DELETE_FUNCTION( ID = 'SALV_WD_INPUT_CHECK' ).
ENDMETHOD.
3.COMPONENTCONTROLLER中创建全局节点(之前创建的节点是在视图中,现在ALV需要绑定数据)

与前面的创建相同
在ALV组件中绑定数据到ALV

绑定成功后,DATA变成双向箭头
在视图中,绑定ITEM节点到COMPONENTCONTROLLER的节点,同上
(注,如果ALV数据只在单个VIEW里使用可以在VIEW中,将ITEM节点绑定到ALV的DATA节点)
4.ALV控制器创建,并在窗口中添加
为了程序效果,这里会将原有的TABLE保留,并将ALV放到TABLE下面
在LAYOUT中创建ViewContainerUIElement容器,放在TABLE后面

此时窗口显示
在窗口的ALV上,右键->嵌套视图 如下:

待嵌套的视图,F4:如下图

选择ALV table
激活所有对象。右键程序测试

WDA基础五:ALV组件的使用的更多相关文章
- WDA基础十四:ALV字段属性配置表
ALV配置表管理 一.字段属性配置表 对于可编辑的ALV不用这个,尽可能多的设置一些控制: 单元格类型:默认A,特殊选择 ZLYE_TYPE E A 1 ...
- Bootstrap <基础五>表格
Bootstrap 提供了一个清晰的创建表格的布局.下表列出了 Bootstrap 支持的一些表格元素: 标签 描述 <table> 为表格添加基础样式. <thead> 表格 ...
- C#基础之类、组件和命名空间(二)
一.实例化对象 Student s; 首先是在栈中开辟一块空间叫s,s里面的内容是空: s = new Student(); 在堆实例化Student对象,将对象的引用地址保存到栈s里.因此,s指向S ...
- Bootstrap入门(十五)组件9:面板组件
Bootstrap入门(十五)组件9:面板组件 虽然不总是必须,但是某些时候你可能需要将某些 DOM 内容放到一个盒子里.对于这种情况,可以试试面板组件. 1.基本实例 2.带标题的面板 3.情景效果 ...
- C#_02.14_基础五_.NET类
C#_02.14_基础五_.NET类 一.类实例: 我们前面说过类是一个模板,我们通过类创建一个又一个的实例,通常情况下类当中的变量是每一个实例都各有一份的,互相不影响,而静态字段是除外的,静态字段是 ...
- Hadoop基础-Hdfs各个组件的运行原理介绍
Hadoop基础-Hdfs各个组件的运行原理介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.NameNode工作原理(默认端口号:50070) 1>.什么是NameN ...
- react基础用法二(组件渲染)
react基础用法二(组件渲染) 如图所示组件可以是函数 格式:function 方法名(){ return <标签>内容</标签>} 渲染格式: <方法名 /> ...
- 2.基础:Vue组件的核心概念
一.组件基础和注册 组件概念 组件系统是 Vue 的另一个重要概念,他的核心就是封装和复用. 细节 组件的name必须是全局唯一. 二.属性.事件和插槽 组件的三大核心概念:属性.事件和插槽. 属性, ...
- Vue – 基础学习(2):组件间 通信及参数传递
Vue – 基础学习(2):组件间 通信及参数传递
随机推荐
- Qt button和buttons区别
假设我的鼠标左键已经按下.若移动鼠标,会发生的move事件,button返回Qt::NoButton,buttons返回LeftButton.再按下右键,会发生press事件,button返回Righ ...
- ActiveReports 大数据分析报告:公交车司乘冲突引发的刑事案件
公交车司乘冲突刑事案件总体情况 公交车司乘冲突引发的刑事案件总量稳中有升 (注:本报告界定的“公交车司乘冲突刑事案件”,是指案件诱因为公交车司机与乘客在乘车过程中发生冲突而引发的刑事案件.包括但不限于 ...
- Jenkins-job迁移
摘自:http://www.cnblogs.com/topplay/p/3899330.html Jenkins迁移job 说明:从一个Jenkins服务器A将现有job迁移到另外一个Jenkins服 ...
- 【译】第38节---EF6-基于代码的配置
原文:http://www.entityframeworktutorial.net/entityframework6/code-based-configuration.aspx EF6引入了基于代码的 ...
- HDU 5575 Discover Water Tank(左偏树)
https://vjudge.net/problem/HDU-5575 题意: 有一个水箱,被n-1块板子分成了n个部分,板子的高度不尽相同.现在有m次探测,每次探测在第x部分的y+0.5高度处是否有 ...
- 次短路——Dijkstra
传送门 ——在LYC大佬的帮助下过了这道题 思路: LYC大佬的博客里已经讲得很清晰了,我只是提一下要点. 求次短路,主要考虑两个方面: ①在不重复走一条路的前提下,把最短路的其中一段替换为另一段. ...
- mysql基本知识总结
第一天 create database act_web character set utf8; : 创建数据库并设立编码(命令中是不允许使用“-”的) '; :创建用户并设立密码 grant all ...
- log4net配置使用
1.配置文件 app.config <?xml version="1.0" encoding="utf-8" ?> <configuratio ...
- [转]pugixml使用教程
转自:https://www.cnblogs.com/ltm5180/p/3989125.html pugixml介绍 pugixml是一个高性能.轻量级并且简单易用的xml解析库,支持UTF8 en ...
- [转]VS中的路径宏 OutDir、ProjectDir、SolutionDir各种路径含义
转自 http://blog.csdn.net/restraint/article/details/39934401 说明 $(RemoteMachine) 设置为“调试”属性页上“远程计算机”属性的 ...