新增单据时,与系统数据比对,不存在相关数据给出提示,存在则将系统中数据显示,并将匹配的数据着色显示有TABLE中.
1.在CONTEXT中新建一节点S_LIVE,保存新增单据.
2.在CONTEXT中新建一节点PLAY_LIVE,供LAYOUT中的TABLE绑定用.
在PLAY_LIVE下新建一属性cell_design,类型为WDUI_TABLE_CELL_DESIGN.
3.在CONTEXT中新建一属性MSG,类型为STRING,供页面显示提示信息用.
4.在LAYOUT中新建TABLE,与CONTEXT 中的PLAY_LIVE绑定,将欲着色的COLUMN的CELLDESIGN与PLAY_LIST节点下的CELL_DESIGN属性进行绑定.
5.在wddomodifyview中添加如下代码.
METHOD wddomodifyview .
IF first_time NE abap_true.
EXIT.
ENDIF.
* 页面提示信息
DATA lo_el_context TYPE REF TO if_wd_context_element.
DATA ls_context TYPE wd_this->element_context.
DATA lv_msg LIKE ls_context-msg.
* 新增单据
DATA lo_nd_s_live TYPE REF TO if_wd_context_node.
DATA lo_el_s_live TYPE REF TO if_wd_context_element.
DATA ls_s_live TYPE wd_this->element_s_live.
* navigate from <CONTEXT> to <S_LIVE> via lead selection
lo_nd_s_live = wd_context->get_child_node( name = wd_this->wdctx_s_live ).
* get element via lead selection
lo_el_s_live = lo_nd_s_live->get_element( ).
* get all declared attributes
lo_el_s_live->get_static_attributes( IMPORTING static_attributes = ls_s_live ).
* 从数据库中取出相关数据
DATA: lt_tab TYPE TABLE OF zcdm_s_play_plan.
* DATA: l_tab TYPE REF TO zcdm_s_play_plan.
DATA: ls_tab TYPE zcdm_s_play_plan.
zcl_wdr_live=>get_play_by_procd(
EXPORTING
pro_cd = ls_s_live-z_pro_cd
play_date = ls_s_live-z_live_date
RECEIVING
itab = lt_tab
).
* 与TABLE绑定的CONTEXT列表设置
DATA lo_nd_play_list TYPE REF TO if_wd_context_node.
DATA lo_el_play_list TYPE REF TO if_wd_context_element.
DATA ls_play_list TYPE wd_this->element_play_list.
DATA lt_play_list TYPE wd_this->elements_play_list.
lo_nd_play_list = wd_context->get_child_node( name = wd_this->wdctx_play_list ).
APPEND LINES OF lt_tab TO lt_play_list.
*
LOOP AT lt_play_list INTO ls_play_list WHERE z_pro_cd = ls_s_live-z_pro_cd
AND z_pro_length = ls_s_live-z_pro_length
AND z_play_date = ls_s_live-z_live_date
AND z_play_time = ls_s_live-z_live_time
AND z_chanl_cd = ls_s_live-z_chanl_cd
AND z_subj_cd = ls_s_live-z_subj_cd .
ls_play_list-cell_design = '11'. "根据内表中行项目,对CELL_DESIGN做设置.
MODIFY lt_play_list FROM ls_play_list.
ENDLOOP.
IF sy-subrc NE 0.
lv_msg = '没有查到匹配项'.
ELSE.
lv_msg = '对应数据已标出,请查看'.
ENDIF.
* 显示提示信息
lo_el_context = wd_context->get_element( ).
lo_el_context->set_attribute( name = `MSG` value = lv_msg ).
* 显示数据,匹配数据着色显示
lo_nd_play_list->bind_table( new_items = lt_play_list ).
lo_nd_play_list->clear_selection( )..
ENDMETHOD.