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

效果如下:

WDA SEARCH step by step的更多相关文章
- Code Understanding Step by Step - We Need a Task
Code understanding is a task we are always doing, though we are not even aware that we're doing it ...
- Step by Step use OBD2 Scanner Guide
Learning to use a good automotive OBD2 code reader is one of the best ways you can continually inves ...
- Step by Step Process of Migrating non-CDBs and PDBs Using ASM for File Storage (Doc ID 1576755.1)
Step by Step Process of Migrating non-CDBs and PDBs Using ASM for File Storage (Doc ID 1576755.1) AP ...
- write a node cli tools, step by step
write a node cli tools, step by step how to write a node cli tools node cli tools, step by step, nod ...
- Step by Step: Connecting to Dynamics 365 using a C# Console App
Step by Step: Connecting to Dynamics 365 using a C# Console App If you're new to Microsoft Dynam ...
- Step by step Dynamics CRM 2011升级到Dynamics CRM 2013
原创地址:http://www.cnblogs.com/jfzhu/p/4018153.html 转载请注明出处 (一)检查Customizations 从2011升级到2013有一些legacy f ...
- Step by Step 创建一个新的Dynamics CRM Organization
原创地址:http://www.cnblogs.com/jfzhu/p/4012833.html 转载请注明出处 前面演示过如何安装Dynamics CRM 2013,参见<Step by st ...
- Step by step Install a Local Report Server and Remote Report Server Database
原创地址:http://www.cnblogs.com/jfzhu/p/4012097.html 转载请注明出处 前面的文章<Step by step SQL Server 2012的安装 &g ...
- Step by step Dynamics CRM 2013安装
原创地址:http://www.cnblogs.com/jfzhu/p/4008391.html 转载请注明出处 SQL Server可以与CRM装在同一台计算机上,也可安装在不同的计算机上.演示 ...
- Step by step 活动目录中添加一个子域
原创地址:http://www.cnblogs.com/jfzhu/p/4006545.html 转载请注明出处 前面介绍过如何创建一个域,下面再介绍一下如何在该父域中添加一个子域. 活动目录中的森林 ...
随机推荐
- Django实战项目-学习任务系统-用户管理
接着上期代码框架,开发第6个功能,用户管理,查看用户信息和学生用户属性值,尤其是总积分值,还可以查看积分流水明细,完成任务奖励积分,兑换物品消耗积分. 第一步:编写第6个功能-用户管理 1,编辑模型文 ...
- oracle中的aix,Oracle在AIX上一些处理
一.Oracle在aix上连接 1.su - oracle //进入oracle用户: 2.export ORACLE_SID=house //指定实例,多个实例的情况下: 3.sqlplus / ...
- 1000: 【编程入门】熟悉一下Online Judge的环境
1000: [编程入门]熟悉一下Online Judge的环境 题目描述 请不要笑.用来适应环境的题目,自然比较简单些. 计算2个整数的和.这两个整数都在1到100之间. 输入 输入只有一行,包括2个 ...
- PriorityBlockingQueue 的put方法底层源码
一.PriorityBlockingQueue 的put方法底层源码 PriorityBlockingQueue 的 put 方法用于将元素插入队列.由于 PriorityBlockingQueue ...
- 判断返回值长度(比如是否为空),执行后续步骤(if..else、len的用法)
爬基金数据,净值因涨跌不同,对应的元素路径也不会一样 比如当天是涨的时候,涨跌元素的class信息为"<span class="fix_dwjz bold ui-color ...
- kettle使用MD5加密增量获取接口数据
kettle使用MD5加密增量获取接口数据 场景介绍: 使用JavaScript组件进行MD5加密得到Http header,调用API接口增量获取接口数据,使用json input组件解析数据入库 ...
- SaltStack 远程命令执行中文乱码问题
问题 我在一台服务器上写了一个简单的 Python 脚本 haha.py,内容如下: [root@localhost ~]# cat haha.py print("你好") 当我在 ...
- Elasticsearch7.6.1配套安装包自取
包含Elasticsearch,ik分词器,kibana 7.6.1安装包自取:https://pan.baidu.com/s/1Y6XdDOzqIzI2qerOODQHmg提取码:5nm4
- K8s新手系列之K8s中的资源
K8s中资源的概念 在kubernetes中,所有的内容都抽象为资源,用户需要通过操作资源来管理kubernetes. kubernetes的本质上就是一个集群系统,用户可以在集群中部署各种服务,所谓 ...
- centos7配置复杂度
CentOS7/RHEL7 开始使用pam_pwquality模块进行密码复杂度策略的控制管理.pam_pwquality替换了原来Centos6/RHEL6中的pam_cracklib模块,并向后兼 ...