首页 > 其他分享 >WDA学习(25):DateNavigator使用

WDA学习(25):DateNavigator使用

时间:2022-08-27 14:44:40浏览次数:50  
标签:NODE WDA DateNavigator 25 Attribute 绑定 lv lo DATE

1.18 UI Element:Date Navigator使用

本实例测试创建Date Navigator;

1.创建Component,View: V_DATE_NAVIGATOR;

2.创建Context节点;

创建NODE: NODE_DATENAV, Cardinality:1..1;

创建Attribute:SELECTION_MODE,类型WDUI_DATE_SELECTION_MODE;

创建Attribute: FIRST_DAY_OF_WEEK,类型WDUI_DAY_OF_WEEK;

创建Attribute: FIRST_SELECTED_DATE,类型D;

创建Attribute:LAST_SELECTED_DATE,类型D;

创建Attribute: MONTH_PER_COLUMN,类型I;

创建Attribute: MONTH_PER_ROW,类型I;

创建Attribute: START_WITH,类型D;

创建NODE:NODE_MARKING,Cardinality:0..n;

创建Attribute:DATE,类型D;

 

3.创建Layout UI Element;

创建UI Element:Tray,ID:TRAY1,包含一些输入参数UI Element;

创建UI Element:Toolbar;

创建UI Element:ToolbarButton,绑定Action:APPLY;

创建UI Element:Label;

创建UI Element:DropDownByKey,ID: INP,selectedKey绑定Context的Attribute: V_DATE_NAVIGATOR.NODE_DATENAV.FIRST_DAY_OF_WEEK;

创建UI Element:InputField,ID:INP1,value绑定Context的Attribute: V_DATE_NAVIGATOR.NODE_DATENAV.FIRST_SELECTED_DATE;

创建UI Element:InputField,ID:INP2,value绑定Context的Attribute: V_DATE_NAVIGATOR.NODE_DATENAV.LAST_SELECTED_DATE;

创建UI Element:InputField,ID:INP3,value绑定Context的Attribute: V_DATE_NAVIGATOR.NODE_DATENAV.MONTH_PER_COLUMN;

创建UI Element:InputField,ID:INP4,value绑定Context的Attribute:

V_DATE_NAVIGATOR.NODE_DATENAV.MONTH_PER_ROW;

创建UI Element:DropDownByKey,ID:INP5,selectedKey绑定Context的Attribute:

V_DATE_NAVIGATOR.NODE_DATENAV.SELECTION_MODE;

创建UI Element:InputField,ID:INP6,value绑定Context的Attribute: V_DATE_NAVIGATOR.NODE_DATENAV.START_WITH;

创建UI Element:DateNavigator;

设置Properties

firstDayOfWeek:绑定Attribute,V_DATE_NAVIGATOR.NODE_DATENAV.FIRST_DAY_OF_WEEK;

firstSelectedDate:绑定Attribute,V_DATE_NAVIGATOR.NODE_DATENAV.FIRST_SELECTED_DATE;

lastSelectedDate:绑定Attribute,V_DATE_NAVIGATOR.NODE_DATENAV.LAST_SELECTED_DATE;

monthsPerColumn:绑定Attribute,V_DATE_NAVIGATOR.NODE_DATENAV.MONTH_PER_COLUMN;

monthsPerRow:绑定Attribute,V_DATE_NAVIGATOR.NODE_DATENAV.MONTH_PER_ROW;

selectionMode:绑定Attribute,V_DATE_NAVIGATOR.NODE_DATENAV.SELECTION_MODE;

startsWith:绑定Attribute,V_DATE_NAVIGATOR.NODE_DATENAV.START_WITH;

onDaySelect:绑定Action,SEL_DAY;

onMonthSelect:绑定Action,SEL_MONTH;

onStartDateChanged:绑定Action,CHANGE_START_DAY;

onWeekSelect:绑定Action,SEL_WEEK;

创建UI Element:DateNavigatorMarking;

设置Properties

dataSource:绑定V_DATE_NAVIGATOR.NODE_MARKING;

date:绑定NODE_MARKING.DATE;

 

4.创建Method页签方法;

创建INIT_PROPER方法,初始化DateNavigator的属性参数,WDDOINIT方法中调用;

代码实例:

 DATA:lo_node TYPE REF TO if_wd_context_node.
  DATA:lo_element TYPE REF TO if_wd_context_element.
  DATA:lv_date TYPE D.

  lv_date = sy-datum.
  "获取节点
  lo_node = wd_context->get_child_node( wd_this->wdctx_node_datenav ).
  lo_element = lo_node->get_element( ).
  lo_element->set_attribute(
    EXPORTING
      name = 'FIRST_SELECTED_DATE'
      value = lv_date
  ).
  lo_element->set_attribute(
    EXPORTING
      name = 'LAST_SELECTED_DATE'
      value = lv_date
  ).
  lo_element->set_attribute(
    EXPORTING
      name = 'MONTH_PER_COLUMN'
      value = 1
  ).
  lo_element->set_attribute(
    EXPORTING
      name = 'MONTH_PER_ROW'
      value = 2
  ).
  lo_element->set_attribute(
    EXPORTING
      name = 'START_WITH'
      value = lv_date
  ).

