component and context programming一

实例演示: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,激活,测试如下。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值