3. Web Dynpro for ABAP 之 Web Dynpro Window & Web Dynpro Program (载PDF)

                       

 

3. Web Dynpro for ABAP

Web Dynpro Window& Web Dynpro Application

           

 

Web Dynpro Window

   上两节的简单的应用程序例子只包含了一个view在一个web dynpro 部件(component)中。本文中开始将介绍一个包含通过导航链接的2view的程序。本节和下节将介绍一个部件里面的两个views之间的通讯。

        每个Web dynpro部件包含至少一个web dynpro 窗体(web dynpro window)。当web 程序嵌入到了窗体中,所有的views将被显示出来。窗体通过abap工作台的窗体编辑器(window editor)编辑。所需要的导航在窗体里面单独的views能够被创建起来。

           

    Web Dynpro窗体包括了所有被显示的窗体的结构,也是通过接口view连接到Web Dynpro程序的。

        

         Web Dynpro窗体的高级功能(Advanced Functions of Web Dynpro Windows)

    Window Controller and Window Plugs

每个Web Dynpro窗体包含一个控制器,这个控制器包含context, methodsoutbound plugsinbound plugs。我们可以用插件建立交叉部件(cross-component)的导航。

在一个简单的程序中,导航的起始点是从启动一个View开始的。它是在设计的时候创建的。通过窗体树的context菜单已经在窗体编辑器创建。在一个比较复杂的程序中,用到的inbound plug的事件处理器方法能够动态的判断哪个view首先被显示出来。

 

 

   Interface View

         每个window会自动创建出一个带有独自名字的接口名字。它定义了windows的交叉部件接口。当接口标识设置后,WindowInbound plugsoutbound plugs会被拷贝到对应的接口view.window中,事件处理都自动实现了。接口view的插件(plugs)能够用来做交叉部件导航。Inbound plugs用来连接到Web Dynpro应用。

 

 

 

 

两个Views之间的交互(Navigation Between Two Views)

         在一个window里面的views通过导航(navigation links)能够被互相连接。当用户调用了个Web Dynpro程序,在屏幕上首先出来的是起始view. 我们可以触发一个特殊的动作,例如点击按钮从而触发导航(navigation). 按顺序,现在在屏幕上出现的vIew消失,第二个view在屏幕上显示出来。

    为了在两个views之间建立导航,必须为第一个view创建inbound plugs和另一个view创建outbound plug. Plug总是访问一个view和从一个view退出的连接点。

        

Outbound plugsinbound plugs有不同的属性。

 

Outbound Plugs

         Outbound plugs总是下一个导航的开始。他们可以在View controller的任何方法中被调用,如下:

    WD_THIS->FIRE_MY_OUTBOUND_PLG().

WD_THIS属性总是View controller的接口IF_<MY_VIEW>的自引用。每次我们为这个view创建一个outbound plug. 方法FIRE_<MY_OUTBOUND_PLUG>_PLG将被加到这个接口。

提示:如果我们为View_1创建了out1,out2,out3三个outbound plugs,在接口IF_VIEW_1里面就会相应的创建出FIRE_OUT1_PLG, FIRE_OUT2_PLGFIRE_OUT3_PLG三个方法对应创建。

    注意:outbound plug属于viewcontroller,不会包含引起导向目标的信息。他要连接到的下一个viewinbound plug是通过在窗体布局中创建导航链接实现的。

   

 

传输参数(Passing Parameters)

         通过调用方法FIRE_<MY_OUTBOUND>传输参数。通过在参数表的‘Outbound Plugs’页签输入。

 

         下面的例子,参数Editable被添加到了方法体FIRE_<MY_OUTBOUND>_PLG中。参数类型WDY_BOOLEAN的取值为X(true)或者space(false),所以方法调用可以写成:

 WD_THIS->FIRE_MY_OUTBOUND_PLG(EDITABLE = ‘X’ ).

 或者

WD_THIS->FIRE_MY_OUTBOUND_PLG(EDITABLE = ‘X’ ).

 

 Inbound Plugs

Web Dynpro windowinbound plugs总是被先前创建的连接直接调用。这个先前创建的连接起源于outbound plug. 当一个inbound plug被调用时,和这个inbound plug唯一相关联的事件处理方法被调用,这个方法是在inbound plug创建起来的时候被view controller自动创建起来的。此方法在‘Methods’页签中。通常命名规则为HANDLEMY_INBOUND_PLUG:

帮助:当有一个inbound plug IN1,则有一个对应的事件处理方法HANDLEIN1被创建。

 

事件处理方法刚开始是空的,可以通过让程序员写入代码实现功能,从技术角度看,这个事件处理方法和其他的没有什么不同之处。

 

