ALV 在 WD4A中使用指南read.pudn.com/downloads570/doc/2342948/ALV For WebDynpro.pdf ·...

39
ALV ALV ALV ALV WD4A WD4A WD4A WD4A 中使用指南 一、ALV 简介 ALV 是一个用来显示列表和结构化数据的工具。它提供标准功能的一般列表操作,以 及用户特殊功能的增强。 ALV 是一个 WD 组件,可以和你的应用结合在一起。 ALV 组件 SALV_WD_TABLE 是一个可配置的 WD 组件,它用来在表格中显示数据它包括一个可配置模型(ALV configuration model ),该模型让你可以决定它的显示状态,功 能和运行时行为,以及标准 ALV 显示。 对于用户来说,ALV 标准的输出包括有:toolbar title table概况 个性化选项的变量是能够让用户保存在一个个性化的页面中。 例如,下面的功能可以使用 ALV 的配置: 过滤; 多列的排序; 计算字段和小计; 显示水晶报表; 配置打印成 PDF 格式; 导出数据到 Excel 结构化显示表; 当开发者把 ALV 应用到你自己的应用中,你可以既可以事先进行设置,也可用 ALV 配置模型(Cinfiguration Model) 。当使用 ALV 配置模型的时候,你可以决定哪些标准功能提 供给用户,以及这些配置的初始化。具体的使用将在后面的章节详细讲述。 你也有许多的 ALV 配置点,比如: 设计 ALV 的显示和行为。你可以用不同的 cell editors,定义背景色和 size 等。 实现拖拽功能 允许用户改变数据和配置

Transcript of ALV 在 WD4A中使用指南read.pudn.com/downloads570/doc/2342948/ALV For WebDynpro.pdf ·...

