2008-06-18

web dynpro for abap基础知识(1)

空闲在家开始学习sap课程NET310 abap web dynpro。想学这个课程是因为Alex说,现在对web dynpro for abap的需求会越来越大。想到到他搞sap已经十几年了,先相信他这一判断。

这个课程以BC400和BC401(abap objects)为基础。BC400没有完整的学过,BC401也没学过。看了前几个单元,先纸上谈兵一番,总结一下关于wda(web dynpro for abap)的基础知识。

web dynpro for abap采用了MVC的设计方法。一个web dynpro component包括window,views和component controller。window和view主要和UI有关。windows只是一种容器,在一个component内一个window可以包含任意多个view,而component controller只有一个。如果一个component不需要view,那么windows也就相应无需存在了。

一个web dynpro component可以与一个URL关联,通过浏览器来访问,或者作为另一个web dynpro component的sub-component供调用。

web dynpro component的controller分为四类:

component controller:这种类型的controller在一个web dynpro component内只存在一个,并且没有visual interface。

custom controller:这类controller是可选的,用于封装component controller的sub-function。

view controller:每一个view都有一个对应的view controller,负责与视图有关的逻辑,如检查用户的输入和处理user action。

window controller:一个window内只存在一个window controller,用于通过inbound plugs传递数据。

web dynpro 中有两个常提到的概念是context mappingdata binding。每个controller内部都会有一个context,用于存储controller所用的数据。context mapping提供了一种机制,供不同的controller之间交换数据。context mapping分为internal和extern两种。如果同一个component内的不同controller之间共享数据,这被成为internal context mapping;共享数据的controller不在同一个component之内,这被称为extern context mapping。要注意的是view controller一类不能作为context mapping的源,否则就违背了MVC的设计原则。data binding为数据在contex和UI元素之间自动(双向)传递提供支持。

接下来再看看context这个东西。context是一个包含node和attribute的结构。每个context都有一个默认的root node,这个root node不能被修改或删除。一个node可以包含子元素(node和attribute),而attribute只能依附于其他node或context root node而存在。在同一个context内,每个node的名字必须是唯一的。一个node连同其子元素被合称为一个element。

context中的每个node都有两个重要的property:

cardinality:这个属性给出了当前node collection在运行时(runtime)包含的元素数目的最小值和最大值。这个属性的取值包括0..1(仅允许0或1个元素),0..n(允许0或更多元素),1..1(仅允许一个元素),1..n(允许一个或多个元素)。

singleton:这个属性决定了子节点在实例化时是singleton还是不是singleton,因此它的值就是布尔值。在课程中在讲singleton时还提到了supply function,两者常在一起使用以实现lazy data instantiation。比如在加载一个包含多行的表时,每一行包含的更详细数据不会被首先加载,而只有在用户选中并查特定行时,与该行相关的数据在会被读取。

没有评论:

发表评论