实现Action: SEL_DAY,日期选择;

  DATA:lo_node TYPE REF TO if_wd_context_node.
  DATA:lo_element TYPE REF TO if_wd_context_element.
  DATA:lt_marking TYPE wd_this->elements_node_marking.
  DATA:ls_marking TYPE wd_this->element_node_marking.
  DATA:lv_date TYPE string.
  "获取选择的日期
  lv_date = wdevent->get_string( name = 'DAY' ).
  "获取节点
  lo_node = wd_context->get_child_node( wd_this->wdctx_node_marking ).
  lo_node->get_static_attributes_table( IMPORTING table = lt_marking ).

  READ TABLE lt_marking INTO ls_marking WITH KEY date = lv_date.
  IF sy-subrc = 0.
    DELETE TABLE lt_marking FROM ls_marking.
  ELSE.
    ls_marking-date = lv_date.
    APPEND ls_marking TO lt_marking.
  ENDIF.
  lo_node->bind_table( new_items = lt_marking set_initial_elements = abap_true ).

实现Action:SEL_MONTH,选择月份;

  DATA:lo_event TYPE REF TO cl_wd_custom_event.
  DATA:lv_year TYPE string.
  DATA:lv_month TYPE string.
  lo_event = wdevent.
  lv_year = wdevent->get_string( name = 'YEAR' ).
  lv_month = wdevent->get_string( name = 'MONTH' ).
  lv_year = 'select month:' && lv_year && lv_month.
  wd_comp_controller->show_msg( msg = lv_year msg_type = 'S' ).

实现Action: SEL_WEEK,选择周;

  DATA:lo_event TYPE REF TO cl_wd_custom_event.
  DATA:lv_year TYPE string.
  DATA:lv_week TYPE string.
  DATA:lv_first_day TYPE string.

  lo_event = wdevent.
  lv_year = wdevent->get_string( name = 'YEAR' ).
  lv_week = wdevent->get_string( name = 'WEEK' ).
  lv_first_day = wdevent->get_string( name = 'FIRST_DAY' ).
  lv_year = 'select week:' && lv_year && '年第' && lv_week && '周' && 'first day:' && lv_first_day.
  wd_comp_controller->show_msg( msg = lv_year msg_type = 'S' ).

实现Action:CHANGE_START_DAY,修改start day;

代码实例:

  DATA:lo_event TYPE REF TO cl_wd_custom_event.
  DATA:lv_date TYPE string.

  lv_date = wdevent->get_string( name = 'START_DATE' ).
  lv_date = 'change start date:' && lv_date.
  wd_comp_controller->show_msg( msg = lv_date msg_type = 'S' ).

5.执行显示

 

 

标签:NODE,WDA,DateNavigator,25,Attribute,绑定,lv,lo,DATE
From: https://www.cnblogs.com/tangToms/p/16630537.html

相关文章

  • WDA学习(23):UI Element:Radio Button Group & CheckBox Group使用
    1.16UIElement:RadioButton&CheckBox使用本实例测试RadioButtonGroup,CheckBoxGroup等的使用。注:DropdownByKey,DropdownByIndex使用方式和RadioButtonGroupByKe......
  • 洛谷 P2582 函数
    函数-洛谷可以发现性质\(g(f^m(x))=f^m(g(x))\)。若设左侧\(x\)所在环大小为\(size(x)\),右侧\(g(x)\)所在环的大小为\(size(gx)\)。可以得到,\(size(gx)\mid......
  • 2022-8-25 第四组 曹雨 Java script HTML元素操作,BOM
    对HTML元素的操作获取某个元素的属性的值:方法1:元素.属性名特别注意:元素.属性名的方式只适用于元素原生的属性,自定义的属性是拿不到的例子:console.log(div.id)方法2:......
  • 0825 思维题两则
    0825思维题两则感觉总得写点题解记录一下,但是不想记录的太复杂,记录一下策略吧解的好和讲的好是两回事,我毕竟解的都不好,也就没人看了,所以记得简略一点,不求讲的好了Fib......
  • CTFSHOW Web259 SoapClient原生类的反序列化
      index.php   看到该题目第一眼,大脑直接一个简单的想法就是通过访问flag.php添加X-Forwarded-For然后POST发送token数据。但!在本题的环境当中,由于使用了Clou......
  • AT2580 题解
    前言题目传送门!更好的阅读体验?这题是常规的二分答案。前置知识:二分答案教大家一个小技巧:如何判断一题是否可以使用二分答案,以及如何编写程序?设计\(f(x)\)函数,确......
  • 2022 8 25
    只做了一个组队题目https://www.lanqiao.cn/problems/604/learning/报错是因为s1,s2里面的内容被更改,于是超出列表范围了。具体的周末整理的时候再说。importosimport......
  • 【2022.8.25】前端开发(4)
    学习内容概要JS基本数据类型流程控制函数与面向对象JS的BOM与DOM操作学习内容详细JS数据类型之布尔值1.回顾之前python中布尔值(bool)TrueFalse:0None[]......
  • 825(json,正则)
    json数据json是存储数据的一种格式JavascriptObjectNotation(JavaScript对象表示法)json是存储和交换文本信息的语法,类似XML,JSON比XML更小,更快更易解析什么是JSONJ......
  • 2022-08-25 第四组 王佳齐
    学习笔记div的name拿不到,id能拿到,因为div原本有id属性,而没有name属性,元素.属性名只适用于元素原生的属性,后加的是获取不到的,那怎么才能获取到?使用元素.getAttribute("属性......