理论教育 如何用外部Context映射提供ALV输出所需的供应数据?

如何用外部Context映射提供ALV输出所需的供应数据?

时间:2023-05-31 理论教育 版权反馈
【摘要】:要提供想要的数据用来ALV输出,可以执行以下3个步骤。最简单的方式是使用外部Context映射将数据传输到数据Context节点。默认情况下,ALV组件使用引用的数据,通过各种机制对数据进行过滤器,计算和其他标准的ALV功能,改变ALV输出,然后显示在屏幕上。一旦内部数据表已经重新排序,则ALV重建Context节点,再次释放它的应用程序,并显示相应的数据。

如何用外部Context映射提供ALV输出所需的供应数据?

要提供想要的数据用来ALV输出,可以执行以下3个步骤。

1)内部数据表:定义一个内部表。

2)Context节点:在应用程序中定义一个合适的Context节点及其属性。

3)将数据传输到ALV组件:可以为ALV组件定义Context节点。

1.内部数据表

内部数据表中的数据必须是扁平结构、可用的。这是唯一的先决条件。做到这一点最简单的方法是使用现有的DDIC结构。

2.Context节点

ALV组件需要一个Context节点用于存储内部数据表中的数据。该Context节点具有以下属性:

● 它的基数为0.. N。

● 它仅包含属性没有子节点:对应于内部数据表中的每一列,需创建一个相同名称和数

据类型的属性。

● 所有的属性都是静态的,不是动态的。

如果内部数据表是基于一个DDIC结构,则使用其创建Context节点及其属性是最简单的方法。

内部数据表中的数据传输到应用程序Context节点,即该节点到数据表的连接。要做到这一点,使用方法BIND_TABLE,如在控制器的供给方法中使用。

3.将数据传送到ALV组件

在前面的步骤中,创建了ALV输出用的Context节点。现在,必须把这个传送到ALV组件。可以通过以下方式来做到这一点:

● 使用外部Context映射。

● 使用方法SET_DATA。

注:因为程序员可能定义了不同的组件使用的各种不同的组件(或不同的ALV组件),所以必须指定确切的ALV组件使用,其Context节点的数据包含Context映射。

(1)外部Context映射

ALV组件包含一个单独的名为DATA的Context节点。该节点包含ALV输出的结构和数据,能够满足显示所需的输出。最简单的方式是使用外部Context映射将数据传输到数据Context节点。

(2)方法SET_DATA

通过使用SET_DATA方法(引用类型IF_WD_CONTEXT_NODE)也可以将数据传送到ALV组件的Context节点。可以这样做,如在WDDOINIT方法调用该方法。

注:如果要以另一结构在稍后进行ALV输出时,也可以使用方法SET_DATA。然而,在这种情况下,不能在方法WDDOINIT或其他标准方法中使用该方法。如果ALV输出已经显示一次,则只有在ALV组件的事件处理程序中定义该数据(调用SET_DATA方法)。

方法SET_DATA总是删除可能存在的任何的ALV配置模型。如果想配置ALV的输出,一旦SET_DATA方法被调用,则程序员必须重新得到ALV配置模型。

(3)在ALV 组件中使用数据(www.daowen.com)

在ALV组件的Context中,Context节点的DATA仅包含应用程序相应的Context节点的引用。这反过来是内部数据表的一个引用。

默认情况下,ALV组件使用引用的数据,通过各种机制对数据进行过滤器,计算和其他标准的ALV功能,改变ALV输出,然后显示在屏幕上。

(4)重要的例外:排序(Sorting)

这里ALV使用整个数据集的数据,所以记录可以重新排序。为此,ALV组件暂时控制内部数据表,在此期间,应用程序相应的Context节点失效。这确保了应用程序不能访问Context节点,而编辑ALV组件内部数据表的数据。

一旦内部数据表已经重新排序,则ALV重建Context节点,再次释放它的应用程序,并显示相应的数据。

注:这样做确保了内部数据表中的数据从来没有被复制。这是很重要的,因为大量的数据将大大影响性能和内存空间。

当程序员设计应用程序时,请注意这一机制的副作用:

● 当Context节点失效时,当前选择的信息,特别是lead selection选择的信息将丢失。

● 如果应用程序Context节点中有子节点(master-detail方案),则当ALV组件Context

节点失效时这些子节点信息也将丢失。如果应用程序试图访问子节点,则运行时发生

错误。 6.1.3 使用ALV视图

ALV组件中包含以下视图,可以根据需要使用相关视图:

1)表格视图。表视格图是ALV的中央视图。要显示ALV的输出,就需要这个视图。

注:表UI元素所在视图显示在ALV输出的容器中。这是ALV组件的一个基本组成部分因此ALV的布局不能改变。

2)服务视图。

该视图中包含“设置”对话框,用户可以更改列显示的设置、排序、筛选等。

默认情况下,当用户选择工具栏上的“设置”超链接时,对话框在ALV输出上面弹出。如果想在屏幕上的其他地方显示对话框,则也可以使用该视图。

如果想在应用程序中显示ALV输出,则需要表格视图。

可以将表格视图以不同的方式插入到应用程序中:

● 将其直接插入应用程序的窗体中。在这种情况下,不能在屏幕上显示任何其他元素,

除了ALV输出。

● 将其插入到应用程序中的视图集(Web Dynpro Java的概念)的单元格

● 在视图需要的位置创建一个类型为ViewContainerUIElement的UI元素,然后将ALV

表格插入这个UI元素中。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