zoukankan      html  css  js  c++  java
  • WDA SEARCH step by step

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

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

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

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

    1.新建WDA组件:ZLYWDA01.

    选择Web Dynpro Comp./Intf.

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

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

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

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

    2.新建NODE节点

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

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

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

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

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

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

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

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

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

    添加第一个搜索字段,object

     

    添加第二个搜索字段:process_type

     

    2.新建布局。

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

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

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

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

     

     

     

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

     

     

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

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

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

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

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

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

    效果如下:

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

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

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

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

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

     

     绑定NODE到表控件:

     右键,创建绑定:

    选择ITAB节点。

     

     保存,效果如下:

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

    在SEARCH块中添加查询按钮。

     

     创建查询事件:

     

     到查询方法中添加代码:

    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表查询。这里就不做处理了。

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

    属性名称

     

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

    效果如下:

    给下拉框初始化。

    添加init_drop方法:

    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里调用:

     效果如下:

  • 相关阅读:
    文件系统恢复!
    磁盘坏道故障!
    磁盘空间耗尽故障!
    卡方——实例(含源码 python)
    TFIDF代码实现
    最标准化步骤(大数据项目首选 Java):提取特定字段地域内容、转化为标准地域(含网络接口、demo、源码、地域数据(csv格式)) 调整指定字段,即可运行获得正确值
    运用DBN 自定义图片输入源码(python3 可直接运行,亲测可用)
    读取tfrecord 代码——可用任意照片均可2
    制作tfrecord 代码——可用任意照片均可
    MYSQL 合并多行数据(指定字段,合并主要重复,个别字段层次不齐现象)
  • 原文地址:https://www.cnblogs.com/sapSB/p/13925181.html
Copyright © 2011-2022 走看看