没有合适的资源?快使用搜索试试~ 我知道了~
首页ABAP OOALV学习文档
资源详情
资源评论
资源推荐

一.ALV 概要
首先介绍下什么是 ,在 之前 全称为 ,在其后的版本中,
已经正式更名为 。 是 系统中心的列表标准,可以在 程序中进
行报表输出。除去传统列表的显示和少量交互功能之外, 还提供给系统用户多种其它
丰富的交互功能。
使用 有两种方式,一种为传统的 ,另一种为面向对象的编程,为了有
良好的编程习惯和跟随 技术的发展,在此,强烈推荐使用面向对象的编程来实现
,在此,本文档也是根据此来写的。
下面是一个 的用户界面(系统例子 !"#),可以分为三个
部分:
1. ALV 菜单栏
2. ALV 标题栏
3. ALV 网格控制器
(根据用户需要,可以隐藏 标题栏以及 菜单栏)

1. ALV 菜单栏
细节按钮,你首先必须选中列表中的一行,然后点击它的话,就会弹出一个窗口,显示
选中行的细节内容。(另外:你双击你要选择的行,也可以显示细节)
按升序排列,首先选中一列,然后再点击它,就可以看到该列是按照升序重新排列。
按降序排列,首先选中一列,然后再点击它,就可以看到该列是按照降序重新排列。
设置过滤器,通过设置它可以达到筛选的目的,以列名称作为筛选的筛选标准,填入
过滤器相应的标准值,然后就可以筛选出满足自己条件的记录。
打印预览,点击它之后,就可以预览一下将要打印内容的布局情况。
菜单栏
标题栏
网格控制器

"$%,调用 " 的 % 到当前 的列表显示区域。(前提:必须安装了 "
的 %)
字处理,字处理的相关设置。
本地文件,将当前表单存储到本地机器上,有几种供选择的存储格式。
邮件收件人,给系统内用户发邮件
图形,点击它可以根据表单情况绘制相关图表。
更改布局,点击它可以对表单中的列项目排列次序的互换,删减等。
选择布局,从以及保存的布局中选择自己满意的布局。
保存布局,对于自己满意的布局,可以通过点击它来将布局保存起来。
2.ALV 标题栏
这个区域主要是用来显示一些抬头信息(总揽信息),类似于 &#! 中的页眉。我们
在使用的时候根据需要来进行相关填写。
3.网格控制器
这个区域主要使用来显示我们通过代码写筛选出来的数据,相关的操作在下面的程序
编写部分详细介绍。

二.ALV 起步
网格控制器
ALV GRID CONTROL 使用了控制器技术以实现精美的屏幕显示,像所有的控制器一样,
ALV GRID CONTROL 通过系统中的一个全局类提供的方法,以响应它的动作.
使用了 ABAP 的对象以后,列表是通过 ALV 的一个实例(INSTANCE)来显示的,程序员可
以使用 ABAP 对象的事件管理.
相关的几个控制结构
1. 字段目录 [Field catalog]
字段目录是用来控制 ALV 显示的网格中每个字段的属性的,比如字段的顺序,对齐方式,
可编辑状态,颜色,等等.
参考结构 LVC_S_FCAT
2. 布局控制[layout]
布局是用来控制整个 ALV 的一个布局,比如 ALV 的标题,是否可编辑,行颜色,列颜色.
参照 ALV 的控制结构[LVC_S_LAYO],以后的例子我将详细介绍如何设置行颜色和列
颜色.
3. 打印和排序,过滤控制(不常用,略过)
打印的参数控制请参考结构 [LVC_S_PRNT]
排序的参数控制请参考结构[LVC_S_SORT]
过滤的参数控制请参考结构[LVC_S_FILT]
创建 的必要条件
创建一个 ALV,有两个条件是必须的,布局的话,应该是可以不设置的,使用默认的就可
以了。
1,字段目录
这个是必须的,如果没有这个参数,参考一个数据字典也是可以的,就是参数
I_STRUCTURE_NAME.
2.存放数据的内表
最好内表的结构和字段目录是一致的,否则可能会出现一些无法预知的错误,当然你说
我非要不一样,那也不一定会出现错误.我建议是最好一样的.
简单示例一(例子的实现及各类事件响应都能在 服务器上 中找到,
事物代码 )
面向对象的 ALV GRID 必须存在于一个容器当中,就是 FUNCTION 的 ALV,其实也是一
样的,底层也是使用 CL_GUI_ALV_GRID 这个类的.
第一步:创建个 SCREEN,在屏幕上创建个容器,CONTAINER.定义变量.

!'(
&# ') '*'#+)'#"# ') ,-存放 的容器 &
'*'#+)+)!,- 的网格
+')!''*'',-存放字段目录的内表
+*#''**#-布局结构
.////声明需要显示的内表0以 )+1' 为例2
!'+) #3#4
) !'')+1'
!' !#3
第二步: 创建 ALV 这个对象,它的父组件是那个容器.
在 PBO 中写入如下代码:
PROCESS BEFORE OUTPUT .
MODULE display_alv .
创建 DISPLAY_ALV 的 MODULE 后,写下如下代码:
MODULE display_alv .
在 FORM DISPLAY_ALV 中,判断 ALV 实例是否存在,如果不存在,
否存在,如果不存在,则创建:
IF WCL_ALV IS INITIAL .
CREATE OBJECT: WCL_CONTAINER
EXPORTING
CONTAINER_NAME = 'WCL_CONTAINER'.
CREATE OBJECT WCL_ALV
EXPORTING
I_PARENT = WCL_CONTAINER.
*获取字段目录
PERFORM PREPARE_FIELD_CATALOG CHANGING GT_FIELDCAT .
*获取样式
PERFORM PREPARE_LAYOUT CHANGING GS_LAYOUT .
*获取需要显示的数据
PERFORM GET_DATA TABLES GT_LIST.
./////显示 ///////////////////////////////////////////(详细的用法在最后附录)
"'1#!&/5''#)'!)*
6#') +
.)')7
.)# )' *187
.)'' "7
剩余30页未读,继续阅读


















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0