ALV类型简介

16 篇文章 0 订阅

•ALV是SAList Viewer的简写,是SAP中常用的经典报表输出格式。

•常用的ALV种类有以下6个:

– ALV Grid

– ALV simple List

– 多表格的ALV List

– 层级显示的ALV List

– ALV Tree

– ALV OO

下面的内容将根据不同的ALV类型分开作简绍。

一、ALV Grid

•ALV Grid是最常用的一种Report输出格式。如图:

 

ALV类型简介(1)•适用范围

–标准功能强大,且外观上可直接用鼠标拖拽栏位的宽度和顺序,一般无特别要求的报表均采用此种格式;

–输出格式与Excel档案相似,当客户要求Download Excel档案时多采用此输出格式;

–ALV GRID每个格只能显示不多于128个字符;

–不能多行显示1条数据。

•实现方式

–1.构建Field catalog表——输出表的表头栏位;

一般采用Function’ REUSE_ALV_FIELDCATALOG_MERGE’ 得到。

–2.设置Field catalog表中各栏位的相关属性,一般需修改显示名称,显示长度,锁定,是否加总,是否显示等。

–3.输出报表:Call Function’ REUSE_ALV_GRID_DISPLAY’.

二、ALV simple List

与ALV Grid相比较,除了表身在显示上的差别外,其他大致相同。

ALV List更接近标准的write list输出。如下图:

 

ALV类型简介(2)•适用范围

–标准功能同Grid大致相同,栏位宽度已最优化显示,但不可直接用鼠标拖拽栏位的顺序,不符合某些用户习惯,故使用范围不如ALV Grid广泛,但当需要翻页时,只能采用List而不能用Grid;

–输出格式write类似,一般用于执行事务后返回消息的显示。

–可以多行显示1条数据;

–只能显示不多于90个字段的表的数据;

–排序的列相同的值不能被合并。

•实现方式

–1.构建Field catalog表——输出表的表头栏位;

与ALV Grid实现方法相同,一般采用Function

’ REUSE_ALV_FIELDCATALOG_MERGE’ 得到。

–2.设置Field catalog表中各栏位的相关属性,一般需修改显示名称,显示长度,锁定,是否加总,是否显示等。

–3.输出报表:Call Function’ REUSE_ALV_LIST_DISPLAY’.

三、多表格的ALV List

•区别于Simple List只有一个表身,该种ALV可在一个画面上显示多个表格。如下图:

 

ALV类型简介(3)•适用范围

–当一个报表包含多个表格时需采用此种输出方式;

–ALV Simple List需要注意的地方此种List同样需要注意。

•实现方式

–1.构建Field catalog表,有几个不同的表要输出就构建几次;

与ALV Grid实现方法相同,一般采用函数’ REUSE_ALV_FIELDCATALOG_MERGE‘,也可以手动构建。

–2.设置Field catalog表中各栏位的相关属性,一般需修改显示名称,显示长度,锁定,是否加总,是否显示等;

–3.初始化屏幕:调用函数‘REUSE_ALV_BLOCK_LIST_INIT’ ;

–4.添加数据:调用函数‘REUSE_ALV_BLOCK_LIST_APPEND’ ,有几个表就要调用几次;

–5.输出报表:调用函数’REUSE_ALV_BLOCK_LIST_DISPLAY’ .

四、层级显示的ALV List

•层级显示的ALV List 在SAP中称为Hierarchical-Sequential List

 

ALV类型简介(4)•适用范围

–这种形式的list,header和item是由相关的字段联系起来的,heade和item数据一对多。当然可以把header和item表分成两个List在同一屏幕显示,但此种List看起来更直观。故当输出的报表数据有header和item的区分时,可以采用此种List。

•实现方式一:Call Method

–1.捆绑header和item表

data: lt_binding type salv_t_hierseq_binding.

data: ls_binding type salv_s_hierseq_binding.

ls_binding-master = (Header和item相关的字段)

ls_binding-slave = (Header和item相关的字段)

append ls_binding to lt_binding.

–2.得到输出表:call method cl_salv_hierseq_table=>factory

exporting

t_binding_level1_level2 = lt_binding

importing

r_hierseq = gr_table —得到的输出表

changing

t_table_level1 = header表

t_table_level2 = item表.

–3.显示报表gr_table->display( ).

•实现方式二:Call Function

–1.构建Header和Item的栏位。

可以调用函数‘REUSE_ALV_FIELDCATALOG_MERGE’,Header和Item的栏位分别构建后再Append到一个表里。也可以手动构建。

–2.显示数据

调用函数‘REUSE_ALV_HIERSEQ_LIST_DISPLAY’,必传参数如下:

EXPORTING

it_fieldcat                           t_fieldcat[]

i_tabname_header            Header名,引号里大写

i_tabname_item                 Item名,引号里大写

is_keyinfo                            关联Header和Item的栏位

TABLES

t_outtab_header                Header表

t_outtab_item                     Item表

五、ALV Tree

•ALVTree可以显示多个层级,每个层级在相同的栏位

名下显示;而之前的层级List只能显示两个层级,而且两个层级之间要有主键去关联,数据显示在不同栏位名下。

 

ALV类型简介(5)•适用范围

–一般在输出BOM等层级结构比较明显的数据时使用;

–ALV Tree每格最多支持128个字符;

–不支持格合并;

–没有数据的过滤功能;

–系统标准不能Download,需要自己写代码;

–只能显示1000个节点;

–只支持flat table,不支持deep table。

•实现方式(简单的Tree结构,在屏幕的PBO事件中处理):

–1.创建並绘制屏幕和容器:

容器可以不手动绘制,直接指定

cl_gui_container=>screen0 ,可全屏显示

–2.构建栏位名:CALLFUNCTION’LVC_FIELDCATALOG_MERGE’

–3.构建sort表,对输出表进行层级设置

–4.实例化对象:CREATEOBJECTcl_gui_alv_tree_simple

–5.输出数据:CALLMETHOD cl_gui_alv_tree_simple

SET_TABLE_FOR_FIRST_DISPLAY

六、ALV OO

•ALV OO是SAP提供的ALV Object Model ,即用面向对象技术对ALV进行封装,提供相应的工具和方式。

 

ALV类型简介(6)•适用范围

OO的方式 功能更强大更灵活。当用普通的ALV Grid解决不了某些事件的处理时,大部分使用ALV OO就可以解决。

•实现方式

–1. 在screen上定义一个custom control area

CREATE OBJECT: obj_wcl_container

EXPORTING container_name = ‘OBJ_WCL_CONTAINER’.

–2. 生成一个CL_GUI_CUSTOM_CONTAINER class 实例,在构造器参数中传入custom area的名称。

CREATE OBJECT obj_wcl_alv

EXPORTING i_parent = obj_wcl_container.

–3. 构建Field catalog:

CALL FUNCTION ‘LVC_FIELDCATALOG_MERGE’

EXPORTING  i_structure_name = 传入Structure

CHANGING   ct_fieldcat= it_fieldcat.

–4. 显示报表:CALL METHOD obj_wcl_alv->set_table_for_first_display

总结:以上是ALV 类型的简单介绍,具体每种类型的ALV详细用法,请参考ALV专题的其他教材(如ALV属性和ALV EVENT等)。


原文:http://scnblogs.techweb.com.cn/liuzhaofeng/archives/34.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值