Evaluating Parameters

   Inbound plug的事件处理方法可以从outbound plug的事件处理方法FIRE_<MY_OUTBOUND>_PLG中接受参数。同样名字的参数需要添加到inbound plug的事件处理方法上。

提示:如果参数EDITABLE通过outbound plug传输过来,参数editable必须添加到事件方法签名,分配给inbound plug读取。

这个参数就会被事件处理方法知晓,并且能够读取。

      注意:inbound plug的事件处理器用来处理新的view的新增的信息。不是用来传输应用数据和调用应用逻辑。

 

Example for Navigation with Parameter Transfer

         第一个view, outbound plugaction的事件处理器中被调用,并且传输参数Editable = ‘X’. 则下一个通过navigation link被连接的view包含一个能够被编辑的元素,因为传输过来的Editable的值为’X’.

 

在第一个view的事件处理器中调用outbound plug OUT

         viewoutbound plug ‘ out’被创建的同时, 类型为WDY_BOOLEAN的参数EDITABLE同时被创建。在运行时通过下面的方法传输参数EDITABLE的值。

         WD_THIS->FIRE_OUT_PLG( EDITABLE = ‘X’ ).

 

在第二个viewInbound  Plug  IN 的事件处理HANDLEIN 中使用参数

         每个UI元素包含’enable’ 属性,这个参数能够把这个元素的功能设置为可用和关闭状态。在view设计的属性表中,这个元素的这个属性没有被选中,这个元素虽然仍会显示在屏幕中,但是输入,选择,做其他任何的用户交互是不可用的。因为这个元素的属性是不可用状态(新加的UI元素的这个属性默认设置是可用的)。程序员可以在运行时有两种选择去指定UI元素的这个行为:

 

 

view设计器中,enabled 属性能够在设计的时候通过属性表设置中点击复选框静态的指定。当相应的view被调用时,UI 元素总是保持设计时的属性不变。

Enbaled属性也可以通过绑定到context节点上的包含的类型WDY_BOOLEAN的值上。这个值在运行时传输。所以这个UI元素对于所有的函数可用,或者只可以显示,取决于在程序中的指定。

 

下面的例子中,将演示第二种情况:

第二个viewcontext包含的节点除了应用数据外,还有一个节点用来为这个view的一个或者多个UI元素指定’enabled’属性值。此例中,节点名字叫做’STATUS’, 并且包含了一个类型为WDY_BOOLEAN的属性ENABLED.这个值的设置是通过第二个view事件处理方法 HANDLEIN来实现的。

         Method HANDEIN.

                   Data: l_context_node type ref to if_wd_context_node.

        L_context_noe = wd_context->get_child_node(‘STATUS’).

        L_context_node->set_attribute( name = ‘ENABLE’ value = EDITABLE ).

    Endmethod.

    传过来的参数变量值用来指定context节点的属性, 接口的方法IF_WD_CONTEXT_NODE用在了事件处理方法中。这种情况下,SET_ATTRIBUTE方法被调用,属性ENABLED设置成值EDITABLE.

 现在context节点的ENABLED属性被设置成’X’,这个值是通过先前的view的方法WD_THIS->FIRE_OUT_PLG(EDITABLE = ‘X’)传输过来的。

 

结果(Result

         如果属性’ENABLED’的属性值设置为’X’,含有enabled  属性并且绑定到了属性EANBLED UI 元素的所有功能都可以使用。当FIRE_OUT_PLG传输了参数 ’ ’,接下来的viewinbound plug的事件处理的属性ENABLED同样设置为值’ ’, UI元素的只是显示在屏幕上,他们的功能均不能够使用。

 

 

 

 

 

 

 

 

 

 

Web Dynpro Application

Window的另一个非常重要的工作就是建立view组结构和URL之间的关联,其中这个URL可以被用户调用。Window同时也是通过Web dynpro应用程序被用户调用的单位。通常,同一时间只有一个view显示在屏幕上。最简单的例子,Web Dynpro应用程序调用指定的view作为window里面起始的默认view。用户可以从第一个view导航进去下一个view

Web Dynpro应用程序在ABAP工作台的对象列表中是个独立的对象。

Web Dynpro窗体和Web Dynpro应用程序之间的连接是建立在window的接口view上的.准确的说,一个interface view是自动分配给一个部件的每个window,默认的,这个接口view包含了个默认的plug.

   我们可以通过abap工作台显示每个接口view.

   接口view不仅仅连接应用程序和window,他们的plugs还有许多功能。作为component接口的一部分,他们同样也用来进行多个components之间的交流。

   接口view (interface view)

 

 

 

 

 

 

 

 

 

 

 

 

 

接下来介绍:

4. Web Dynpro for ABAPURL of a Web Dynpro Application

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted on 2011-04-20 16:36  rlwang  阅读(2251)  评论(1编辑  收藏  举报