Page 1: ALV 在 WD4A中使用指南read.pudn.com/downloads570/doc/2342948/ALV For WebDynpro.pdf · 2013-08-30 · 你用 column settings 管理所有的列对象。 Field 设置 (IF_SALV_WD_FIELD_SETTINGS

ALVALVALVALV 在 WD4AWD4AWD4AWD4A中使用指南

一、ALV简介

ALV是一个用来显示列表和结构化数据的工具。它提供标准功能的一般列表操作,以

及用户特殊功能的增强。

ALV是一个 WD 组件,可以和你的应用结合在一起。

ALV组件 SALV_WD_TABLE 是一个可配置的WD 组件,它用来在表格中显示数据。

它包括一个可配置模型(ALV configuration model),该模型让你可以决定它的显示状态,功

能和运行时行为,以及标准 ALV显示。

对于用户来说,ALV标准的输出包括有:toolbar,title和 table。

� 概况

个性化选项的变量是能够让用户保存在一个个性化的页面中。

例如,下面的功能可以使用 ALV的配置:

过滤;

多列的排序;

计算字段和小计;

显示水晶报表;

配置打印成 PDF 格式;

导出数据到 Excel;结构化显示表;

当开发者把 ALV应用到你自己的应用中,你可以既可以事先进行设置,也可用 ALV的

配置模型(Cinfiguration Model)。当使用 ALV配置模型的时候,你可以决定哪些标准功能提

供给用户,以及这些配置的初始化。具体的使用将在后面的章节详细讲述。

你也有许多的 ALV配置点,比如:

设计 ALV的显示和行为。你可以用不同的 cell editors,定义背景色和 size 等。

实现拖拽功能

� 允许用户改变数据和配置

Page 2: ALV 在 WD4A中使用指南read.pudn.com/downloads570/doc/2342948/ALV For WebDynpro.pdf · 2013-08-30 · 你用 column settings 管理所有的列对象。 Field 设置 (IF_SALV_WD_FIELD_SETTINGS

设计特殊的空间在表的上面或者下面,可以有不同的格式显示或者表格的汇总

提供用户特殊的功能在 tool bar上� 过程:将 ALV添加到你的应用中

你执行如下的步骤可以将 ALV加入到你的应用中:

1、在你的 WD 组件中定义一个 ALV的引用(SALV_WD_TABLE)。2、映射你的 context node 数据到 ALV控件上。

3、用一个 VIEW包括 ALV控件

� 用 ALV配置模型动态配置

如果你想改变标准的设置或者功能的实现,你必须包括有 ALV Configuration Model

二、在你的 WD 中使用 ALVALV能够让你的引用和它很好的结合在一起,就像其他的 WD 组件一样,你只需要很

少的几步就可以完成。

先决条件:

� 你可以创建你的WD 组件,并且使它 active� 你可以创建 context node ,并且设置 cardinality为 0..n 的模式。

过程:

� 定义一个组件的引用,以至于你能够使用 ALV� 你要MAP 你的 context node数据到 ALV上

� 你 embed ALV组件到你的 VIEW中

2.1、定义 ALV的引用

为了使用 ALV 在你的应用中,使用组件 SALV_WD_TABLE,你要包括 ALV 到你的

WD 组件中。就是定义个引用组件。

ALV组件提供 interface controller SALV_WD_TABLE,你能够使用如下:

� MAP 你的 context node 数据到 ALV组件

� 使用 interface controller SALV_WD_TABLE提供的方法和事件。

� 访问 ALV的配置模型

步骤:(略)

结果:

2..2、向 ALV数据提供数据

为了向显示数据的ALV提供数据,你必须连接你的 context node和ALV的DATA contextnode ,这个使用 external context mapping.

在 ALV的 context 中,这个 context node DATA仅仅包含一个引用,引用到你的应用的

context。然后在转而引用到一个内表。

默认的情况下,ALV使用你引用的数据。过滤,计算以及其他的 ALV功能,ALV的显

示等由 ALV各种不同的执行机制,

重要规则:排序

ALV必须有一个实体的数据集(dataset),这样才能排序。因此,ALV组件临时控制内

Page 3: ALV 在 WD4A中使用指南read.pudn.com/downloads570/doc/2342948/ALV For WebDynpro.pdf · 2013-08-30 · 你用 column settings 管理所有的列对象。 Field 设置 (IF_SALV_WD_FIELD_SETTINGS

表数据,在此期间,你的 context data 无效。要确保 ALV控件在编辑内表的时候,应用程序

不能访问 context。一旦内表被排序,ALV就重新建立了 context node,释放它给应用程序,显示新的数据。

这样做的好处是内表 没有被 copy过。主要的原因是大量的数据对执行效率和内存空间

的影响。

当你在做应用的时候,下面的机制需要考虑:

� 当你的 context node 无效的时候,当前选择的信息,以及 lead selection 将被丢失。

� 如果你的应用已经创建了子节点为 context node(主从),在 ALV 使 context node无效的时候,子节点立即丢失。此刻如果应用访问子节点,将有一个运行时错误。

先决条件:

为 ALV包括的 context node 数据必须有如下条件:

1、它的 cardinality 0..n。2、它仅仅包括属性,而没有子节点:对内表的每一列,你创建一个同名的属性和数据

类型。

3、所有的属性都是静态的,不能是动态的。

4、内表数据必须是存在的平面结构。最简单的方法是用存在的 DDIC结构。

步骤:

1、在WD 导航中打开:component usages->my_alv_comp_usage->interfaceontroller_usage

2、选择你的组件控制器

3、MAP 你的 context node 和 ALV控件。

Set_data 方法:

另外一个包数据传输到 ALV 控件的方法是用 set_data 方法。你可以把你引用的当前

context node 当成一个参数。用这种方法,你能够让你的 ALV使用另外一种结构。

� 注意:

用 set_data 方法总是删除掉已经存在的 alv 配置模型。

2.3、ALV嵌入的 VIEWSALV组件包括下面的 views:

� TABLE这是 ALV的主要 VIEW。主要用来显示 ALV.。这个 TABLE VIEW是一个容器,用来显示 ALV。它是 ALV 的基本部分,因此,你不

能改变它的 LAYOUT。� SERVICE

这个 VIEW包括设置的对话框,如用户改变列的显示,排序,过滤等。

默认的,这个 VIEW显示在 ALV的上面,用户在 TOOLBAR 上面的链接来设置。你可

以使用这个 VIEW当你想在同一个 window 中显示在另外一个位置。(更多的信息看后面相

Page 4: ALV 在 WD4A中使用指南read.pudn.com/downloads570/doc/2342948/ALV For WebDynpro.pdf · 2013-08-30 · 你用 column settings 管理所有的列对象。 Field 设置 (IF_SALV_WD_FIELD_SETTINGS

关章节)

� CONTROL_VIEW你不能使用这个 view,它仅仅是 SAP 使用的。

步骤:(略)

三、用 ALV configuration Model 动态配置 ALV如果在你的WD 应用中使用 ALV,你能够使用 SAP 的 ALV配置模型的全部功能。

先决条件:

为了使用 ALV的配置模型,你必须在你的WD 应用中包括 ALV组件。

如果你想在 view 控件或者组件控件访问模型,你必须实现相应的方法。

步骤:

1、得到 ALV配置模型

3.1、ALV configuration Model 对象

下图是 ALV配置模型的所有 CLASS 和 INTERFACE.

这个类图式被简化了的。你可以在 包 SALV_WD_CONFIG 找到完全的结构。

下面是可以配置 ALV的主要地方:

� TABLE 设置 ( IF_SALV_WD_TABLE_SETTINGS)对于 TABLE 这个 UI元素来说,数据不仅包括有应用的结构化数据,还包括有 ALV显

示的显示方式和功能等技术范畴。比如,你可以把 ALV显示简单的数据,二维表或者有层

次的列(笔者注:就像在 ALV中显示树形结构)。

� Column 设置 ( IF_SALV_WD_COLUMNS_SETTINGS )

Page 5: ALV 在 WD4A中使用指南read.pudn.com/downloads570/doc/2342948/ALV For WebDynpro.pdf · 2013-08-30 · 你用 column settings 管理所有的列对象。 Field 设置 (IF_SALV_WD_FIELD_SETTINGS

Column 对象是在 ALV中定义的可见元素。列和在 context node 中的属性或者字段对象

有同样的名字。列对象的包括设置同名的字段在 ALV中怎么样显示数据。如果你不想显示

该字段的值,你可以删除相应的列对象。

你用 column settings 管理所有的列对象。

� Field 设置( IF_SALV_WD_FIELD_SETTINGS )Field 描述在 ALV使用的数据。Filed的名字和 context node 中的属性的名字匹配:所有

的 filed 对象是被自动创建的在你为 context node 构建属性的时候。结果,在 context node 中的每个属性有一个同名的代理在 ALV Configuration Model。

� ALV标准功能设置(IF_SALV_WD_STD_FUNCTIONS )ALV提供一系列的功能。下面列出 ALV主要的功能:

� ALV服务:排序,过滤,平均(总计),以及其他的的设置;

� 设置可编辑的 ALV:比如插入,删除操作;

� 导出 ALV数据到 excel或者 PDF.所有这些功能都有对应的 UI元素显示。你可以用标准功能设置来显示或者隐藏这些 UI元素。

� 设置特殊应用功能(IF_SALV_WD_FUNCTION_SETTINGS)你可以定义许多在你的应用中想要的功能,以及提供合适的 UI元素提供给用户使用。

3.2、得到 ALV configuration Model 对象

为了能够使用ALV的配置模型,你可以在WDDOINIT中从类 IWCI_SALV_WD_TABLE中使用适当的方法得到。

� GET_MODEL你得到完整的 ALV配置模型包括有:所有的 column objects 和 field objects。该方法没

有参数。

� GET_MODEL_EXTENDED就像上面一样,系统返回所有的 field objects,但是仅仅返回需要的 column objects。比

如,你想关了一个有大量 field 的数据,但是你只想显示很少的几列数据,首先创建 filed 对

象,然后再需要显示内容的时候在生成 column 对象。

该方法参数 s_param 包括有字段 DEFAULT_COLUMNS。这能够让你决定这个 column是否被创建。

备注:

你可以在 ALV显示的后阶段指定一个新的内表数据。可以用接口控件的 set_data 方法

做到这点。然后,你用这个方法后,ALV将自动删除所有的 filed 和 column 对象的 ALV配

置模型。为了能够再次使用配置模型在新数据上面,可以使用方法 GET_MODEL 或者

GET_MODEL_EXTENDED。

步骤:

为了能够使用 ALV配置模型,你必须明确的初始化 ALV组件

1、在一个合适的点写上你的代码(如:WDDONIIT)2、对需要的 ALV组件编程(用代码向导可以自动完成如下代码)

DATA lo_cmp_usage TYPE REF TO if_wd_component_usage.

Page 6: ALV 在 WD4A中使用指南read.pudn.com/downloads570/doc/2342948/ALV For WebDynpro.pdf · 2013-08-30 · 你用 column settings 管理所有的列对象。 Field 设置 (IF_SALV_WD_FIELD_SETTINGS

lo_cmp_usage = wd_this->wd_cpuse_cmp_alv( ).

IF lo_cmp_usage->has_active_component( ) IS INITIAL.

lo_cmp_usage->create_component( ).

ENDIF.

3、打开 WD的代码向导,选择方法 Call in Used Controller。4、选择你的 ALV控件,选择你需要调用的方法,如 GET_MODEL。

DATA lo_interfacecontroller TYPE REF TO iwci_salv_wd_table .

lo_interfacecontroller = wd_this->wd_cpifc_cmp_alv( ).

DATA lo_value TYPE REF TO cl_salv_wd_config_table.

lo_value = lo_interfacecontroller->get_model( ).

5、现在你就可以访问不同的 ALV配置模型的 interface 了。

备注:

为了能够使用 ALV的标准功能,调用如下代码

四、配置标准 ALV 功能

ALV的标准功能有如下:

� 排序;

� 过滤;

� 总计(平均);

� 指定应用初始页面(译者注:不太明白)

� 导出

� PDF格式打印

4.1、标准 ALV的功能和属性

ALV提供了广泛的标准功能,你可以定制一些标准功能,比如可用或者不可用(TCODE为 SIMGH)

初始化标准功能:

功能 客户化配置 接口方法 用户视觉

排序 ALV初始化显示的时

候没有排序,用户可

以通过点击排序

SET_SORT_COMPLEX_ALLOWED

SET_SORT_HEADDERCLIKC_ALLOWED

点击排序按钮

过滤 SET_FILTER_COMPLEX_ALLOWED

SET_FILTER_FILTERLINE_ALLOWED

点击过滤按钮,设置

过滤条件

PDF 打印 当有 JAVA 服务的时

候,打印时唯一的可

SET_PDF_ALLOWED

点击 PDF 按钮

Page 7: ALV 在 WD4A中使用指南read.pudn.com/downloads570/doc/2342948/ALV For WebDynpro.pdf · 2013-08-30 · 你用 column settings 管理所有的列对象。 Field 设置 (IF_SALV_WD_FIELD_SETTINGS

能(译者注:不懂什

么意思)

导出成 EXCEL SET_EXPORT_ALLOWED

在导出按钮上,选择

导出到 EXCEL用水晶报表显示

配置个性化选项

可视化设置对话框 如果设置对话框被锁

定,用户不能设置其

他个性化选项

SET_DIALOG_SETTINGS_ALLOWED

点击 settings 按钮

个性化列显示 SET_COLUMN_SETTINGS_ALLOWED

列选择标签页

个性化 VIEW SET_DISPLAY_SETTINGS_ALLOWED

显示选择标签页

保存选择页 SET_VIEW_LIST_ALLOWED

在 settings 页面中的

SAVEAS...

初始化被失效的标准功能

下面的功能在标准设置的时候是被失效的,你可以在客户化的时候激活它,也可以用 ALV配置模型激活(译者注:重要功能,如编辑,汇总等在后面有详细叙述,此处翻译跳过)

Page 8: ALV 在 WD4A中使用指南read.pudn.com/downloads570/doc/2342948/ALV For WebDynpro.pdf · 2013-08-30 · 你用 column settings 管理所有的列对象。 Field 设置 (IF_SALV_WD_FIELD_SETTINGS

4.2、排序

你可以改变 ALV数据记录的顺序按照特定的规则。你可以指定 fields 的值(字母或者

数字)按照规则,所有的行都重新排列。

你可以使用下列的设定排序:

� 创建,得到或者删除排序设置;

� 指定升序或者降序

� 分组

� 按照点击的表头排序

� 排序一个字段,用另外一个字段的值

� 隐藏排序设置页

Page 9: ALV 在 WD4A中使用指南read.pudn.com/downloads570/doc/2342948/ALV For WebDynpro.pdf · 2013-08-30 · 你用 column settings 管理所有的列对象。 Field 设置 (IF_SALV_WD_FIELD_SETTINGS

创建,得到或者删除一个字段的排序条件

在 ALV的输出中,排序时一个字段的属性。对于 Create,get 或者删除一个字段的排序

条件,你可以用接口 IF_SALV_WD_SORT的方法实现。

功能 方法

得到排序条件 GET_SORT_RULE创建排序条件 CREATE_SORT_RULE删除排序条件 DELETE_SORT_RULE

字段排序的条件有类 CL_SALV_WD_SORT_RULE 的对象描述。

注意:

如果你用一个新的数据或者新的结构赋值给 ALV输出,所有字段上面的排序条件自动

的删除。

指定排序方向和排序顺序

对每个可以排序的字段,你可以设置它是升序还是降序。

为了改变排序的方向和排序的顺序,你可以用类 CL_SALV_WD-SORT_RULE 的方法。

功能 方法

指定排序方向 SET_SORT_ORDER得到排序方向 GET_SORT_ORDER指定字段在排序中的位置 SET_SORT_POSITION得到字段在排序中的位置 GET_SORT_POSITION

你也可用指定首选排序方向,当用户在当前列排序的时候。

为了定义这个默认的排序方式,你可以用接口 IF_SALV_WD_SORT的方法。

功能 方法

指定默认的排序方式 SET_INITIAL_SORT_ORDER

Page 10: ALV 在 WD4A中使用指南read.pudn.com/downloads570/doc/2342948/ALV For WebDynpro.pdf · 2013-08-30 · 你用 column settings 管理所有的列对象。 Field 设置 (IF_SALV_WD_FIELD_SETTINGS

得到默认的排序方式 GET_INITIAL_SORT_ORDER

相同的值分组显示

默认的,在排序中,相同的值被组合在一起显示。这个值是分组的。你可以指定这个值

在每一行都显示,即使这个值没有改变。为了这到这种效果,你可以使用接口

IF_SALV_WD_SORT(实现类为 CL_SALV_WD_FIELD)这个类的方法。

功能 方法

分组,去掉分组 SET_GROUPING_ALLOWED检查是否分组 IS_GROUPING_ALLOWED

设置某字段不能排序

你可以让某个字段不排序,它可以导致以下结果:

� 这个字段不再显示在排序设置对话框的标签页中;

� 如果你允许用户在 AVL的表头单击排序,那么该字段的单击排序按钮将隐藏;

� 在你的应用中为这个字段定义了一个排序,那么这个排序条件在 ALV的输出中不

起作用。

为了设置不能排序的字段,你可以使用接口 IF_SALV_WD_SORT的方法:

功能 方法

不能排序 SET_SORT_ALLOWED检查是否允许排序 IS_SORT_ALLOWED

通过单击表头排序

你可以在 ALV的列头上面显示一个 ICON。用户可以通过这个 ICON 排序该列,升序

或者降序。

你可以让用户仅仅一列排序,或者通过 CTRL 键多列排序。

达到上述功能,你可以使用接口 IF_SALV_WD_STD_FUNCTIONS.的方法。

功能 方法

显示 ICON 在列头上 SET_SORT_HEADERCLICK_ALLOWED检查是否显示了 ICON 在列头上 IS_SORT_HEADERCLICK_ALLOWED

为了可以有多列可以排序,你可以使用接口类 IF_SALV_WD_TABLE_SETTINGS 的方

法:

功能 方法

能够多列排序 SET_MULTI_COLUMN_SORT检查是否多列排序 GET_MULTI_COLUMN_SORT

4.3、过滤

使用过滤,可以限制显示在 ALV中的记录数量。为此,你要指定一个条件,让符合条

件的记录显示,不符合的过滤掉。

你可以操作过滤的功能有:

� 为某个字段创建,得到或者删除过滤条件;

不像排序,你可以为每个字段定义任意多的过滤条件。

你可也创建一个过滤条件为每个没有明确指定不允许过滤的列。

过滤是一 ALV输出的字段的个属性。为了能够创建,得到或者删除某个字段的过滤条

件,可以使用接口类 IF_SALV_WD_FILTER的方法(实现类 CL_SALV-WD_FILED).

Page 11: ALV 在 WD4A中使用指南read.pudn.com/downloads570/doc/2342948/ALV For WebDynpro.pdf · 2013-08-30 · 你用 column settings 管理所有的列对象。 Field 设置 (IF_SALV_WD_FIELD_SETTINGS

功能 方法

得到过滤条件 GET_FILTER_RULE得到某字段的所有过滤条件 GET_FILTER_RULES创建过滤条件 CREATE_FILTER_RULE删除过滤条件 DELETE_FILTER_RULE删除某个字段的所有过滤条件 DELETE_FILTER_RULES

类 CL_SALV_WD_FILTER_RULE 的对象描述了某个字段的过滤条件。

备注:如果你将一个使用新结构的数据表格赋值给 ALV,则该 ALV中以前存在的所有

字段上的所有过滤条件都将自动删除。

� 设置过滤条件

下面说明了一个过滤条件包括的内容:

� 比较每一行的值(LOW_VALUE, HIGH_VALUE)� 操作比较字段的值(大于,小于或者等于)

� 包括或者排除

为了改变这些设置的条件,可以使用类 CL_SALV_WD_FILTER_RULE 的方法。

功能 方法

设置 low 的值 SET_LOW_VALUE得到 low 的值 GET_LOW_VALUE设置 high 的值 SET_HIGH_VALUE得到 high 的值 GET_HIGH_VALUE设置操作 SET_OPERATOR得到操作 GET_OPERATOR设置包含或者排除 SET_INCLUDED得到包含或者排除 GET_INCLUDED

� 忽略大小写

如 果 你 想 在 过 滤 条 件 中 设 置 是 否 忽 略 大 小 写 , 可 以 使 用 接 口 类

IF_SALV_WD_FIELD_SETTINGS 的方法。

功能 方法

忽略大写 SET_FILTER_IGNORING_CASE检查大写是否忽略 IS_FILTER_IGNORING_CASE

� 为某个字段不允许过滤

你可以设置某个字段不能过滤,影响如下:

� 如果 ALV是可以过滤的,那么过滤行就自动的显示当前可以设置过滤的列。

如果某个字段不能过滤,在过滤行中,当前的单元格不能填写。

� 在设置对话框中,在过滤标签页中,相应不能过滤的列不再能设置为过滤。

� 如果你在你的应用中定义了一个关于不能过滤字段的过滤条件,那么在 ALV输出的时候 ALV的该过滤布起作用。

使用接口类 IF_SALV-WD_FILTER来设置字段的过滤。

功能 方法

某字段不能过滤 SET_FILTER_ALLOWED

Page 12: ALV 在 WD4A中使用指南read.pudn.com/downloads570/doc/2342948/ALV For WebDynpro.pdf · 2013-08-30 · 你用 column settings 管理所有的列对象。 Field 设置 (IF_SALV_WD_FIELD_SETTINGS

检查是否能过滤 IS_FILTER_ALLOWED

� 用另外一个字段的值过滤

� 隐藏或者显示过滤的 toolbar 在 ALV的工具栏上面

4.4、计算

你可以在一个数字类型的字段上面执行汇总。你可以创建一个汇总的条件,结果是显示

在一个分离的结果行上。

中间结果

一般的,在你执行汇总的时候,是某个字段的所有行都参与计算。你可以得到一个中间

的结果。为此,你可以对你想要使用的中间结果排序和分组。

你为汇总可以使用如下的设置:

� 创建,得到和删除功能

� 设置汇总

� 产生中间结果

� 在界面中隐藏或者显示汇总或者子汇总

创建、获得和删除功能

你可以为一个字段创建最大为一的汇总规则。汇总在 ALV中是一个字段的属性。你可

以使用接口类 IF_SALV_WD_AGGR 的方法来创建,获取和删除对一个字段汇总的规

则。

功能 方法

得到汇总规则 GET_AGGR_RULE创建汇总规则 CREATE_AGGR_RULE删除汇总规则 DELETE_AGGR_RULE

类 CL_SALV_WD_AGGR_RULE的对象描述字段的汇总规则。

备注:如果你用新的数据结构赋值给 ALV,那么所有字段上的所有汇总规则都自动删

除。

计算调整

在 ALV 的设置对话空中,汇总功能默认是没有被激活的。你激活可以用

IF_SALV_WD-STD_FUNCTIONS~SET_AGGREGATION_ALLOWED.选项有小计和定义计算类型。

显示表的行数。

Page 13: ALV 在 WD4A中使用指南read.pudn.com/downloads570/doc/2342948/ALV For WebDynpro.pdf · 2013-08-30 · 你用 column settings 管理所有的列对象。 Field 设置 (IF_SALV_WD_FIELD_SETTINGS

参考 IF_SALV_WD_STD_FUNCTIONS 和 IF_SALV_WD_FIELD_SETTINGS 的系统文

档。

你可以为计算字段设置如下功能:

� 指定汇总类型;

� 指定结果行的位置

� 设置行不能汇总

指定汇总类型

� 总计

� 最大值

� 最小值

� Mean value(几何平均值,不太明白具体含义)

定义计算类型,可以使用类 CL_SALV_WD_AGGR_RULE的方法。

功能 方法

指定计算类型 SET_AGGREGATION_TYPE得到计算类型 GET_AGGREGATION_TYPE

在上面列出的所有汇总类型以外,你也可以定义数据记录的总行数。这个结果显示在结

果行的第一个列。因为这个设置可以影响 ALV 的输出,你可以使用接口类

IF_SALV_WD_FIELD-SETTINGS 的方法。

功能 方法

显示记录的行数 SET_COUNT_RECORDS_ENABLED

Page 14: ALV 在 WD4A中使用指南read.pudn.com/downloads570/doc/2342948/ALV For WebDynpro.pdf · 2013-08-30 · 你用 column settings 管理所有的列对象。 Field 设置 (IF_SALV_WD_FIELD_SETTINGS

是否显示记录行数 IS_COUNT_RECORDS_ENABLED

指定结构行的位置

你可以指定结果显示在 ALV 的数据显示的上面或者下面。你可以使用接口类

IF_SALV_WD_FIELD_SETTINGS 的方法。

功能 方法

放置结构在数据记录的前面 SET_AGGR_BEFORE_ITEMS是否结构显示在记录的前面 IS_AGGR_BEFORE_ITEMS

指定一个字段不能汇总

默认情况下,所有数字类型的字段都可以汇总。如果你需要,你可以指定某个字段不能

汇总操作。影响如下:

� 该列在设置对话框中的计算字段不再是活动的。

� 如果你为这个字段定义了一个汇总规则,那么这个汇总过程不会被执行。

禁止汇总字段,使用接口类 IF_SALV_WD_AGGR的方法

功能 方法

禁止汇总 SET_AGGREGATION_ALLOWED检查是否汇总 IS_AGGREGATION_ALLOWED

中间结果

默认的情况下,所有被定义为汇总的值都将被使用。而且,你可以生成中间结果。实现

这点,你可以把包括有中间结果的记录分组放置在一起,中间结果显示在一个分离的行上。

为了产生中间结果,你必须设置:

� 指定一个你想汇总中间结果的字段,为该字段创建一个汇总规则。总结果显示在结

果行上。

� 指定包括中间结果的数据记录,把这些记录分组放置在一起:对有中间结果的字段

排序。

� 产生中间结果

� 显示中间结果

备注:如果中间结果多于一行,例如,你显示不同的货币金额(人民币,美元等),或

者你把表显示在一个层次级别中,那么中间结果将不显示。

中间结果,你可以:

� 产生中间结果

� 显示中间结果

� 指定钻取中间结果的层级

� 指定结果显示的位置

� 不让产生中间结果

条件

� 你至少在一个字段上定义一个汇总条件

� 拥有中间结果条件的字段不能汇总而且有一个字段类型

Page 15: ALV 在 WD4A中使用指南read.pudn.com/downloads570/doc/2342948/ALV For WebDynpro.pdf · 2013-08-30 · 你用 column settings 管理所有的列对象。 Field 设置 (IF_SALV_WD_FIELD_SETTINGS

产生中间结果

为了给已经有汇总条件产生的字段产生中间结果,你要为一个字段创建一个排序条件

(排序条件的设置,见前面章节)。

在 这 个 排 序 条 件 中 , 你 指 定 是 否 产 生 中 间 结 果 。 你 可 以 使 用 类

CL_SALV_WD_SORT_RULE 的方法。

功能 方法

产生中间结果 SET_GROUP_AGGREGATION得到中间结果 GET_GROUP_AGGREGATION

显示中间结果

一旦你创建好了所有的设置,为了创建中间结果,你必须激活显示这些中间结果。为此,

你可以使用接口类 IF_SALV_WD_FIELD_SETTINGS.功能 方法

显示中间结果 SET_GROUP_AGGR_DISPLAYED检查中间结果是否显示 GET_GROUP_AGGR_DISPLAYED

指定中间结果的钻取层级

如果你为多个字符字段定义了中间结果,这个结果将显示在多个小计中:根据他们层级

的显示需要,中间结果显示在一个特定的位置。用户可以在这些特定的位置显示或者隐

藏每个中间结果的实体。在你的应用中,你可以显示或者隐藏一个或多个小计的层级。

你也可以收起中间结果:你可以隐藏所有的层次的小计的数据明细。

上述功能可以用接口类 IF_SALV_WD_FIELD_SETTINGS 的方法实现。

功能 方法

指定最高小计层级显示 SET_EXPAND_LEVEL得到当前小计层级显示 GET_EXPAND_LEVEL收缩中间结果 SET_GROUP_AGGR_COLLAPSED检查数据是否收缩中间结果 GET_GROUP_AGGR_COLLAPSED

不允许产生中间结果

使用接口类 IF_SALV_WD_SORT的方法设置

功能 方法

不允许产生中间结果 SET_GROUP_AGGREGATION_ALLOWED检查是否产生中间结果 IS_GROUP_AGGREGATION_ALLOWED

4.5、初始化 VIEW不同的人可以修改 ALV的显示属性:

� 应用开发人员可以对 ALV配置模型编程来产生 ALV的输出。

在没有更多的配置产生,系统总是使用在代码中指定的类型。在 VIEW的下拉列

表中,显示了所有用户的默认 VIEW。

� 应用开发人员可以指定数据记录的配置在应用配置中。

� 系统管理员可以修改【DEFAULT VIEW】属性,即客户化。

Page 16: ALV 在 WD4A中使用指南read.pudn.com/downloads570/doc/2342948/ALV For WebDynpro.pdf · 2013-08-30 · 你用 column settings 管理所有的列对象。 Field 设置 (IF_SALV_WD_FIELD_SETTINGS

� 系统管理员可以指定一个激活的页为初始页,即客户化

� 用户可以指定一个激活的页当做初始页,即个性化

下面的章节描述了作为开发人员的你如何开发一个特定的配置为 ALV的数据记录。

前提

� 你是经过认证可以保存数据记录配置和修改应用配置。

� 你可以保存至少一个数据记录的配置

� 如果应用包括有多于一个的 ALV,你必须知道当前 ALV组件的名字

过程

1、为当前页的配置决定一个 ID编号

备注:当你保存一个页面的描述,并没有产生一个序列。因此,你不能使用这个描述。

你要使用一个特定的编号,这个编号系统可以自动产生。

为了能够在后面的步骤中使用当前数据记录的配置,你需要一个当前 VIEW的配置编

号。

(1)、开始配置模型的应用

(2)、打开 ALV的设置对话框

(3)、选择属性,这个配置编号就显示在该属性对话框中

(4)、拷贝这个配置编号在这个 VIEW中。

2、指定一个数据记录的配置当做开始配置

你可以在每个应用中保存不同的配置。一个配置的属性是一个 ALV的页面的开始配置。

(1)、产生一个应用配置或者选择一个存在的

(2)、选择一个你想配置的 ALV控件

(3)、(本节以下省略,以后翻译)

4.6、导出

用户可以在当前的 ALV输出成不同的格式:

� EXCEL� ADOBE ACROBAT(PDF,使用不到,不再翻译)� 水晶报表(使用不多,不再翻译)

� BEx 分析(不懂用在什么地方,暂时不翻译)

导出到 EXCEL为了把 ALV导出到 EXCEL 中,用户选择导出按钮就可以了。

下列 EXCEL的格式被支持:

� EXCEL for office 2007� EXCEL (MHTML format)� EXCEL (MHTML format for 2000/97)

指定需要的标准格式,执行事务代码(SIMGH).而且,在你的应用中,在用户导出的时候,你可以定义其他的信息也导入到 EXCEL中,

这些信息包括有:

Page 17: ALV 在 WD4A中使用指南read.pudn.com/downloads570/doc/2342948/ALV For WebDynpro.pdf · 2013-08-30 · 你用 column settings 管理所有的列对象。 Field 设置 (IF_SALV_WD_FIELD_SETTINGS

� 页头和页脚

� 结果行的汇总

设计对象导出数据到 EXCEL中

如果你定义了设计对象页头和页脚给 ALV中,你可以定义在导出的文件中是否包括有

这些内容。你可以使用接口类 IF_SALV_WD_EXPORT_SETTINGS 的方法。

功能 方法

拷贝设计对象到 EXCEL 头 SET_EXPORT_NO_TOL检查是否有设计对象到 EXCEL头 GET_EXPORT_NO_TOL拷贝设计对象到 EXCEL 脚 SET_EXPORT_NO_EOL检查是否有设计对象到 EXCEL脚 GET_EXPORT_NO_EOL

拷贝计算的结果行道 EXCEL中

在导出的时候,你可以指定是否在导出的结果中包括有结果汇总或者中间结果汇总。你

可以使用接口类 IF_SALV_WD_EXPORT_SETTINGS 的方法。

功能 方法

拷贝结果到 EXCEL中 SET_EXPORT_NO_SUMS检查是否拷贝结果到 EXCEL中 GET_EXPORT_NO_SUMS

(以下省略翻译 10页,主要是讲解 PDF打印控制的内容)

五、管理 ALV显示区域

在 ALV的显示中,包括有如下的显示区域,你可以产生,修改和去掉每个部分

� 你可以包括一个标题和一个图形

� 你可以选择一个字段是否可见,你可以组织列和给列头赋值

� 你可以包括一个垂直或者水平滚动条

� 你可以定义页头和页脚

� 你可以定义设置对话框的显示位置

5.1、ALV头显示

默认的,ALV显示没有表头。你可以产生一个表头在 ALV显示的上面,表头可以有以

下部分:

� 文本

� 图形

� TOOLTIP

你可以在 ALV中设置如下操作:

� 创建,得到和删除头对象

� 指定头的内容

� 在头中指定图像

� 在头中指定图像的位置

� 指定 TOOLTIP的内容

创建,获取和删除头对象

ALV的头显示是类 CL_SALV_WD_HEADER的一个对象。为了产生或者删除该对象,

Page 18: ALV 在 WD4A中使用指南read.pudn.com/downloads570/doc/2342948/ALV For WebDynpro.pdf · 2013-08-30 · 你用 column settings 管理所有的列对象。 Field 设置 (IF_SALV_WD_FIELD_SETTINGS

你可以使用接口类 IF_SALV_WD_TABLE_SETTINGS 的方法。

功能 方法

产生一个头对象 CREATE_HEADER获取头对象 GET_HEADER删除头对象 DELETE_HEADER

指定头内容

ALV的头显示为字符串类型。为定义这种头,可以使用类 CL_SALV_WD_HEADER.功能 方法

头内容 SET_TEXT得到头内容 GET_TEXT

指定图片路径在表头上

你可以显示一个图片在你的 ALV 上面。为了定义这个路径,可以使用类

CL_SALV_WD_HEADER。功能 方法

设置图片路径 SET_IMAGE_SOURCE得到图片路径 GET_IMAGE_SOURCE

指定图片在表头的位置

同样使用类 CL_SALV_WD_HEADER。功能 方法

设置在头的位置 SET_IMAGE_FIRST得到在头的位置 GET_IMAGE_FIRST

指定提示

同样使用类 CL_SALV_WD_HEADER。功能 方法

指定提示内容 SET_TOOLTIP得到提示内容 GET_TOOLTIP

5.2、字段

如果你用 ALV的配置模型,所有字段对象都被自动产生了。结果是,每个在 CONTEXTNODE中的 attribute都有一个同名的描述在 ALV配置模型中。作为连接内表和 context node,在开始你的 ALV引用的时候,这些都已经准备好了。你可以排序,过滤或者执行使用语句。

所有这些都是字段的基本功能。然而现在你和不能显示数据。为了显示,你需要列。

有二种情况下使用字段对象:

� 你想在 ALV显示之前,使用 ALV的标准功能。

� 你想赋值属性

你可以为字段对象使用如下设置:

� 得到字段对象

� 得到字段名

备注:你不能创建新的字段或者删除已经存在的字段。

Page 19: ALV 在 WD4A中使用指南read.pudn.com/downloads570/doc/2342948/ALV For WebDynpro.pdf · 2013-08-30 · 你用 column settings 管理所有的列对象。 Field 设置 (IF_SALV_WD_FIELD_SETTINGS

得到字段对象

为了得到需要设置的一个字段,你首先要得到字段对象。你可以决定你根据字段名得到

一个指定的字段对象,或者得到所有的字段对象。以上情况都可以用接口 类

IF_SALV_WD_FIELD_SETTINGS 的方法。

功能 方法

得到一个单独的字段对象 GET_FIELD得到所有字段 GET_FIELDS

得到字段名

得到当前字段实例的名字,可以使用类 CL_SALV_WD_FIELD.功能 方法

得到字段名 GET_FIELDNAME

5.3、列

列对象在 ALV中是一个可视化的对象。这列有同样的名字就像字段对象和 context node的属性有同样的名字一样。如果你不想显示这个字段的值,你可以删除该列对象。你也可以

显示一个字段有许多列的值。

依靠你得到的 ALV配置模型,有且仅有一个,唯一的列对象和你的 context node 对应,

或者没有列对象。在后一种情况下,你必须生成列对象给需要显示的 ALV。

你对列对象有如下设置:

� 得到列对象

� 得到列对象的名字

� 创建或者删除列对象

� 设置列对象的头

� 改变列对象的位置

得到一个列对象

为了设置一个列,首先你必须要得到列对象。你可以通过列名的到列对象,或者得到所

有的列对象。通过接口类 IF_SALV_WD_COLUMN_SETTINGS。功能 方法

得到一个唯一的列对象 GET_COLUMN得到所有的列对象 GET_COLUMNS

得到列的技术名称

使用类 CL_SALV_WD_COLUMN 得到当前列的名称。

功能 方法

得到当前列的技术名称 GET_ID

创建和删除列对象

当你得到 ALV的配置模型的时候,如果你定义的是系统没有产生的列对象,你需要在

你的应用中创建该列对象。

所有的列对象都是显示出来的,如果你想对用户不显示某个列对象,你需要删除掉。

备注:当你产生一个列对象的时候,你需要输入一个技术名称。这个名称必须和你的应

Page 20: ALV 在 WD4A中使用指南read.pudn.com/downloads570/doc/2342948/ALV For WebDynpro.pdf · 2013-08-30 · 你用 column settings 管理所有的列对象。 Field 设置 (IF_SALV_WD_FIELD_SETTINGS

用中的 context node 的属性名称一致。

对于创建和删除列对象,你可以使用接口类 IF_SALV_WD_COLUMN_SETTINGS。功能 方法

创建列对象 CREATE_COLUMN删除列对象 DELETE_COLUMN删除所有的列对象 DELETE_COLUMNS

列头

默认的,每个 ALV中的列都有一个列头。

你可以改变这些列头。你可以做到有:

� 文本

� 图形

� 提示

对列头的操作有如下几个:

� 产生,获取和删除列头对象

� 指定列头文本

� 设置是否换行在需要的时候

� 指定列头图片的路径

� 指定列头图片的位置

� 指定提示的文本

标准列头信息

标准列头信息仅仅包括文本。这个文本依赖 context node 的属性

� 如果属性没有 DDIC的引用

默认情况下,用 context node 的属性名当做列头的名字。

� 如果属性有一个 DDIC的引用:

系统使用列头使用下面的规则:

(1)、如果 DDIC的元素中包括有字段 LABEL 的信息,系统就使用该信息作为

列头;

(2)如果字段的 LABEL 没有定义,系统将使用 DDIC的技术名称。

创建、获取和删除列头对象

在 ALV输出中,列头对象是类 CL_SALV_WD_COLUMN_HEADER的一个实例。每个

列对象都有一个列头对象对应。

功能 方法

得到列头对象 GET_HEADER创建列头对象 CREATE_HEADER删除列头对象 DELETE_HEADER

指定列头文本

你可以定义一个文本为列头,你可以做如下选择:

� 你可以使用一个文本

� 你可以使用 DDIC数据,使用 DDIC字段的 LABEL来当做列头的文本。

Page 21: ALV 在 WD4A中使用指南read.pudn.com/downloads570/doc/2342948/ALV For WebDynpro.pdf · 2013-08-30 · 你用 column settings 管理所有的列对象。 Field 设置 (IF_SALV_WD_FIELD_SETTINGS

(以下关于 DDIC方面的,省略翻译,现在使用还不多)

实现上述功能,使用类 CL_SALV_WD_COLUMN_HEADER.功能 方法

定义一个文本当做列头 SET_TEXT解除字段的 DDIC关系 SET_PROP_DDIC_BINDING_FIELD(需要

和 SET_TEXT方法联合使用

得到列头问题 GET_TEXT指定 DDIC元素 SET_PROP_DDIC_BINDING_ELEMENT得到 DDIC元素 GET_PROP_DDIC_BINDING_ELEMENT指定字段 LABEL当做列头 SET_PROP_DDIC_BINDING_FIELD得到字段 LABEL GET_PROP_DDIC_BINDING_FIELD

在列头折行

系统一般在列头没有折行。默认情况下,列的宽度就是列头的宽度。你可以指定列头是

否允许折行。

备注:为了让列头可以折行,ALV的 layout 必须是固定的。

可以使用类 CL_SALV_WD_COLUMN_HEADER.的方法(译者注:在系统中,没有找

到下列 2个方法)

功能 方法

设置折行 SET_HEADER_TEXT_WRAPPING得到是否设置为折行 GET_HEADER_TEXT_WRAPPING

指定列头的图片的路径

使用类 CL_SALV_WD_COLUMN_HEADER.的方法。

功能 方法

指定图片的路径或者编号 SET_IMAGET_SOURCE得到图片的路径或者编号 GET_IMAGET_SOURCE

指定图片的位置

功能 方法

设置图片的位置 SET_IMAGE_FIRST得到图片的位置 GET_IMAGE_FIRST

指定提示文本

列头的提示文本显示在,当用户把鼠标放置在列头的时候。

你可以设置列头的提示文本。有如下的选择:

� 你可以设置为任意文本

� 你可以设置为 DDIC数据元素的 LABLE 文本。

对 应 DDIC 的 关 联 , 首 先 是 要 得 到 一 个 DDIC 元 素 。 然 后 用 方 法

SET_PROP_DDIC_ELEMENT。使用类 CL_SALV_WD_COLUMN_HEADER.的方法。

Page 22: ALV 在 WD4A中使用指南read.pudn.com/downloads570/doc/2342948/ALV For WebDynpro.pdf · 2013-08-30 · 你用 column settings 管理所有的列对象。 Field 设置 (IF_SALV_WD_FIELD_SETTINGS

功能 方法

设置提示文本

绑定

SET_TOOLTIPSET_PROP_DDIC_BINDING_FIELD

得到提示文本 GET_TOOLTIP设置 DDIC为提示文本 SET_PROP_DDIC_BINDING_ELEMENT得到 DDIC的数据元素 GET_PROP_DDIC_BINDING_ELEMENT指定字段的 LABEL为提示 SET_PROP_DDIC_BINDING_FIELD得到字段的 LABEL GET_PROP_DDIC_BINDING_FIELD

列的位置

默认情况下,所有列的位置和 context node 的属性的位置是一致的。你可以改变他们的

顺序。可以通过如下方法:

� 修改列位置的序号

� 固定列

你也可以指定是否允许固定列。

改变位置序号

每个列都是从 0开始,自动的分配序号。你可以通过改变位置序号,从而改变列的位置。

备注:列的位置总是 0是最左边的。这个含义就是如果你想把一个列调整到左边,你就

必须改其他的列都高于这个序号。

改变位置序号,可以使用类 CL_SALV_WD_COLUMN的方法。

功能 方法

设置序号 SET_POSITON得到序号 GET_POSITON

固定列

你可以固定列,固定列有如下功能:

� 你可以移动列到 ALV的边缘

� 当有水平滚动条的时候,固定列将不移动

当固定列的时候,你可以指定列是被固定到左边还是右边。这样你可以产生 3块列:固

定在左边的列,固定在右边的列和不固定的列。

你也可以改变固定列的序号,你可以改变一个块中的所有列的序号。

使用固定列,使用类 CL_SALV_WD_COLUMN 的方法。

功能 方法

固定列 SET_FIXED_POSITION检查是否是固定列 GET_FIXED_POSITION

允许固定列

你可以指定是否允许固定一些特例的列。你可以指定他们是固定在左边还是右边。在设

置对话框中,一个 UI元素被显示意味着固定用户可以指定固定列的数字。

操作固定列,可以用类 IF_SALV_WD_STD_FUNCTIONS 的方法。

Page 23: ALV 在 WD4A中使用指南read.pudn.com/downloads570/doc/2342948/ALV For WebDynpro.pdf · 2013-08-30 · 你用 column settings 管理所有的列对象。 Field 设置 (IF_SALV_WD_FIELD_SETTINGS

功能 方法

允许固定列到左边 SET_FIXED_COLS_LEFT_ALLOWED检查是否允许固定列在左边 IS_FIXED_COLS_LEFT_ALLOWED设置固定列到右边 SET_FIXED_COLS_RIGTH_ALLOWED检查是否允许固定列在右边 IS_FIXED_COLS_RIGHT_ALLOWED

5.4、配置滚动条(滚动一般使用默认的设置,翻译省略了一些,有其他要求的,可以直接

看原文档)

如果 ALV的所有行或者列没有被显示,滚动条总是被显示。

更多信息

� 可见行或列的显示数量,见后面的章节

� 是否可以滚动和固定列的不同,见列的位置章节。

显示/隐藏页脚

对应 ALV一次显示太多的数据,可以用滚动条显示不可见的部分。

你可以指定滚动条什么时候可见或不可见:

� Never即使隐藏了可见区域,滚动条也不出现

� Always任何时候都显示滚动条

� Only when required如果有更多的数据需要在 ALV中显示的时候,滚动条才出现。

为了显示或隐藏滚动条,可以使用接口类 IF_SALV_WD_TABLE_SETTINGS功能 方法

显示滚动条 SET_FOOTER_VISIBLE检查滚动条是否显示 GET_FOOTER_VISIBLE

显示水平滚动条

默认情况下,所有的行都是被可视显示的。用户可能需要用滚动条才可以导航到可见的

位置。ALV的水平滚动条时隐藏的。

你可以定义一次多少列式滚动的,因此,ALV的显示宽度决定了。

可以使用接口类 IF_SALV_WD_TABLE_SETTINGS功能 方法

定义可以滚动的列 SET_SCROLLABLE_COL_COUNT得到可以滚动的列 GET_SCROLLABLE_COL_COUNT

5.5、头和脚区域

你可以用各种元素不设置 ALV 的上面和下面。为此,你需要用到设计对象(designobjets)。

你可以用各种不同类型的元素去组织成成一个设计对象。你可以在需要的位置显示设计

对象。

备注:所有设计对象的类和方法都在系统包 SALV_FORM_ELEM 中。

元素类型和布局

Page 24: ALV 在 WD4A中使用指南read.pudn.com/downloads570/doc/2342948/ALV For WebDynpro.pdf · 2013-08-30 · 你用 column settings 管理所有的列对象。 Field 设置 (IF_SALV_WD_FIELD_SETTINGS

你用下列元素类型为你的设计对象:

� 头元素

� 文本元素

� Action信息

注:这几种类型仅仅在显示上面的不同,没有功能可以连接到这几种类型上面。

这些元素类型可以组织到你的设计类型中,为此,你可以选择一下布局组织:

� Single element创建一个元素,显示在需要的位置

� Row-type layout许多元素都在一行中显示,一个挨一个的。

� Table-type layout你管理许多元素在行或列中。

以上管理方式可以组合使用,具体用法和 VIEW布局类似。

Context Nodes TOP_OF_LIST 和 END_OF_LISTALV组件提供了 2个 Context node TOP_OF_LIST 和 END_OF_LIST。每个包括一个属

性 CONTENT。这些 context node 的数据就是你为 ALV头或脚区域的设计对象。

在你的应用中,使用一个同名的 context 和这个映射,并且设置 context 属性为你的设计

对象。

安装设计对象

下面的步骤让你安装你的设计对象到头和脚的区域:

� 映射ALV的CONTEXT NODES的TOP_OF_LIST和END_OF_LIST到你的应用中。

� 创建一个设计对象。

� 把你的设计对象放置在合适的位置

� 设置你的设计对象到 context node的 CONTENT中。

显示或者隐藏设计对象

(一下跳过若干和设计对象相关内容)

5.6、定义对话框位置

(略)

六、定义 ALV显示的外观

6.1、Columns 和 Cells 的属性设置

可以赋值各种属性去影响列的显示情况:

� 你赋值列的属性,该列的所有 CELL都使用这个属性。

� 在每个 CELL 中,字段是分离的。

你可以赋值下面的属性:

� 背景颜色

� CELL 的变种

CELL编辑属性

然而,对于一些 CELL 显示的属性是用 CELL EDITOR 使用在 CELL 中。这就意味着

Page 25: ALV 在 WD4A中使用指南read.pudn.com/downloads570/doc/2342948/ALV For WebDynpro.pdf · 2013-08-30 · 你用 column settings 管理所有的列对象。 Field 设置 (IF_SALV_WD_FIELD_SETTINGS

CELL是否编辑决定着列的显示。下面应用也是这些属性:编辑实例能够被验证,或者他们

能被另外一个字段信息重写。

过程

下面的例子显示你可以顶一个 button 给一列中的单独的行。

在列中,可以用 BUTTON 为 CELL EDITOR。每个 CELL 都显示为一个 BUTTON。你

想隐藏这列中的一些 CELL。然而,可视化属性是基于 BUTTON 的,而不是列的,你必须

隐藏 CELL 的工作区。这就意味着 BUTTON_VIS字段决定该列的那些单元 button 可见。

1、创建类 CL_SALV_WD_UIE_BUTTON 的一个对象。

2、字段(BUTTON_VIS)包括在每个 CELL 中,你赋值这个字段给 BUTTON.3、赋值这个 button 该一个列中。

其他属性的例子:

� 字体类型用 TEXT_VIEW(SET_DESIGN or SET_DESIGN_FIELDNAME).� 图 片 选 择 BUTTON(SET_CHECKED_IMAGE_SOURCE or

SET_CHECKED_IMG_SRC_FIELDNAME)

6.2、ALV、Columns 和 Cells 的大小

默认的,ALV,列和行的显示大小依赖于他们显示的内容,换句话说:

� 一个列至少是最宽的 CELL 的宽度;

� ALV显示的宽度是所有列的宽度的总和;

� 一个行的高度是最高的 CELL 的高度

你可以容易的增加 ALV的宽度和指定列的宽度。然而,增加宽度不是那么容易。首先,

你要冻结 ALV的显示布局。赋值同样的宽度给所有的列。那么你就给每个列的宽度都相同。

你可以用下面的设置给一个单独的区域设置 SIZE。� 改变宽度

� 改变高度

� 冻结 table 的布局

改变宽度

功能 类 方法

指定 ALV的宽度 IF_SALV_WD_TABLE_SETTINGS

SET_WDITH

指定列的宽度 CL_SALV_WD_COLUMN指定图片的宽度 IF_SALV_WD_GRAPHIC_S

ETTINGS指定 CELL 的宽度

仅 仅 是 下 列 CELLEDITORS:

SET_WIDTH orSET_WIDTH_FIELDNAME

BUTTON CL_SALV_WD_UIE_BUTTON

Dropdown list box CL_SALV_WD_UIE_DROPDOWN_BY_KEY

Iamge CL_SALV_WD_UIE_IMAGE

Page 26: ALV 在 WD4A中使用指南read.pudn.com/downloads570/doc/2342948/ALV For WebDynpro.pdf · 2013-08-30 · 你用 column settings 管理所有的列对象。 Field 设置 (IF_SALV_WD_FIELD_SETTINGS

InputField CL_SALV_WD_UIE_INPUT_FIELD

ProgressIndicator CL_SALV_WD_UIE_PROGR_INDICATOR

ToggleButton CL_SALV_WD_UIE_TOGGLE_BUTTON

ValueComparison CL_SALV_WD_UIE_VALUE_CMP

得到 ALV的宽度 IF_SALV_WD_TABLE_SETTINGS

GET_WIDTH

得到列的宽度 CL_SALV_WD_COLUMN得到图片的宽度 IF_SALV_WD_GRAPHIC_S

ETTINGS得到 CELL 的宽度 GET_WIDTH or

GET_WIDTH_FIELDNAME

改变高度

在显示的时候,你可以用行的数量来指定 ALV的高度。

备注:如果记录的数量小于可见的行数,空行被自动的添加在 ALV的后面的记录。你

可以指定没有空行显示在 ALV的后面,因此,ALV可以根据记录的数量类调整它的高度。

为了做到这点,你可以使用接口类 IF_SALV_WD_TABLE_SETTINGS 的方法

功能 方法

指定可见行 SET_VISIBLE_ROW_COUNT得到可见行 GET_VISIBLE_ROW_COUNT添加空行 SET_DISPLAY_EMPTY_ROWS检查是否有空行被添加 GET_DISPLAY_EMPTY_ROWS

备注:为了显示内表中的所有数据,你可以设置可见行数为-1。

冻结 TABLE 的布局

冻结 ALV的布局,可以让列的宽度比它的内容显示的宽度窄。

你可以使用接口类 IF_SALV_WD_TABLE_SETTINGS 实现

功能 方法

固定布局 SET_FIXED_TABLE_LAYOUT检查布局是否固定 GET_FIXED_TABLE_LAYOUT

6.3、区域的可见性

你可以显示或者隐藏 ALV的不同区域。

备注:如果该区域是不可见区域,那么他还将不可见。

你也可以隐藏下列的区域:

� ALV� 列

� CELL� TOOLBAR

Page 27: ALV 在 WD4A中使用指南read.pudn.com/downloads570/doc/2342948/ALV For WebDynpro.pdf · 2013-08-30 · 你用 column settings 管理所有的列对象。 Field 设置 (IF_SALV_WD_FIELD_SETTINGS

� TOOLBAR上的标准功能

� 设计对象头

� 设计对象脚

备注:为了隐藏其他对象,比如 ALV的头或者列头,你必须要删除这些对象

区域 类 方法

全部 ALV IF_SALV_WD_TABLE_SETTINGS

SET_VISIBLEGET_VISIBLE

单个的列 CL_SALV_WD_COLUMN使用 CELL EDITOR 的 UI元素

CL_SALV_WD_UIE(所有 UI元素的父类)

所有 TOOLBAR上面的功能 IF_SALV_WD_FUNCTION_SETTINGS

设计对象在 ALV的头 IF_SALV_WD_TABLE_SETTINGS

SET_TOP_OF_LIST_VISIBLE

设计对象在 ALV的脚 IF_SALV_WD_TABLE_SETTINGS

SET_END_OF_LIST_VISIBLE

在 TOOLBAR 上的标准可视

化对象

IF_SALV_WD_STD_FUNCTIONS

SET_<STANDARD_FUNCTION>_ALLOWEDIS_<STANDARD_FUNCTION>_ALLOWED

6.4、ALV、Columns 和 Cells 的颜色

你可以指定 ALV中各个区域的颜色,主要如下:

� ALV你可以选择下面的形式:

� 标准颜色

所有的行和列都使用同种颜色

� 交叉颜色

行在白色和黑色间交替显示

� 透明色

背景是透明的,没有网格线

� 列

你可以改变一列的背景颜色。使用预先定义的颜色

� CELL 变种

用预先定义的颜色渲染 CELL 变种的颜色

� CELL这个 CELL EDITOR是 TEXT_VIEW类型的,可以显示组合颜色,背景和字体的颜

色。

� TOOLBAR可以使用如下:

� 标准色

� 彩色

� 透明

Page 28: ALV 在 WD4A中使用指南read.pudn.com/downloads570/doc/2342948/ALV For WebDynpro.pdf · 2013-08-30 · 你用 column settings 管理所有的列对象。 Field 设置 (IF_SALV_WD_FIELD_SETTINGS

区域 类 方法

ALV IF_SALV_WD_TABLE_SETTINGS

SET_DESIGNGET_DESIGN

列 CL_SALV_WD_COLUMN SET_CELL_DESIGNGET_CELL_DESIGN

CELL变体 CL_SALV_WD_CV_STANDARD

SET_CELL_DESIGNSET_CELL_DESIGN_FIELDNAME

GET_CELL_DESIGNGET_CELL_DESIGN_FIELDNAME

CELL CL_SALV_WD_UIE_TEXT_VIEW

SET_SEMANTIC_COLORSET_SEMANTIC_COLOR_FIELDNAME

GET_SEMANTIC_COLORGET_SEMANTIC_COLOR_FIELDNAME

工具条 IF_SALV_WD_FUNCTION_SETTINGS

SET_DESIGNGET_DESIGN

6.5、文本属性

6.6、Columns 和 Rows 之间的线

6.7、表的层级

6.8、表的数据显示为图形

6.9、显示为水晶报表(跳过,使用较少)

6.10、

七、提供应用功能

你可以提供功能让用户使用 ALV。这个功能是系统提供给 ALV的,叫做 ALV标准功

能。标准功能包括有排序,过滤和总计等。

为了添加标准功能,用户可以提供扩展的功能,这个叫应用功能。

可以使用如下功能:

� 创建,获取和删除功能

� 指定用户界面元素

� 指定在工具条上面的位置

� 控件的可见和不可见

� 功能事件的触发

7.1、创建,获得和删除功能

如果你使用 ALV 的配置模型,所有的标准 ALV 功能都是自动创建的。这个对象是

CL_SALV_WD_FUNCTION_STD。

Page 29: ALV 在 WD4A中使用指南read.pudn.com/downloads570/doc/2342948/ALV For WebDynpro.pdf · 2013-08-30 · 你用 column settings 管理所有的列对象。 Field 设置 (IF_SALV_WD_FIELD_SETTINGS

如果是自定义功能,你可以从类 CL_SALV_WD_FUNCTION 的对象产生。你可以在工

具条上面产生许多功能对象。

你可以有如下功能:

� 创建一个用户定义功能

� 得到一个功能对象

� 设置或者获取关于功能的信息

� 删除一个用户定义功能

创建一个用户定义功能

当你创建一个用户定义功能,你需要指定一个 ID(类型为字符串),它将指代你的功能

的地址。

创建用户定义对象,用接口类 IF_SALV_WD_FUNCTION_SETTINGS。功能 方法

创建一个自定义功能 CREATE_FUNCTION

得到一个功能对象

为了设置功能对象,你首先必须调用 GET方法。你可以选择得到如下的对象:

� 所有 ALV的标准功能或指定的功能

� 所有指定功能或者指定功能

� 在工具条上面的 ALV标准功能

� 在工具条上的自定义功能

接口类 IF_SALV_WD_FUNCTION_SETTINGS 的方法可以实现如上功能:

功能 方法

得到所有 ALV标准功能 GET_FUNCTIONS_STD得到指定的 ALV标准功能 GET_FUNCTION_STD得到所有用户定义功能 GET_FUNCTIONS得到指定的用户定义功能 GET_FUNCTION得到所有左对齐的标准 ALV功能 GET_FUNCTIONS_LEFT_STD得到所有左对齐的自定义功能 GET_FUNCTIONS_LEFT得到指定的左对齐的指定功能 GET_FUNCTION_LEFT得到所有右对齐的标准功能 GET_FUNCTIONS_REGHT_STD得到所有右对齐的自定义功能 GET_FUNCTIONS_RIGHT得到指定的右对齐的自定义功能 GET_FUNCTION_RIGHT

设置和得到一个功能的信息

你可以检测一个功能在工具条上面是标准功能还是自定义功能

你可以指定如下属性:

� IDALV的标准功能的 ID 是自动创建的。它包括的信息是 ALV标准功能。

自定义功能的编号是你在创建的时候,赋值的。

� GROUP你可以用任何尺度给功能分组

� 在工具条的位置

� 可视化和活动

Page 30: ALV 在 WD4A中使用指南read.pudn.com/downloads570/doc/2342948/ALV For WebDynpro.pdf · 2013-08-30 · 你用 column settings 管理所有的列对象。 Field 设置 (IF_SALV_WD_FIELD_SETTINGS

这些信息,你可以使用类 CL_SALV_WD_FUNCTION 的方法。

功能 方法

得到功能类型 GET_TYPE得到功能编号 GET_ID给功能分组 SET_GROUP得到分组的名字 GET_GROUP

删除功能

你仅仅可以删除用户自定义的功能;你不能删除 ALV的标准功能

为 了 删 除 用 户 定 义 功 能 , 指 定 功 能 的 ID 。 使 用 接 口 类

IF_SALV_WD_FUNCTION_SETTINGS 的方法。

功能 方法

删除用户定义功能 DELETE_FUNCTION

7.2、准备上下文

一些用户自定义功能插入到工具条上,当用户触发的时候,导致数据改变。因此你可以

连接这些功能到你应用的 context node 中。为此,你可以定义个 ALV 的 context node 的

FUNCTION_ELEMENTS 的外部映射。

7.3、定义用户界面元素

你可以使用如下的 UI元素为用户定义功能:

� Button(CL_SALV_WD_FE_BUTTON)� BUTTONCHOICE(CL_SALV_WD_FE_BUTTON_CHOICE)� DROPDOWNBYINDEX(CL_SALV_WD_FE_DROPDOWN_BY_IDX)� DROPDOWNBYKEY(CL_SALV_WD_FE_DROPDOWN_BY_KEY)� INPUTFIELD(CL_SALV_WD_FE_INPUT_FIELD)� LINKTOACTION(CL_SALV_WD_FE_LINK_TO_ACTION)� LINKTOURL(CL_SALV_WD_FE_LINT_TO_URL)� TOGGLEBUTTON(CL_SALV_WD_FE_TOGGLE_BUTTON)� Separator(CL_SALV_WD_FE_SEPARATOR)

指定自定义功能的 UI元素,过程如下:

� 创建功能对象

� 创建一个工具条元素(上述的元素)

� 指定工具条元素的属性

� 给工具条元素赋功能

为了给一个合适的 UI元素给一个功能对象,你使用类 CL_SALV_WD_FUNCTION。功能 函数

得到 UI元素 SET_EDITOR获取 UI元素 GET_EDITOR

7.4、指定在工具条上的位置

你可以使用 2种方式来指定功能的位置:

Page 31: ALV 在 WD4A中使用指南read.pudn.com/downloads570/doc/2342948/ALV For WebDynpro.pdf · 2013-08-30 · 你用 column settings 管理所有的列对象。 Field 设置 (IF_SALV_WD_FIELD_SETTINGS

� 指定在工具条上的对齐方式

你可以指定功能在工具条上是左对齐还是右对齐。

� 指定具体的位置

你可以指定功能在工具条上的具体的位置

如果你是指定的 ALV的标准功能,使用类 CL_SALV_WD_FUNCTION_STD。如果你是指定用户定义的功能,使用类 CL_SALV_WD_FUNCTION。

功能 方法

指定在工具条上对齐方式 SET_ALIGNMENT得到在工具条上对齐方式 GET_ALIGNMENT设置位置 SET_POSITION得到位置 GET_POSITION

7.5、控制可视化和激活状态

无论是否是用户定义的功能,你都可以有以下几种控制方式:

� 你可以去掉一个 UI元素的功能

� 你可以隐藏一个 UI元素

� 你可以使工具条不可用

� 你可以隐藏不可用

激活或不活动功能

如果你不想隐藏 UI元素,当时又不想用户执行它的功能,你可以使 UI元素不活动。

为了激活或不活动为 ALV的标准功能,你可以使用类 CL_SALV_WD_FUNCTION_STD的方法。

为了激活活着不活动用户定义功能,你可以从你的 UI元素类的方法。

功能 方法

能/不能功能对象 SET_ENABLED得到活动状态 GET_ENABLED

显示或隐藏功能

有下列 2种不变的变量是可用的为显示或隐藏功能:

� VISIBILITY_VISIBLE系统显示功能

� VISIBILITY_NONE系统隐藏功能

为ALV的标准功能显示或隐藏UI元素,你可以使用类CL_SALV_WD_FUNCTION_STD的方法。

为用户定义功能显示或隐藏 UI 元素,你可以使用类 CL_SALV_WD_FUNCTION 的方

法。

功能 方法

显示/隐藏功能方法 SET_VISIBILITY得到可见性 GET_VISIBILITY

显示,隐藏和不可用工具条

对 整 个 工 具 条 的 可 见 或 活 动 状 态 , 你 可 以 使 用 接 口 类

Page 32: ALV 在 WD4A中使用指南read.pudn.com/downloads570/doc/2342948/ALV For WebDynpro.pdf · 2013-08-30 · 你用 column settings 管理所有的列对象。 Field 设置 (IF_SALV_WD_FIELD_SETTINGS

IF_SALV_WD_FUNCTION_SETTINGS 的方法。

功能 方法

活动/不活动工具条 SET_ENABLED得到活动状态 GET_ENABLED显示/隐藏工具条 SET_VISIBILITY得到可见性 GET_VISIBILITY

7.6、功能的事件触发

当用户在工具条上选择一个功能的时候,有各种作用发生。

ALV标准功能事件

对于 ALV的标准功能,你只有 2个时间点可以处理事件:当用户执行功能的时候或执

行完的时候。你不能接收到用户是否选择的任何信息。

你可以使用下列 2个事件去处理 ALV的标准功能:

� ON_STD_FUNCTION_BEFO� ON_STD_FUNCTION_AFTE

用户定义功能事件

对于用户定义功能,你可以决定用户选择的功能。

事件 ON_FUNCTION 是自定义功能的处理事件

7.7、提供 ALV标准功能用用户指定的 UI元素(推荐不要使用)

八、交互

ALV不仅仅是用来为用户显示一些数据。用户也可以通过各种方法和 ALV进行交互。

你有如下选择:

� 标准 ALV功能

在设置对话框或工具条,你可以显示或隐藏各种 UI元素。

备注:

ALV支持标准的选择功能:比方说,如果得 ALV没有任何列的值是能够被计算的,

那么对于计算的所有 UI元素就不被显示。

� 用户定义功能

你可以创建 UI元素在工具条上面,用户可以运行你的功能或者 ALV的标准功能。

� 和 AVL交互的 UI元素

你可以在 ALV的表中有交互的 UI元素。有 2种类型的交互:

� 无数据改变的交互

� 有数据改变的交互

对于这些 UI元素的用户处理 action,可以使用各种事件。

8.1、没有数据改变的交互处理

不是所有的用户动作都导致了 ALV得数据改变。比如下列的动作都没有导致数据的改

变:

� 用户选择单行或多行数据,这个主要依赖开发人员的设置

� 如果你用超链接或者按钮当做一个界面元素,你可以为用户提供相关的动作。

Page 33: ALV 在 WD4A中使用指南read.pudn.com/downloads570/doc/2342948/ALV For WebDynpro.pdf · 2013-08-30 · 你用 column settings 管理所有的列对象。 Field 设置 (IF_SALV_WD_FIELD_SETTINGS

你可以定义各种不同的控制来处理交互

8.1.1、定义选择行和列

你可以决定在同一时刻,有多少行或列可以被用户选择。

� 能够选择行

能够用选择状态,你可以指定是否或者多少列能够被用户在同一时刻被选择。

� 能够选择列

使用选择类型,你可以指定是否或多少行能够被选择,以及是否有一个 leadselection 存在。

注意:

在写保护的 ALV的情况下,如果选择行是允许的话,用户也可以改变选择行。

你也可以阻止用户选择 CELL.

设置选择状态

你可以为每一列设置选择状态。你可以使用的状态如下:

� Not selected任何已经选择的被移除。

� Selected列被选择

� Not selectable列不能选择

为了固定选的列,可以使用类 CL_SALV_WD_COLUMN 的方法。

功能 方法

指定选择状态 SET_SELECTION_STATE得到选择状态 GET_SELECTION_STATE

设置选择类型

你可以有下列的选择类型:

� 自动

从 context node 的应用设置而来

� 不能选择(NONE)在一行的开头,没有选择按钮的出现

� 单行(SINGLE)选择按钮显示在一行的开头,用户在同一时刻,只能选择一行。这一行当做 leadselection。这时,如果你选择另外一行,那么 lead selection也改变。

� 单行没有 lead selection(SINGLE_NO_LEAD)选择按钮显示在一行的开头,用户仅仅能偶选择一行在同一时刻,ALV没有 leadselection。

� 多行(MULTI)选择按钮显示在一行的开头。用户通过同时按下 CTRL 和鼠标,可以选择多行。

第一个被选择到的是 lead selection。� 多行没有 lead selection(MULTI_NO_LEAD)

选择按钮显示在一行的开头。用户可以通过 CTRL 键多行选择。ALV 没有 leadselection。

Page 34: ALV 在 WD4A中使用指南read.pudn.com/downloads570/doc/2342948/ALV For WebDynpro.pdf · 2013-08-30 · 你用 column settings 管理所有的列对象。 Field 设置 (IF_SALV_WD_FIELD_SETTINGS

注意:

你使用的 context node 的选择属性指定多少数据能够被选择。

比方说:如果你选择的 SELECTION 是 1..1 的时候,必须有一个数据被选择。如果你使

用的是 0..n,它可以没有选择或者有多行被选择。

使用选择类型,你不能使用比你的 context node 更多的数量被选择。如果你试图这么做,

你将得到一个运行时的异常。

比方说:如果你的SELECTION的设置时1..1,那么你就不能设置你的选择类型为MULTI或 MULTI_NO_LEAD。你可以使用接口类 IF_SALV_WD_TABLE_SETTINGS 的方法。

功能 方法

指定选择类型 SET_SELECTION_MODE得到选择类型 GET_SELECTION_MODE

事件处理

下面有 2种不同的事件在选择的时候可以触发:

� ON_LEAD_SELECT这个应用作用在 lead selection 被用户改变的时候。更多信息可以看系统中

WD_SALV_TABLE的文档。

� ON_SELECT应用作用在 lead selection 改变或者选择改变的时候。

系 统 仅 仅 能 够 使 用 上 述 事 件 的 一 个 。 使 用 方 法

IF_SALV_WD_TABLE_SETTGINGS~SET_ON_SELECTION_ENABLED,你可以使用事件

ON_SELECT,而 ON_LEAD_SELECT 则调用无效。

阻止选择

你可以阻止用户选择 ALV中的行。

和 NONE 的选择类型相比,选择按钮没有被隐藏;它们仅仅是不可用。

你可以决定是否阻止选择行,或者调整。

该功能使用接口类 IF_SALV_WD_TABLE_SETTINGS功能 方法

所有的行都不能选择 SET_ROW_SELECTABLE检查是否所有的行都不能选择 GET_ROW_SELECTABLE不能选择指定的行 SET_ROW_SELECTABLE_FIELDANME得到控制个边行不能选择的字段名 GET_ROW_SELECTABLE_FIELDANME

8.1.2、使用超链接和按钮作为 cell editors你可以把 UI元素放置在 ALV的 CELL 中,来响应用户的触发。下列的 UI元素不能导

致数据的改变:

� 超链接 LINK_TO_ACTION� 超链接 LINK_TO_URL� 按钮

� TOGGLEBUTTON描述 UI元素的类

Page 35: ALV 在 WD4A中使用指南read.pudn.com/downloads570/doc/2342948/ALV For WebDynpro.pdf · 2013-08-30 · 你用 column settings 管理所有的列对象。 Field 设置 (IF_SALV_WD_FIELD_SETTINGS

UI元素 类

LINK_TO_ACTION CL_SALV_WD_UIE_LINK_TO_ACTIONLINK_TO_URL CL_SALV_WD_UIE_LINK_TO_URLBUTTON CL_SALV_WD_UIE_BUTTONTOGGLEBUTTON CL_SALV_WD_UIE_TOGGLE_BUTTON

你可以在系统包 SALV_WD_CONFIG 中找到上述的类。

事件处理

你可以使用 ON_CLICK 事件去处理如下的 UI 元素:

� BUTTON� TOGGLEBUTTON� LINK_TO_ACTION然而,UI元素 LINK_TO_URL 仅仅是一个 URL 的显示,不能 catch 到什么事件。

8.1.3、ALV的活动或不活动

默认的,ALV的输出时活动的。所有的交互 UI 元素,包括工具条和表格,如果 ALV是活动的,它们都是可用得到。

活动或者不活动,使用接口类 IF_SALV_WD_TABLE_SETTINGS 的方法:

功能 方法

活动或者不活动 ALV SET_ENABLED检查 ALV是否 GET_ENABLED

8.2、可编辑 ALV的交互

默认情况下,ALV是以只读的方式输出的。为了让用户可以改变或者输入新的数据,

那么你必须对标准设置做修改。

过程:

1、在这些功能被使用之前,ALV的写保护必须被去掉。

2、默认情况下,ALV 用 TEXTVIEW当做 CELL EDITOR 的显示。为了使用户可以输

入或者修改数据,要使用可以交互的界面元素代替,比如 INPUTFIELD。3、用户在某个位置添加一行,附加它们到 ALV的最后,删除它们

4、可以添加一整页的空行,不但可以使单行,也可以是多行。

5、你必须定义系统检查的时间点,检查数据修改是否正确。

6、如果用户修改或者创建新的数据,数据可以被刷新,或者你仅仅刷新部分数据而不

是整个 ALV.

8.2.1、ALV控制写-保护

你可以用允许改变数据的 UI元素充当 ALV的数据。然而 ALV默认的输出时写保护的。

你首先要去掉写保护。如果你去掉了写保护,有如下影响:

� UI元素(CELL)的数据可以被改变

� 添加,附加和删除行以及检查数据改变的按钮在工具条上面显示。

备注:

如果为 ALV去掉了写保护,系统就使用特定的颜色输出到 ALV上。你不能改变这些颜

色。你所指定的颜色被重写。

Page 36: ALV 在 WD4A中使用指南read.pudn.com/downloads570/doc/2342948/ALV For WebDynpro.pdf · 2013-08-30 · 你用 column settings 管理所有的列对象。 Field 设置 (IF_SALV_WD_FIELD_SETTINGS

为了切换写保护的开关,你可以使用接口类 IF_SALV_WD_TABLE_SETTINGS 的方法。

功能 方法

切换写保护的开关 SET_READ_ONLY检查写保护的开关 GET_READ_ONLY

过程

移除写保护

1、得到 ALV的配置模型

2、移除写保护,如下代码:

Lv_value->if_salv-wd_table_settings~set-read_only( abap_false ).

8.2.2、改变 CELL编辑

作为标准,ALV用来显示 CELL EDITOR 的通常是不准备输入的,比如 TEXTVIEW。

如果你想让 ALV 变成可以输入的,你就必须用可输入的界面元素来代替这些 CELLEDITOR。

� INPUTFIELD� CHECKBOX� TOGGLEBUTTON� TRISTATECHECKBOX� DROPDOWNBYKEY

这些元素的类

UI元素 类

INPUTFIELD CL_SALV_WD_UIE_INPUT_FIELDCHECKBOX CL_SALV_WD_UIE_INPUT_CHECKBOXTOGGLEBUTTON CL_SALV_WD_UIE_INPUT_TOGGLE_BUT

TONTRISTATECHECKBOX CL_SALV_WD_UIE_CHECKBOX_TRIDROPDOWNBYKEY CL_SALV_WD_UIE_DROPDOWN_BY_KE

Y你可以在系统包 SALV_WD_CONFIG 中找到这些类。

过程

1、初始化 ALV配置模型

2、添加代码

8.2..3、可添加删除行

你可以提供用户按钮在工具条上,让用户可以添加和删除数据记录。当你在 ALV移除

Page 37: ALV 在 WD4A中使用指南read.pudn.com/downloads570/doc/2342948/ALV For WebDynpro.pdf · 2013-08-30 · 你用 column settings 管理所有的列对象。 Field 设置 (IF_SALV_WD_FIELD_SETTINGS

写保护的时候,这些功能被激活。

你可以得到如下功能:

� Insert row如果用户没有选择一行,新的一行就在第一行。否则,它就创建在选择行的前面。

� Append row新的一行添加在 ALV的最后一行,无论是否有行被选择。

� Delete row选择的行被选择。

用户能够插入或者删除多少行在同一时刻,依赖于有多少行被选择。你可以可以定义用

户在同一时刻有多少行可以被选择。

备注:

如果你选择的选择类型是不能选择,那么用户不能选择任何行。那么插入和删除的按钮

就被隐藏。

事件处理

事件 ON_DATE_CHECK 的参数包括有插入或删除行的索引。

8.2.4、添加整页的行输入

你可以切换 ALV到巨量数据模式。因此,你可以自动创建一个空页,输入的行在 ALV的末端。用户不必一个个的行插入,而可以整页的插入。

为了切换 ALV的数据模型,可以使用接口类 IF_SALV_WD_TABLE_SETTINGS。功能 方法

激活或不能使用巨量数据模式 SET_EDIT_MODE检查数据的模式 GET_EDIT_MODE

过程

1、得到 ALV的配置模型

2、激活巨量数据模型

3、如果你想在新的行显示初始值,你可以使用方法:

8.2.5、指定检查时点

在可编辑的 ALV中,用户可以修改添加或删除行。这些改变仅仅是初始存储在 ALV的

上下文中。在预先设置的时间,系统从 ALV的 context 传输到你的应用的 context,以及检

查数据类型是否正确。这就确保正确的数据应用到后续的动作上。

你可以指定时刻让正确的数据保存到你的应用中:

� 当用户输入回车按钮或者触发系统动作(DATA_CHECK_ON_CELL_EVENT)。� 用户选择检查(DATA_CHECK_ON_CHECK_EVENT)。

Page 38: ALV 在 WD4A中使用指南read.pudn.com/downloads570/doc/2342948/ALV For WebDynpro.pdf · 2013-08-30 · 你用 column settings 管理所有的列对象。 Field 设置 (IF_SALV_WD_FIELD_SETTINGS

� 当你触发系统的检查点(DATA_CHECK)。

由用户指定检查时刻

指定那些用户的动作被数据检查,可以使用接口类 IF_SALV_WD_TABLE_SETTINGS。功能 方法

设置时间 SET_DATA_CHECK得到时间 GET_DATA_CHECK

事件处理

当数据被检查的时候,事件 ON_DATA_CHECK被触发。

8.2.6、刷新显示

默认情况下,数据更新后,ALV 立即刷新。在列表中的数据时被更新以及设置对话框

中的设置被应用,这个结果可不能被影响。

自动刷新

系统自动更新显示和应用设置对话框设置在下列的机制下。你不能改变这些机制:

� 用户插入行,添加或删除。

� 应用修改数据

� 用户从新设置了设置对话框,并且点击了 OK� 排序 ALV.

手工刷新

当用户修改了数据的时候,或当前的设置修改的时候,你可以控制仅仅刷新影响的数据,

有 2个方法可以做到这点,每种都有 2种设置:

� SET_REFRESH_ON_DATE_CHANGE当用户改变数据或者按下回车键后,控件刷新。

� SET_REFRESH_ON_DATE_CHECK用户改变数据以及选择检查的时候,控件刷新。

下面的值是可用使用的:

� REFRESH_AND_APPLY_SERVICES数据被更新;设置对话框被从新设置

� REFRESH_DATA_ONLY数据被更新。

你可以根据组合得到各种影响:

� 完整刷新

� 这个设置时默认设置

8.3、拖拽

九、给用户提供帮助(省略)

十、部分功能使用的例子 ZDEV04_TEST_ALV_UI十一、练习:简易 BBS 系统

练习目的:综合使用 WD 的各个主要方面的技术,重点练习 ALV的使用方法。

功能需求:1、用户登录

应用系统记录当前的登录人员,为简单处理,可以不判断用户密码正确性。

2、用户发帖

Page 39: ALV 在 WD4A中使用指南read.pudn.com/downloads570/doc/2342948/ALV For WebDynpro.pdf · 2013-08-30 · 你用 column settings 管理所有的列对象。 Field 设置 (IF_SALV_WD_FIELD_SETTINGS

记录用户的标题,内容,提交用户,提交时间

3、用户回帖

记录用户回帖内容,提交用户,提交时间

4、浏览帖子

和普通 BBS 显示形式一致。

要求:帖子的浏览用 ALV显示,点击帖子(用超链接方式),可以进入帖子内容。帖子的内

容用 ALV的方式显示,该 ALV有 2列,左边一列显示回帖人名字和回帖事件,右边一列显

示回帖的内容。在页面的最下方,有回帖区。