SAP WebDynpro开发 创建一个WebDynpro程序实现两个页面简单跳转

1.运行Tcode:SE80,选择Web Dynpro组件/接口,输入对象名

 

2.输入描述

 

3.创建完成

 

4.创建两个视图:START AND RESULT

 

5.在 START 视图的 layout 页签,ROOTUIELEMENTCONTAINER中添加 label , input和button:

    

 

6.在 label 的属性中添加如下:

 

7.在 button 的属性中添加如下,主要是 onaction 事件。

 

8.在 inbound plugs表中添加如下(outbound plugs上一步onaction事件时有设置了一个)

  

 

9.创建START 视图的CONTEXT

    

 

10.将 input 值和 name 绑定:
解释:CONTEXT须和VIEWS上的某些控件的特定属性绑定,这样当我们改变了CONTEXT的某个节点的数据,那么相应控件的值也会跟着改变,比如这个我们创建了CONTEXT的一个节点下的NAME字段用于存放和绑定INPUT BOX里面的VALUE属性。

 

11.在 RESULT 视图,添加 text_view和button。

  

button属性设置如下

 

12.在 RESULT 视图的 context 中添加如下 node 和 attribute :

 

13.将 TEXT_VIEW_RE 的 text 属性和 name 绑定

 

14.在RESULT视图的 inbound plugs中添加如下:

  

 

15.在 COMPONENTCONTROLLER中添加 main node 和 name attribute,将 start view和result view 中的 main和 COMPONENTCONTROLLER中的 main 绑定。
解释:建立CONPONENT CONTROLLER中的CONTEXT节点并且和VIEW CONTEXT相应节点映射,这样就相当于把全局变量和局部变量相关联

成功映射

 

16.在 result 的 Methods页签WDDOMODIFYVIEW 中添加以下代码:

  DATA lo_nd_main TYPE REF TO if_wd_context_node.
  DATA lo_el_main TYPE REF TO if_wd_context_element.
*  DATA ls_main TYPE wd_this->element_main.   "应该为:element_result01
  DATA lv_name TYPE string.  "wd_this->element_main-name.   "应该为element_result01-name

* navigate from <CONTEXT> to <MAIN> via lead selection
  lo_nd_main = wd_context->get_child_node( name = 'RESULT01'  "wd_this->wdctx_main "应该为:wdctx_result01
  ).
* @TODO handle non existant child
* IF lo_nd_main IS INITIAL.
* ENDIF.
* get element via lead selection
  lo_el_main = lo_nd_main->get_element( ).
* @TODO handle not set lead selection
  IF lo_el_main IS INITIAL .
    BREAK-POINT.
  ENDIF .

* get single attribute
  lo_el_main->get_attribute(
    EXPORTING
      name = 'NAME'
    IMPORTING
      value = lv_name ).
  CONCATENATE 'welcome to wda,' lv_name INTO lv_name SEPARATED BY space.
  lo_el_main->set_attribute(
    EXPORTING
      name = 'NAME'
      value = lv_name
  ).

解释一下如上代码注释的部分数据,见如下两图框框

 

17.在 ONACTIONBACK 中添加以下代码:

  DATA lo_nd_main TYPE REF TO if_wd_context_node.
  DATA lo_el_main TYPE REF TO if_wd_context_element.
  DATA lv_name TYPE string.

* navigate from <CONTEXT> to <MAIN> via lead selection
  lo_nd_main = wd_context->get_child_node( name = 'RESULT01' ).
* @TODO handle non existant child
* IF lo_nd_main IS INITIAL.
* ENDIF.
* get element via lead selection
  lo_el_main = lo_nd_main->get_element( ).
* @TODO handle not set lead selection
  IF lo_el_main IS INITIAL .
  ENDIF .

* get single attribute
  lo_el_main->get_attribute(
    EXPORTING
      name = `NAME`
    IMPORTING
      value = lv_name ).

  CLEAR lv_name.
  lo_el_main->set_attribute(
    EXPORTING
      name = 'NAME'
      value = lv_name
    ).

  wd_this->fire_tostart_plg(
  ).

 

18.将 result 和 start view 拖到窗口,创建双向导航链接。
解释:建立VIEWS之间的导航,我们需要分别在不同的VIEWS里面插入相应的OUTBOUND 和INBOUND PLUG,并最终在WINDOWS里面建立他们的NAVIGATION LINK。

设置完成就是如此(如下时RESULT的设置)

 

19.将SATART VIEW设为缺省(默认第一屏)

 

20.创建 web dynpro application进行测试,搞定。

 

posted on 2022-02-25 16:36  seven1314pp  阅读(968)  评论(0)    收藏  举报