之前写了不少的东西,其实大多数都是给自己看的,我的习惯是把资料放到网上,用的时候直接看博客。

之前硬盘轻轻摔了一下,几年的资料没了,然后就再也不用硬盘了。

昨天有人突然问我关于WDA的问题,毕竟奇怪,这年头竟然还有来学WDA的。。。闲着也是闲着,那就做几个小例子,服务大众吧。

一,本篇分两小部分,先说用NODE节点做查询条件的,再说用SELECT-OPTION做查询条件的。

1.新建WDA组件:ZLYWDA01.

选择Web Dynpro Comp./Intf.

 

WDA SEARCH step by step

 

 

 输入WDA组件名称ZLYWDA01,回车。

这时会弹出提示框:选择YES

WDA SEARCH step by step

 

 

 填写完整组件的描述和初始组件建立的视图和窗口。(这里我修改了窗口名称W_MAIN,视图名称V_MAIN。。这是我自己的命名规范,可随意)

WDA SEARCH step by step

 

 

 回车创建,这时候组件还是未激活状态,右键,激活。

WDA SEARCH step by step

 

 

 

2.新建NODE节点

前面说了,先做node节点的查询,所以我们这里要建NODE节点了,再建之前,先说一下怎么建。

WDA SEARCH step by step

 

 

 正常来说,这三个地方都可能会建NODE,但是NODE作用的范围不同。

COMPONENTCONTROLLER可以理解为全局,这里定义的NODE,在整个程序中的任何位置都可以用,也如果创建的时候勾选了接口节点,别的程序引用到这个程序的时候,也是可以用接口节点的。

VIEW 里建的节点智能当前视图使用,一般也不会做其他引用。

WINDOW里建的节点只能当前窗口使用,这里一般不建议用,一般窗口只做展示可数据预处理,不做NODE节点控制。

 

所以呢,这里就先在视图中建一个查询用的字段节点:

双击视图V_MAIN,选择视图的Context节点页签,右键新建节点:

WDA SEARCH step by step

 

 

输入节点(NODE)名称 ,下面的信息默认,

 

WDA SEARCH step by step

 

 

 

右键节点,添加属性,这里就建单的添加两个做测试。

WDA SEARCH step by step

 

添加第一个搜索字段,object

 

 WDA SEARCH step by step

 

添加第二个搜索字段:process_type

 

 WDA SEARCH step by step

 

 

 

2.新建布局。

查询节点创建完之后,点到layout布局页签

在做页面设计之前,先在脑海里有个整体的概念,要设计成什么样的。

我们这里只是做建单的查询和结果显示,所以就设计两块:查询和结果。

新建tray做查询块和结果块。并添加折叠块说明描述。

WDA SEARCH step by step

 

 

 WDA SEARCH step by step

 

 

 WDA SEARCH step by step

 

 

 WDA SEARCH step by step

 

 

 3.将node字段添加到SEARCH块中。(一种是单独建label和input字段,另一种就是直接全部引入进来)这里用后者

WDA SEARCH step by step

 

 

 WDA SEARCH step by step

 

 

 WDA SEARCH step by step

 

 

 带回来布局里的效果如下:

WDA SEARCH step by step

 

 

 如上图,SEARCH这个TRAY的layout属性是默认的布局,FlowLayout,横列的。

这个样式不够好看,我们给改成MatrixLayout

WDA SEARCH step by step

 

 

 为了好看,我们将第二个查询字段设置到第二列:

WDA SEARCH step by step

 

 

 这里的布局MatrixLayout,是以MatrixHeadData为行开头,MatrixData跟在后面排成一行,直到下一个headdata重启一行。

字段是以从上到下顺序分布的,如果要调节字段位置,需要上下移动字段和label的位置。再结合行列开始标记就差不多了。

效果如下:

WDA SEARCH step by step

 

 

到这里,查询节点和布局已经完成了,下面做结果节点。

WDA SEARCH step by step

 

 

 如果是直接参考某个数据库字典 结构或者表,可以直接再创建节点中的字典结构中添加对应的表或者结构。

同SEARCH一样,添加查询结果字段。

这里就只添加几个做测试例子。

WDA SEARCH step by step

 

 

 

