关闭

component and context programming一

413人阅读 评论(0) 收藏 举报

实例演示:a,为input field 设置默认值。

               b,根据默认值,调用fm,读取符合条件的数据,并以Table的形式进行展现。

 

1,在component里分别创建两个节点ST_MARA,T_MARC cardinality 为1:n.

2,在输入,输出视图,分别做mapping,然后input_view视图里,插入一个类型为InputField的UI元素,

  在output_view里插入一个Table类型的UI元素,并且做data binding.

3,视图Input_view里的wddoinit方法里添加代码如下。

 method WDDOINIT .
  DATA:lo_nd_st_mara  TYPE REF TO if_wd_context_node,
        lo_el_st_mara TYPE REF TO if_wd_context_element,
        st_matnr      TYPE  wd_this->Element_st_mara.

*& first,get node.
  CALL METHOD wd_context->get_child_node
  EXPORTING
*    index      = USE_LEAD_SELECTION
    name       = wd_this->wdctx_st_mara
    receiving
    child_node = lo_nd_st_mara    .
*& get element

  CALL METHOD lo_nd_st_mara->get_element
*  EXPORTING
*    index        = USE_LEAD_SELECTION
  receiving
  node_element = lo_el_st_mara
  .
*& set default value
  if not lo_el_st_mara is initial.

   st_matnr-matnr = '1000-00081'.
   st_matnr-mtart = 'ROH'.
*& set single
*  CALL METHOD lo_el_st_mara->set_attribute(
*  EXPORTING
*    value  = '1000-00081'
*    name   = 'MATNR'   )  .
*& set structure.
CALL METHOD lo_el_st_mara->set_static_attributes
  EXPORTING
    static_attributes = st_matnr
    .



  endif.
endmethod.

 

4,在component method里增加一个方法get_marc,然后添加代码。

 method GET_MARC .
  
  data:lo_nd_st_mara type ref to if_wd_context_node,
       lo_el_st_mara type ref to if_wd_context_element,
       ls_st_mara    type wd_this->element_st_mara,
       lt_t_marc     type wd_this->Elements_t_marc,
       lo_nd_t_marc  type ref to if_wd_context_node.

*&1,取输入字段的节点,元素以及输入的值。
CALL METHOD wd_context->get_child_node
  EXPORTING
*    index      = USE_LEAD_SELECTION
    name       = 'ST_MARA'
  receiving
    child_node = lo_nd_st_mara .

CALL METHOD lo_nd_st_mara->get_element
*  EXPORTING
*    index        = USE_LEAD_SELECTION
  receiving
    node_element = lo_el_st_mara
    .

CALL METHOD lo_el_st_mara->get_static_attributes
  IMPORTING
    static_attributes =   ls_st_mara  .

*& 调用商业逻辑,取到业务数据。
CALL FUNCTION 'ZGET_MARC'
  EXPORTING
    material       = ls_st_mara-matnr
  tables
    t_marc         = lt_t_marc
          .
*& 取TABLE的节点名称。

CALL METHOD wd_context->get_child_node
  EXPORTING
*    index      = USE_LEAD_SELECTION
    name       = wd_this->wdctx_t_marc
  receiving
    child_node = lo_nd_t_marc .

*&绑定。
 CALL METHOD lo_nd_t_marc->bind_table
   EXPORTING
     new_items            = lt_t_marc
     set_initial_elements = ABAP_FALSE
*     index                =
     .

endmethod.

5,然后在output_view里的默认事件处理方法里调用次方法。

 method HANDLEIN_DEFAULT .
  WD_COMP_CONTROLLER->get_marc( ).
endmethod.

6,创建application,激活,测试如下。

 

 

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:204931次
    • 积分:3804
    • 等级:
    • 排名:第8389名
    • 原创:184篇
    • 转载:12篇
    • 译文:0篇
    • 评论:14条
    文章分类
    最新评论