WDA 中的Helper Class

本文截自 Web_Dynpro_for_ABAP_Tips_and_Tricks(已经上传,有兴趣的可以Google或者在我的资源中下载 http://download.csdn.net/detail/wren2004/5246372

先看下代码对比,体会一下OO的妙处吧

向导生成的代码:

使用Helper Class后的代码:

添加helper Class 引用:

 

Helper Class 初始化:

完整代码:

class ZBITS_WD_CONTEXT_HELPER definition
  public
  create public .

*"* public components of class ZBITS_WD_CONTEXT_HELPER
*"* do not include other source files here!!!
public section.

  data O_CONTEXT type ref to IF_WD_CONTEXT_NODE .

  methods GET_ATTRIBUTE
    importing
      !PATH type STRING
    exporting
      value(VALUE) type DATA .
  methods GET_ATTRIBUTES
    importing
      !PATH type STRING
    exporting
      !VALUES type DATA .
  methods SET_ATTRIBUTE
    importing
      !PATH type STRING
      !VALUE type DATA .
  methods SET_ATTRIBUTES
    importing
      !PATH type STRING
      !VALUES type DATA .
  methods GET_STATIC_ATTRIBUTES_TABLE
    importing
      !PATH type STRING
      !FROM type I default 1
      !TO type I default 2147483647
    exporting
      !TABLE type ANY TABLE .
  type-pools ABAP .
  methods BIND_TABLE
    importing
      !PATH type STRING
      !NEW_ITEMS type ANY TABLE
      !SET_INITIAL_ELEMENTS type ABAP_BOOL default ABAP_TRUE
      !INDEX type I optional .
  methods IS_CHANGED_BY_CLIENT
    importing
      !PATH type STRING
    returning
      value(FLAG) type ABAP_BOOL .
  methods GET_NODE
    importing
      !PATH type STRING
    returning
      value(RESULT) type ref to IF_WD_CONTEXT_NODE .
  methods SET_CONTEXT
    importing
      !CONTEXT type ref to IF_WD_CONTEXT_NODE .
  methods CONSTRUCTOR
    importing
      !CONTEXT type ref to IF_WD_CONTEXT_NODE optional .
  methods SET_LEAD_SELECTION
    importing
      !PATH type STRING
      !ELEMENT type ref to IF_WD_CONTEXT_ELEMENT .
  methods RESET_CHANGED_BY_CLIENT
    importing
      !PATH type STRING .
  methods SET_CHANGED_BY_CLIENT
    importing
      !PATH type STRING
      !FLAG type ABAP_BOOL .

 
*"* private components of class ZBITS_WD_CONTEXT_HELPER
*"* do not include other source files here!!!
private section.

  methods GET_ELEMENT_PATH
    importing
      !PATH type STRING
    exporting
      !ELPATH type STRING
      !ATTRIBUTE type DATA .
  methods GET_ELEMENT
    importing
      !PATH type STRING
    returning
      value(ELEMENT) type ref to IF_WD_CONTEXT_ELEMENT .

 

method bind_table.
*********************************************************************
  data: lo_node        type ref to   if_wd_context_node.
*********************************************************************

  " Validate necessary object initialisation
  check o_context is bound.

  " Get the element
  lo_node = get_node( path ).
  lo_node->bind_table( exporting new_items = new_items set_initial_elements = set_initial_elements index = index ).

endmethod.


method CONSTRUCTOR.

  o_context = context.

endmethod.

 
method GET_ATTRIBUTE.
*********************************************************************
  DATA: lv_elpath      TYPE          string,
        lv_attribute   TYPE          string,
        lo_element     TYPE REF TO   if_wd_context_element.
*********************************************************************

  " Validate necessary object initialisation
  CHECK o_context IS BOUND.

  " Determine element path and attribute name
  get_element_path( EXPORTING path = path IMPORTING elpath = lv_elpath attribute = lv_attribute ).

  " Get the element
  lo_element = get_element( lv_elpath ).
  lo_element->get_attribute( EXPORTING name = lv_attribute IMPORTING value = value ).

endmethod.

 

method get_attributes.
*********************************************************************
  data: lo_node        type ref to   if_wd_context_node.
*********************************************************************

  " Validate necessary object initialisation
  check o_context is bound.

  " Get the element
  lo_node = get_node( path ).
  lo_node->get_static_attributes( importing static_attributes = values ).

endmethod.

 
method GET_NODE.
*********************************************************************
  DATA: lv_path        TYPE          string,
        lt_path        TYPE TABLE OF string,
        lv_index       TYPE          i,
        lv_length      TYPE          i,
        lo_node        TYPE REF TO   if_wd_context_node.
*********************************************************************

  " Validate necessary object initialisation
  CHECK me->o_context IS BOUND.

  " Read the path into a table
  SPLIT path AT '/' INTO TABLE lt_path.

  " Get the path depth
  DESCRIBE TABLE lt_path LINES lv_length.

  " Root attributes
  IF lv_length = 0.
    lo_node = me->o_context.
  ENDIF.

  " Follow the path
  lv_index = 0.
  LOOP AT lt_path INTO lv_path.
    lv_index = lv_index + 1.
    IF lv_index = 1.
      " Get first node in the path
      lo_node = me->o_context->get_child_node( lv_path ).
    ELSE.
      " Get next node down the path
      lo_node = lo_node->get_child_node( lv_path ).
    ENDIF.
  ENDLOOP.

  result = lo_node.

endmethod.

 
method get_static_attributes_table.
*********************************************************************
  data: lo_node        type ref to   if_wd_context_node.
*********************************************************************

  " Validate necessary object initialisation
  check o_context is bound.

  " Get the element
  lo_node = get_node( path ).
  lo_node->get_static_attributes_table( exporting from = from to = to importing table = table ).

endmethod.

  

method IS_CHANGED_BY_CLIENT.

*********************************************************************
  data: lo_node        type ref to   if_wd_context_node.
*********************************************************************

  " Validate necessary object initialisation
  check o_context is bound.

  " Get the element
  lo_node = get_node( path ).
  flag = lo_node->IS_CHANGED_BY_CLIENT( ).

endmethod.

 
method RESET_CHANGED_BY_CLIENT.
*********************************************************************
  data: lo_node        type ref to   if_wd_context_node.
*********************************************************************

  " Validate necessary object initialisation
  check o_context is bound.

  " Get the element
  lo_node = get_node( path ).
  lo_node->RESET_CHANGED_BY_CLIENT( ).

endmethod.

  

method SET_ATTRIBUTE.
*********************************************************************
  DATA: lv_elpath      TYPE          string,
        lv_attribute   TYPE          string,
        lo_element     TYPE REF TO   if_wd_context_element.
*********************************************************************

  " Validate necessary object initialisation
  CHECK o_context IS BOUND.

  " Determine element path and attribute name
  get_element_path( EXPORTING path = path IMPORTING elpath = lv_elpath attribute = lv_attribute ).

  " Get the element
  lo_element = get_element( lv_elpath ).
  lo_element->set_attribute( EXPORTING name = lv_attribute value = value ).

endmethod.

 
method set_attributes.
*********************************************************************
  data: lo_node        type ref to   if_wd_context_node.
*********************************************************************

  " Validate necessary object initialisation
  check o_context is bound.

  " Get the element
  lo_node = get_node( path ).
  lo_node->set_static_attributes( exporting static_attributes = values ).

endmethod.

 
method SET_CHANGED_BY_CLIENT.
*********************************************************************
  data: lo_node        type ref to   if_wd_context_node.
*********************************************************************

  " Validate necessary object initialisation
  check o_context is bound.

  " Get the element
  lo_node = get_node( path ).
  lo_node->SET_CHANGED_BY_CLIENT( flag ).

endmethod.

 

method SET_CONTEXT.

 o_context = context.

endmethod.

 
method set_lead_selection.
*********************************************************************
  data: lo_node        type ref to   if_wd_context_node.
*********************************************************************

  " Validate necessary object initialisation
  check o_context is bound.

  " Get the element
  lo_node = get_node( path ).
  lo_node->set_lead_selection( exporting element = element ).

endmethod.

 

method GET_ELEMENT.
*********************************************************************
  DATA: lo_node        TYPE REF TO   if_wd_context_node.
*********************************************************************

  " Validate necessary object initialisation
  CHECK me->o_context IS BOUND.

  lo_node = get_node( path ).

  element = lo_node->get_element(  ).

endmethod.

 
method GET_ELEMENT_PATH.

*********************************************************************
  DATA: lv_path        TYPE          string,
        lt_path        TYPE TABLE OF string,
        lv_index       TYPE          i,
        lv_length      TYPE          i,
        lv_lengm1      TYPE          i.
*********************************************************************

  " Read the path into a table
  SPLIT path AT '/' INTO TABLE lt_path.

  " Get the path depth
  DESCRIBE TABLE lt_path LINES lv_length.
  lv_lengm1 = lv_length - 1.

  " Follow the path
  lv_index = 0.
  LOOP AT lt_path INTO lv_path.
    lv_index = lv_index + 1.
    IF lv_index < lv_length.
      CONCATENATE elpath lv_path INTO elpath.
      IF lv_index < lv_lengm1.
        CONCATENATE elpath '/' INTO elpath.
      ENDIF.
    ELSE.
      attribute = lv_path.
    ENDIF.
  ENDLOOP.

endmethod.

                                                                                                                  

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值