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.
data: dref1 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.