要提供想要的数据用来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元素中。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。