Hi All,
I am working on one of the requirement for service confirmation where I need to change the business partner to different partner..Suppose while creating service confirmation it will default employee responsible to user business partner.(Like 0001) after that I need to change that partner to different partner number(0002).
I know we can achieve this using FM CRM_PARTNER_MAINTAIN_MULTI_OW.
But in my case the function module is returning sy-subrc 0 but business partner data is not getting updated even though i used commit statement after function module call.
My question while we change the business partner: Do we have to delete existing partner function and business partner entry and crate new one or can we replace the business partner directly..
Here is sample code which is not working..can anyone suggest me is their any thing wrong in the code. lt_partner_n is current business partner and
lt_partner_old contains business partner that needs to be replaced in lt_partner_n.
READ TABLE lt_partner_n INTO ls_partner_n WITH KEY partner_fct = '00000052'.
IF sy-subrc EQ 0.
*Modify executive service employee group partner and employee responsible partner
READ TABLE lt_partner_old INTO ls_partner_old WITH KEY ref_guid = iv_old_guid
partner_fct = '00000052'.
IF sy-subrc EQ 0.
* ls_partner_new-ref_guid = iv_new_guid.
* ls_partner_new-ref_kind = 'A'.
* ls_partner_new-ref_handle = ls_partner_old-ref_handle.
* ls_partner_new-kind_of_entry = ' ' . " created manually
* ls_partner_new-partner_fct = ls_partner_old-ref_partner_fct.
* ls_partner_new-no_type = 'BP'.
* ls_partner_new-display_type = 'BP'.
* ls_partner_new-partner_no = ls_partner_old-partner_no.
*
* INSERT ls_partner_new INTO TABLE lt_partner_new.
***Populate CT_INPUT_FIELDS names
*
* CLEAR : cs_input_fields."input_fields_t, input_fields_s.
* cs_input_fields-ref_handle = ls_partner_old-ref_handle.
* cs_input_fields-ref_guid = iv_new_guid.
* cs_input_fields-ref_kind = 'A'.
* cs_input_fields-objectname = 'PARTNER'.
* CONCATENATE l_v_handle_i ls_partner_new-partner_fct ls_partner_new-partner_no ls_partner_new-no_type
* ls_partner_new-display_type INTO cs_input_fields-logical_key.
** cs_input_fields-logical_key = '0001'.
*
* input_fields_s-fieldname = 'DISPLAY_TYPE'.
* INSERT input_fields_s INTO TABLE input_fields_t.
* input_fields_s-fieldname = 'KIND_OF_ENTRY'.
* INSERT input_fields_s INTO TABLE input_fields_t.
* input_fields_s-fieldname = 'MAINPARTNER'.
* INSERT input_fields_s INTO TABLE input_fields_t.
* input_fields_s-fieldname = 'NO_TYPE'.
* INSERT input_fields_s INTO TABLE input_fields_t.
* input_fields_s-fieldname = 'PARTNER_FCT'.
* INSERT input_fields_s INTO TABLE input_fields_t.
* input_fields_s-fieldname = 'PARTNER_NO'.
* INSERT input_fields_s INTO TABLE input_fields_t.
*
* cs_input_fields-field_names[] = input_fields_t.
* INSERT cs_input_fields INTO TABLE ct_input_fields.
*Replacing the existing partner
MOVE-CORRESPONDING ls_partner_n TO ls_partner_new.
ls_partner_new-partner_no = ls_partner_old-partner_no.
ls_partner_new-partner_fct = '00000052'.
ls_partner_new-ref_partner_no = ls_partner_old-partner_no.
ls_partner_new-partner_guid = ls_partner_old-partner_guid.
INSERT ls_partner_new INTO TABLE lt_partner_new.
lv_logical_key = ls_partner_n-ref_partner_handle .
lv_logical_key+4(8) = ls_partner_n-ref_partner_fct .
lv_logical_key+12(20) = ls_partner_old-partner_no.
lv_logical_key+32(2) = ls_partner_n-ref_no_type .
lv_logical_key+34(2) = ls_partner_n-ref_display_type .
cs_input_fields-ref_guid = iv_new_guid .
cs_input_fields-ref_kind = 'A'.
cs_input_fields-objectname = 'PARTNER'.
cs_input_fields-logical_key = lv_logical_key.
input_fields_s-fieldname = 'PARTNER_FCT'.
INSERT input_fields_s INTO TABLE input_fields_t.
cs_input_fields-field_names[] = input_fields_t.
INSERT cs_input_fields INTO TABLE ct_input_fields.
ENDIF.
ENDIF.
ENDIF.
CALL FUNCTION 'CRM_PARTNER_MAINTAIN_MULTI_OW'
EXPORTING
it_partner_com = lt_partner_new
iv_ref_guid = iv_new_guid
iv_ref_kind = 'A'
* IV_REF_HANDLE =
* IS_PARTNER_CONTROL =
* IV_EXTERNAL_CALL = FALSE
* IMPORTING
* ET_CREATED_PARTNERSET_GUID =
CHANGING
ct_input_fields = ct_input_fields
* CT_PARTNER_ATTRIBUTES_COM =
EXCEPTIONS
error_occurred = 1
OTHERS = 2.
IF sy-subrc EQ 0.
COMMIT WORK.
* Implement suitable error handling here
ENDIF.
*End of changes by lakkirsx