回到layout中,在查询结果块中添加table控件。

WDA SEARCH step by step

 

 

 WDA SEARCH step by step

 

 

 绑定NODE到表控件:

WDA SEARCH step by step

 

 

 右键,创建绑定:

WDA SEARCH step by step

 

选择ITAB节点。

 

 WDA SEARCH step by step

 

 

 

 保存,效果如下:

WDA SEARCH step by step

 

 

 

现在查询和结果都有了,下面就开始做查询操作。

在SEARCH块中添加查询按钮。

WDA SEARCH step by step

 

 

 WDA SEARCH step by step

 

 

 创建查询事件:

WDA SEARCH step by step

 

 

 WDA SEARCH step by step

 

 

 

 到查询方法中添加代码:

WDA SEARCH step by step

 

 

 

METHOD onactionsearch .
  DATA lo_nd_search TYPE REF TO if_wd_context_node.
  DATA lo_el_search TYPE REF TO if_wd_context_element.
  DATA ls_search TYPE wd_this->element_search.

  DATA lo_nd_itab TYPE REF TO if_wd_context_node.
  DATA lt_itab TYPE wd_this->elements_itab.
  "取查询节点
*   navigate from <CONTEXT> to <SEARCH> via lead selection
  lo_nd_search = wd_context->get_child_node( name = wd_this->wdctx_search ).
*   get element via lead selection
  lo_el_search = lo_nd_search->get_element( ).
*   @TODO handle not set lead selection
  IF lo_el_search IS INITIAL.
*   get all declared attributes
    lo_el_search->get_static_attributes(
      IMPORTING
        static_attributes = ls_search ).
  ENDIF.

  "查询逻辑处理

  SELECT object_id process_type posting_date sales_org stat_user INTO TABLE lt_itab FROM zhsb_order_index UP TO 10 ROWS.


  "赋值结果节点

* navigate from <CONTEXT> to <ITAB> via lead selection
  lo_nd_itab = wd_context->get_child_node( name = wd_this->wdctx_itab ).
  lo_nd_itab->bind_table( new_items = lt_itab set_initial_elements = abap_true ).

ENDMETHOD.

 

如果用这种方式,需要定义range表,然后挨个判断界面是否有输入,然后再把值填到range表中,最后用range表查询。这里就不做处理了。

 

 

 

好了,右键组件,新建应用程序来测试看看。

WDA SEARCH step by step

 

属性名称

 

 WDA SEARCH step by step

 

 

 点击保存,复制URL测试或者右键应用程序测试;

WDA SEARCH step by step

 

 

 

 

效果如下:

WDA SEARCH step by step

 

给下拉框初始化。

添加init_drop方法:

WDA SEARCH step by step

 

 

METHOD init_dorp .
  DATA lo_nd_search TYPE REF TO if_wd_context_node.
  DATA l_node_info TYPE REF TO if_wd_context_node_info.
  DATA: lt_value_set TYPE  zcrm_tabtyp_wdy_key,
        ls_value_set TYPE wdy_key_value.
  "查询单据类型和文本,对应到下拉的key 和VALUE
  SELECT process_type AS key p_description_20 AS value INTO TABLE lt_value_set
    FROM crmc_proc_type_t WHERE process_type BETWEEN 'ZSV1' AND 'ZSV3' AND langu = sy-langu.

*获取下拉节点
  lo_nd_search = wd_context->get_child_node( name = wd_this->wdctx_search ).
  "获取下拉节点属性
  l_node_info = lo_nd_search->get_node_info( ).
  "下拉节点赋值
  l_node_info->set_attribute_value_set( name = 'PROCESS_TYPE' value_set = lt_value_set ).


ENDMETHOD.

 

最后将init_dorp方法在视图init里调用:

WDA SEARCH step by step

 

 效果如下:

WDA SEARCH step by step

 

相关文章:

  • 2021-08-23
  • 2021-08-23
  • 2021-06-26
  • 2022-12-23
  • 2021-12-04
  • 2021-05-12
  • 2021-04-13
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-11-14
  • 2021-10-14
  • 2022-01-16
  • 2021-06-11
  • 2022-01-18
相关资源
相似解决方案