Nicolas ,
My client already enhanced ZCL_BUPA_IL_HEADER. That's why i tried my code there. The following BADI's triggered thru CL_EXIT _HANDLER
BUPA_SAVE_CONTROL
BUPA_GENERAL_UPDATE
BUPA_RELATSHP_UPDATE
BUPR_FILTER_RELTYP
BUPA_DESCRIPTION_GET
I did not see CRM_BP_UIU_SAVE stopping there..
CHECK_BEFORE_SAVE method
IF lr_bp IS BOUND.
lr_relations = lr_bp->get_related_entities( iv_relation_name = 'BuilRelationshipRel' ).
IF lr_relations IS BOUND.
REFRESH:LT_RETURN[].
lr_relation = lr_relations->get_first( ).
ENDIF.
WHILE lr_relation IS BOUND.
lr_relation->get_properties( IMPORTING es_attributes = ls_relationship ).
IF ( ls_relationship-relationshipcategory = 'ZCAM15' OR " Legal Mother
ls_relationship-relationshipcategory = 'ZCAM17 ' ) AND " Legal father
ls_relationship-validuntildate > sy-datum.
lr_zz23reewrel = lr_relation->get_related_entity( iv_relation_name = 'ZZ23REEWRel' ).
IF lr_zz23reewrel IS BOUND.
lv_paternity = lr_zz23reewrel->get_property_as_string( iv_attr_name = 'PAT_EST_METHOD' ).
IF lr_zz23reewrel->is_property_changed( iv_attr_name = 'PAT_EST_METHOD' ) EQ abap_true.
lv_pat_changed = 'X'.
ENDIF.
ENDIF.
* Checking BUilRealtion is changed or not.
* IF
* lr_relation->is_property_changed( iv_attr_name = 'PARTNER2' ) EQ abap_true OR
* lr_relation->is_property_changed( iv_attr_name = 'VALIDFROMDATE' ) EQ abap_true OR
* lr_relation->is_property_changed( iv_attr_name = 'VALIDUNTILDATE' ) EQ abap_true OR
* lv_pat_changed = 'X'.
* SELECT SINGLE crdat FROM but050 INTO lv_crea_date WHERE
* partner1 = ls_relationship-partner1 AND
* partner2 = ls_relationship-partner2 AND
* reltyp = ls_relationship-relationshipcategory.
IF lr_zz23reewrel IS NOT BOUND OR lv_paternity IS INITIAL.
CALL FUNCTION 'BALW_BAPIRETURN_GET2'
EXPORTING
type = 'E'
cl = 'ZM00'
number = '883'
par1 = lv_message_text
IMPORTING
return = ls_message.
APPEND ls_message TO lt_return.
ENDIF.
ENDIF.
lr_relation = lr_relations->get_next( ).
ENDWHILE.
ENDIF.
IF lt_return IS NOT INITIAL.
* DATA lv_err_obj TYPE REF TO CL_CRM_GENIL_CONTAINER_OBJECT.
* lv_err_obj ?= lr_relation.
* CALL METHOD cl_crm_buil_services=>bol_add_messages
* EXPORTING
* iv_cont_obj = lv_err_obj
* iv_object_name = me->object_name
* it_bapi_messages = lt_return.
CALL METHOD iv_msg_service_access->get_global_message_container
RECEIVING
rv_result = lv_msg_cont.
IF lv_msg_cont IS NOT INITIAL.
CALL METHOD lv_msg_cont->add_bapi_messages
EXPORTING
it_bapi_messages = lt_return
iv_show_only_once = 'X'.
ENDIF.
CLEAR cs_object-success.
ENDIF.