Quantcast
Viewing all articles
Browse latest Browse all 4552

setting and getting methods have different valuse.

Hi All,

    

1. Initially in both setter & getter are showing same valuse.

2. Once i change the value in the field ( this is droup down field) to another, i am getting old value in getter method. But setter method perfectlly setting the new value.

In setter method current entity and collections are getting change with new value, these are not reflecting to get method.

 

This is my set method

 

    data: lr_cuco type ref to cl_bsp_wd_custom_controller.
  data: lr_cuco_impl type ref to zl_bt140i_s_details_imp1 .
  create object lr_cuco_impl.
  data:
    current type ref to if_bol_bo_property_access,
    dref    type ref to data,
    copy    type ref to data.

  field-symbols:
    <nval> type any,
    <oval> type any.

*   get current entity
  if iterator is bound.
    current = iterator->get_current( ).
  else.
    current = collection_wrapper->get_current( ).
  endif.

*   get old value and dataref to appropriate type

  try.

      data: coll   type ref to if_bol_entity_col.
      data: entity type ref to cl_crm_bol_entity.
      data: current1 type ref to cl_crm_bol_entity.

      entity ?= current.
      coll = entity->get_related_entities(
               iv_relation_name = 'BTItemTextSet' ).        "#EC NOTEXT
      current = coll->get_current( ).
      if current is not bound.
        return.
      endif.

      entity ?= current.
      coll = entity->get_related_entities(
               iv_relation_name = 'BTTextIAll' ).           "#EC NOTEXT
      current = coll->get_first( ).
      current1 ?= current.
      if current is not bound.
*        RETURN.
      endif.
      data:lv_id type string.
      clear:lv_id.
      while current is bound.
        call method current->get_property_as_string
          exporting
            iv_attr_name      = 'TDID'
*           iv_use_iso_format = ABAP_FALSE
          receiving
            rv_result         = lv_id.
        if lv_id = 'Z003'.
          exit.
        else.
          current = coll->get_next( ).
        endif.
      endwhile.
      datadref1    type ref to data,
             copy1    type ref to data.
      if current is not bound.
        data: lr_entity     type ref to cl_crm_bol_entity.
        lr_entity = entity->create_related_entity( iv_relation_name = 'BTTextIAll' ).
        lr_entity->set_property( iv_attr_name = 'TDID'
                          iv_value     = 'Z003' ).

        lr_entity->set_property( iv_attr_name = 'TDSPRAS'
                                 iv_value     = 'E' ).

        coll->add( iv_entity = lr_entity ).
        current = coll->get_next( ).
      endif.

      try.
          dref = current->get_property( 'CONC_LINES' ).     "#EC NOTEXT
        catch cx_crm_cic_parameter_error.
      endtry.

    catch cx_sy_ref_is_initial cx_sy_move_cast_error
          cx_crm_genil_model_error.
      return.
  endtry.


*   assure that attribue exists
  check dref is bound.

*   set <oval> to old value
  assign dref->* to <oval>.
*   create a copy for new value
  create data copy like <oval>.
*   set <nval> to new value
  assign copy->* to <nval>.

*   fill new value using the right conversion
  try.
*        TRY.
      call method if_bsp_model_util~convert_from_string
        exporting
          data_ref       = copy
          value          = value
          attribute_path = attribute_path.
*        CATCH cx_bsp_conv_illegal_ref.
*          FIELD-SYMBOLS: <l_data> type DATA.
*          assign copy->* to <l_data>.
*         please implement here some BO specific handler coding
*         conversion of currency/quantity field failed caused by missing
*         unit relation
*         Coding sample:
*         provide currency for currency fields or decimals for quantity (select from T006).
*          cl_bsp_utility=>instantiate_simple_data(
*                             value = value
*                             reference = c_currency
*                             num_decimals = decimals
*                             use_bsp_exceptions = abap_true
*                             data = <l_data> ).
*      ENDTRY.
    catch cx_sy_conversion_error.
      raise exception type cx_bsp_conv_failed
        exporting
          name = 'ZTEXT_ITEM'.                              "#EC NOTEXT
  endtry.

*   only set new value if value has changed
  if <nval> <> <oval>.

    current->set_property(
                    iv_attr_name = 'CONC_LINES'             "#EC NOTEXT
                    iv_value     = <nval> ).

  endif.

 

""""""""""""""""""""""""""""""""""""" my get method is """""""""""""""""""""

 

   data: current type ref to if_bol_bo_property_access.
  data: dref    type ref to data.
                                                            "#EC NOTEXT
  value = ''.

  if iterator is bound.
    current = iterator->get_current( ).
  else.
    current = collection_wrapper->get_current( ).
  endif.

  try.

      data: coll   type ref to if_bol_entity_col.
      data: entity type ref to cl_crm_bol_entity.

      entity ?= current.
      coll = entity->get_related_entities(
               iv_relation_name = 'BTItemTextSet' ).        "#EC NOTEXT
      current = coll->get_current( ).
      if current is not bound.
        return.
      endif.

      entity ?= current.
      coll = entity->get_related_entities(
               iv_relation_name = 'BTTextIAll' ).           "#EC NOTEXT
      current = coll->get_first( ).
      data:lv_id type string.
      clear:lv_id.
      while current is bound.
        call method current->get_property_as_string
          exporting
            iv_attr_name      = 'TDID'
*           iv_use_iso_format = ABAP_FALSE
          receiving
            rv_result         = lv_id.
        if lv_id = 'Z003'.
          exit.
          ELSE.
              current = coll->get_next( ).
        endif.
      endwhile.

      try.
          dref = current->get_property( 'CONC_LINES' ).     "#EC NOTEXT
        catch cx_crm_cic_parameter_error.
      endtry.

    catch cx_sy_ref_is_initial cx_sy_move_cast_error
          cx_crm_genil_model_error.
      return.
  endtry.

  if dref is not bound.

    value = 'BTAdminI/BTItemTextSet/BTTextIAll/CONC_LINES not bound'. "#EC NOTEXT

    return.
  endif.
  try.
      value = if_bsp_model_util~convert_to_string( data_ref = dref
                                  attribute_path = attribute_path ).
    catch cx_bsp_conv_illegal_ref.
      field-symbols: <l_data> type data.
      assign dref->* to <l_data>.
*       please implement here some BO specific handler coding
*       conversion of currency/quantity field failed caused by missing
*       unit relation
*       Coding sample:
*       provide currency, decimals, and reference type
*       value = cl_bsp_utility=>make_string(
*                          value = <l_data>
*                          reference_value = c_currency
*                          num_decimals = decimals
*                          reference_type = reference_type
*                          ).
      value = '-CURR/QUANT REF DATA MISSING-'.
    catch cx_root.
      value = '-CONVERSION FAILED-'.                        "#EC NOTEXT
  endtry.


Viewing all articles
Browse latest Browse all 4552

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>