进阶:案例五: Dynamic 创建 Business Graphic

摘要:
new_ business_ graphics(bind_series_source='NODE_DYN'chart_type=cl_wd_business_graphics=>lr_bgr_ssTYPEREFTOcl_wd_simple_series.lr_bgr_ss=cl_wd_sample_series=>

效果图:

进阶:案例五: Dynamic 创建 Business Graphic第1张

step:

无需节点无需UI

1、添加属性

进阶:案例五: Dynamic 创建 Business Graphic第2张

2、代码:

进阶:案例五: Dynamic 创建 Business Graphic第3张进阶:案例五: Dynamic 创建 Business Graphic第4张
method WDDOMODIFYVIEW .
  DATA:lr_graph TYPE REF TO cl_wd_business_graphics,
      lr_cat TYPE REF TO cl_wd_category,
      lr_series TYPE REF TO cl_wd_simple_series,
      lr_container TYPE REF TO cl_wd_uielement_container,
      lr_flow TYPE REF TO cl_wd_flow_data.
lr_container ?= view->get_element( 'ROOTUIELEMENTCONTAINER' ).
lr_graph = cl_wd_business_graphics=>new_business_graphics(
bind_series_source = 'NODE_DYN'
chart_type = cl_wd_business_graphics=>e_chart_type-BARS
height = 340
width = 750
* BIND_TOOLTIP = 'GRAPH.TT'
id = 'GRAPH' ).
lr_flow = cl_wd_flow_data=>new_flow_data( element = lr_graph ).
lr_container->add_child( lr_graph ).
wd_this->value_cs ?= lr_graph.
wd_this->mr_view ?= view.
DATA: lr_bgr_ss TYPE REF TO cl_wd_simple_series.
lr_bgr_ss = cl_wd_simple_series=>new_simple_series(
bind_value = 'NODE_DYN.SERIES1'
label = 'Series_1'
view = wd_this->mr_view ).
wd_this->value_cs->ADD_SERIES( lr_bgr_ss ).
lr_bgr_ss = cl_wd_simple_series=>new_simple_series(
bind_value = 'NODE_DYN.SERIES2'
label = 'Series_2'
view = wd_this->mr_view ).
wd_this->value_cs->ADD_SERIES( lr_bgr_ss ).
DATA: lr_bgr_cs TYPE REF TO cl_wd_category.
lr_bgr_cs = cl_wd_category=>new_category(
view = wd_this->mr_view bind_description = 'NODE_DYN.CATEGORY').
wd_this->value_cs->set_category( lr_bgr_cs ).
endmethod.
View Code

3、代码:

进阶:案例五: Dynamic 创建 Business Graphic第5张进阶:案例五: Dynamic 创建 Business Graphic第6张
method INSERT_DATA_CONTEXT .
    DATA: lo_node TYPE REF TO if_wd_context_node.
* ls_elem type WD_THIS->element_NODE_DYN,
* lt_elem type WD_THIS->elements_NODE_DYN.
  TYPES: BEGIN OF typ_st,
        series1 TYPE i,
        series2 TYPE i,
        category TYPE string,
    END OF typ_st.
  DATA: ls_elem TYPE typ_st,
        lt_elem TYPE TABLE OF typ_st.
  ls_elem-series1 = 10.
  ls_elem-series2 = 15.
  ls_elem-category = 'Category 1'.
  APPEND ls_elem TO lt_elem.
  ls_elem-series1 = 20.
  ls_elem-series2 = 25.
  ls_elem-category = 'Category 2'.

  APPEND ls_elem TO lt_elem.
  ls_elem-series1 = 30.
  ls_elem-series2 = 35.
  ls_elem-category = 'Category 3'.
  APPEND ls_elem TO lt_elem.
  lo_node = wd_context->get_child_node( name = 'NODE_DYN' ).
  lo_node->bind_table( lt_elem ) .
endmethod.
View Code

4、代码:

进阶:案例五: Dynamic 创建 Business Graphic第7张进阶:案例五: Dynamic 创建 Business Graphic第8张
method CREATE_CONTEXT_NODE .
    DATA: lo_nodeinfo TYPE REF TO if_wd_context_node_info,
        typ_struct type REF TO cl_abap_structdescr,
        typ_table TYPE REF TO cl_abap_tabledescr,
        com_tab type cl_abap_structdescr=>component_table,
        com like LINE OF com_tab.
* component info
  com-name = 'SERIES1'.
  com-type ?= cl_abap_datadescr=>describe_by_name( 'I' ).
  append com to com_tab.
  com-name = 'SERIES2'.
  com-type ?= cl_abap_datadescr=>describe_by_name( 'I' ).
  append com to com_tab.
  com-name = 'CATEGORY'.
  com-type ?= cl_abap_datadescr=>describe_by_name( 'STRING' ).
  append com to com_tab.
* create the structure
  typ_struct = cl_abap_structdescr=>create( com_tab ).
* dynamic create the context node
  lo_nodeinfo = wd_context->get_node_info( ).
  lo_nodeinfo = lo_nodeinfo->add_new_child_node(
  name = 'NODE_DYN'
  IS_MANDATORY = ABAP_false
  IS_MULTIPLE = ABAP_true
  STATIC_ELEMENT_RTTI = typ_struct IS_STATIC = ABAP_false ).
endmethod.
View Code

5、初始化代码:

进阶:案例五: Dynamic 创建 Business Graphic第9张进阶:案例五: Dynamic 创建 Business Graphic第10张
method WDDOINIT .
* create one Context Node for Business Graphic
  wd_this->create_context_node( ).

* node, insert the data to the newly created context node
 wd_this->insert_data_context( ).
endmethod.
View Code

免责声明:文章转载自《进阶:案例五: Dynamic 创建 Business Graphic》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇UnitOfWork以及其在ABP中的应用转:java中写入文件时换行符是"\r\n"下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

CodeReview规范

目标和原则 提高代码质量,及早发现潜在缺陷,降低修改/弥补缺陷的成本 促进团队内部知识共享,提高团队整体水平 评审过程对于评审人员来说,也是一种思路重构的过程,帮助更多的人理解系统 是一个传递知识的手段,可以让其它并不熟悉代码的人知道作者的意图和想法,从而可以在以后轻松维护代码 可以被用来确认自己的设计和实现是一个清楚和简单的 鼓励相互学习对方的长处和优...

EF Core 难道不支持GroupBy吗?

   最近在修改一个.NET Core的项目,其中ORM用的EF Core,在一次查询分页中,遇到了一个很奇怪的问题,每次查询都很慢,明明已经按照某个编号字段Group By并且还做了分页,为啥查询还这么的慢呢? 首选我想当的解决方案就是为 每个条件查询字段添加索引,但是依然无效,还是很慢;然后查看log日志,仔细核对EF生成的sql,发现了生成的sql根...

【微信小程序】在swiper-item使用wx:for时出现的问题

代码如下: wxml: <!--pages/mall/mall.wxml--> <view class="contianer"> <view class="swiper"> <swiper display-multiple-items="{{swiper_pictures.length}}" indic...

安卓智能聊天机器人开发(二)

接上一篇文章《安卓智能聊天机器人开发(一)》,晚上继续写。 在上一篇文章中,已经实现了对网络数据的获取和处理封装,这篇文章来讲下如何嵌入到安卓应用中。 先看下效果图: 从上面两张图我们可以发现,这个聊天布局其实就是一个ListView,只不过它和传统的ListView有些区别,因为它使用了多Item样式布局 首先,先来分析下基础布局: 这个界面是由3个布...

vue 移动端添加 时间日期选择器

效果:  index.vue <template> <div class="user-wrap" style="padding-bottom: 0;text-align: center"> <h1>-----------------------时间选择器------------------...

windows花指令和堆栈溢出原理

1、今天拿到一个exe,用IDA打开后在main的代码如下,想直接F5,报错如下:      细看代码,有两个比较有意思的地方:    第一个红框,JZ和JNZ跳转到同一个地址:0x4010A1+1=0x4010A2    第二个红框,也就是0x4010A1的开始地址是一个call指令,5字节长度;再下一个指令就从0x4010A6开始了;    0x4...