0
点赞
收藏
分享

微信扫一扫

WDA DEMO 09 ALV 简单展示

尤克乔乔 2022-10-14 阅读 161

货铺QQ群号:834508274

进群统一修改群名片,例如BJ_ABAP_森林木。群内禁止发广告及其他一切无关链接,小程序等,进群看公告,谢谢配合
不修改昵称会被不定期踢除,谢谢配合

事先声明下,本人没参加过培训,也没看过完整的标准教程,所以一直都是野路子,土八路。
所以文章中不足以及不正确的地方请大家帮忙指正。


下面开始干货:

新建

WDA DEMO 09 ALV 简单展示_初始化

新加 Component: SALV_WD_TABLE

WDA DEMO 09 ALV 简单展示_赋值_02

跟 select-options的处理一样。

然后在view 把这里加进去

WDA DEMO 09 ALV 简单展示_赋值_03

WDA DEMO 09 ALV 简单展示_初始化_04

然后新建两个node。

就一个字段的结构

WDA DEMO 09 ALV 简单展示_微信_05

展示数据的表

WDA DEMO 09 ALV 简单展示_初始化_06

回到layout界面,添加控件。这次不用创建element 创建laber input field了,换一种方式

WDA DEMO 09 ALV 简单展示_赋值_07

WDA DEMO 09 ALV 简单展示_初始化_08

描述和输入框就自动带出来了,如果参数较多,这样比较省事儿

WDA DEMO 09 ALV 简单展示_赋值_09

value也是自动绑定的

WDA DEMO 09 ALV 简单展示_微信_10

再create element添加一个 button

WDA DEMO 09 ALV 简单展示_赋值_11

再建一个view container 来放alv

WDA DEMO 09 ALV 简单展示_赋值_12

WDA DEMO 09 ALV 简单展示_微信_13

首先初始化:

WDA DEMO 09 ALV 简单展示_初始化_14

WDA DEMO 09 ALV 简单展示_微信_15

这段逻辑放初始化就行,当然也可以放在按钮的事件里。


在查询按钮的事件中 获取输入的值

WDA DEMO 09 ALV 简单展示_微信_16

给 node表赋值

WDA DEMO 09 ALV 简单展示_赋值_17

加上查询语句

WDA DEMO 09 ALV 简单展示_赋值_18


继续用向导,给alv赋值

WDA DEMO 09 ALV 简单展示_赋值_19这里需要注意下这个node对象,就是之前向导创建的那个

WDA DEMO 09 ALV 简单展示_初始化_20

完整代码:

method ONACTIONSEARCH .

DATA lo_nd_input TYPE REF TO if_wd_context_node.

DATA lo_el_input TYPE REF TO if_wd_context_element.
DATA ls_input TYPE wd_this->element_input.
DATA lv_carrid TYPE wd_this->element_input-carrid.

* navigate from <CONTEXT> to <INPUT> via lead selection
lo_nd_input = wd_context->get_child_node( name = wd_this->wdctx_input ).

* @TODO handle non existant child
* IF lo_nd_input IS INITIAL.
* ENDIF.

* get element via lead selection
lo_el_input = lo_nd_input->get_element( ).
* @TODO handle not set lead selection
IF lo_el_input IS INITIAL.
ENDIF.

* get single attribute
lo_el_input->get_attribute(
EXPORTING
name = `CARRID`
IMPORTING
value = lv_carrid ).


DATA lo_nd_tab_spfli TYPE REF TO if_wd_context_node.

DATA lt_tab_spfli TYPE wd_this->elements_tab_spfli.

* navigate from <CONTEXT> to <TAB_SPFLI> via lead selection
lo_nd_tab_spfli = wd_context->get_child_node( name = wd_this->wdctx_tab_spfli ).

* @TODO handle non existant child
* IF lo_nd_tab_spfli IS INITIAL.
* ENDIF.
SELECT * FROM spfli into CORRESPONDING FIELDS OF TABLE lt_tab_spfli
WHERE carrid = lv_carrid.

** @TODO compute values
** e.g. call a model function
*
lo_nd_tab_spfli->bind_table( new_items = lt_tab_spfli set_initial_elements = abap_true ).

DATA lo_interfacecontroller TYPE REF TO iwci_salv_wd_table .
lo_interfacecontroller = wd_this->wd_cpifc_alv( ).

lo_interfacecontroller->set_data(
* only_if_new_descr = " wdy_boolean
r_node_data = lo_nd_tab_spfli " ref to if_wd_context_node
).

endmethod.

然后到Windows下

WDA DEMO 09 ALV 简单展示_微信_21

WDA DEMO 09 ALV 简单展示_初始化_22

最后创建application ,然后保存,激活,测试

WDA DEMO 09 ALV 简单展示_微信_23


demo都到这里了,有没有发现 按钮事件里的代码好乱。

需要重新处理下。

下篇文章再说一下吧。



举报

相关推荐

0 条评论