on 04-21-2014 3:11 PM
Hi all,
I am trying to change the address for( ADDR_NR) for Partner . I am using the function module CRM_PARTNER_MAINTAIN_SINGLE_OW.
I am calling below code in ORDER_SAVE Badi. but still it is not changing the address number .
ls_partner1-ref_guid = ls_partner-ref_guid.
ls_partner1-ref_handle = ls_partner-ref_handle.
ls_partner1-ref_kind = ls_partner-ref_kind.
ls_partner1-partner_no = lv_partner.
ls_partner1-kind_of_entry = gc_c.
ls_partner1-partner_fct = 'Z00000001'.
ls_partner1-display_type = gc_bp.
ls_partner1-no_type = gc_bp.
ls_partner1-city = ex_addresses-city1.
ls_partner1-region = ex_addresses-region .
ls_partner1-country = ex_addresses-country .
ls_partner1-house_no = ex_addresses-streetcode.
ls_partner1-street = ex_addresses-street.
ls_partner1-postl_cod1 = ex_addresses-post_code1.
ls_partner1-district = ex_addresses-city2.
ls_partner1-addr_nr = lv_add_num1. " NEW ADDRESS NUMBER
ls_partner1-addr_origin = gc_b.
ls_partner1-addr_np = ''.
ls_partner1-addr_type = '1'.
ls_partner1-mainpartner = 'X'.
* ls_partner1-addr_nr = lv_add_num.
ls_input_field-fieldname = 'DISPLAY_TYPE'.
INSERT ls_input_field INTO TABLE lt_input_field_names.
ls_input_field-fieldname = 'KIND_OF_ENTRY'.
INSERT ls_input_field INTO TABLE lt_input_field_names.
ls_input_field-fieldname = 'NO_TYPE'.
INSERT ls_input_field INTO TABLE lt_input_field_names.
ls_input_field-fieldname = 'PARTNER_FCT'.
INSERT ls_input_field INTO TABLE lt_input_field_names.
ls_input_field-fieldname = 'PARTNER_NO'.
INSERT ls_input_field INTO TABLE lt_input_field_names.
ls_input_field-fieldname = 'CITY'.
INSERT ls_input_field INTO TABLE lt_input_field_names.
ls_input_field-fieldname = 'COUNTRY'.
INSERT ls_input_field INTO TABLE lt_input_field_names.
ls_input_field-fieldname = 'REGION'.
INSERT ls_input_field INTO TABLE lt_input_field_names.
ls_input_field-fieldname = 'HOUSE_NO'.
INSERT ls_input_field INTO TABLE lt_input_field_names.
ls_input_field-fieldname = 'STREET'.
INSERT ls_input_field INTO TABLE lt_input_field_names.
ls_input_field-fieldname = 'POSTL_COD1'.
INSERT ls_input_field INTO TABLE lt_input_field_names.
ls_input_field-fieldname = 'ADDR_NR'.
INSERT ls_input_field INTO TABLE lt_input_field_names.
ls_input_field-fieldname = 'DISTRICT'.
INSERT ls_input_field INTO TABLE lt_input_field_names.
ls_input_field-fieldname = 'ADDR_ORIGIN'.
INSERT ls_input_field INTO TABLE lt_input_field_names.
ls_input_field-fieldname = 'ADDR_NP'.
INSERT ls_input_field INTO TABLE lt_input_field_names.
ls_input_field-fieldname = 'ADDR_TYPE'.
INSERT ls_input_field INTO TABLE lt_input_field_names.
ls_input_field-fieldname = 'STD_BP_ADDRESS'.
INSERT ls_input_field INTO TABLE lt_input_field_names.
CALL FUNCTION 'CRM_PARTNER_MAINTAIN_SINGLE_OW'
EXPORTING
iv_ref_guid = ls_partner-ref_guid
iv_ref_kind = 'A'
is_partner_com = ls_partner1
iv_populate_mode = ' '
* IV_CHECK_PARTNER_ONLY = ' '
* IS_PARTNER_CONTROL =
* IS_COM_STRUCTURE =
* IV_EXTERNAL_CALL = FALSE
* IMPORTING
* EV_CREATED_PARTNERSET_GUID =
CHANGING
ct_input_field_names = lt_input_field_names
* CT_PARTNER_ATTRIBUTES_COM =
EXCEPTIONS
error_occurred = 1
OTHERS = 2
.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
regards,
rama
Hi Ramanji,
Could you please pass MODE = 'B' and see. Don't forget to pass the field MODE in input fields also.
Thanks,
Faisal
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Solved my self by writing the follwing code.
CALL FUNCTION 'CRM_PARTNER_GET_CONTROL_INF_OW'
EXPORTING
iv_ref_guid = ls_partner1-ref_guid
iv_ref_kind = gc_a
IMPORTING
es_partner_control = ls_partner_control
EXCEPTIONS
determination_failed = 1
OTHERS = 2.
IF sy-subrc EQ 0.
CALL FUNCTION 'COM_PARTNER_ADDRESS_COPY'
EXPORTING
iv_caller = ls_partner_control-caller
iv_document_id = ls_partner_control-document_id
iv_partnerset_guid = ls_partner-ref_guid
iv_addr_nr = ls_partner-addr_nr
iv_addr_np = ls_partner-addr_np
iv_addr_type = ls_partner-addr_type
IMPORTING
ev_new_addr_nr = lv_new_addr_nr
ev_new_addr_np = lv_new_addr_np
ev_new_addr_type = lv_new_addr_type
EXCEPTIONS
error_occurred = 1
parameter_error = 2
OTHERS = 3.
IF sy-subrc EQ 0.
MOVE-CORRESPONDING ls_partner TO ls_partner_com.
ls_partner_com-addr_np = lv_new_addr_np.
ls_partner_com-addr_nr = lv_new_addr_nr.
ls_partner_com-addr_origin = gc_b.
ls_partner_com-std_bp_address = ''.
ls_partner_com-ref_guid = ls_partner-ref_guid.
ls_partner_com-ref_kind = gc_a.
ls_input_field_name-fieldname = 'ADDR_NR'.
INSERT ls_input_field_name INTO TABLE lt_input_field_name.
ls_input_field_name-fieldname = 'ADDR_NP'.
INSERT ls_input_field_name INTO TABLE lt_input_field_name.
ls_input_field_name-fieldname = 'ADDR_TYPE'.
INSERT ls_input_field_name INTO TABLE lt_input_field_name.
ls_input_field_name-fieldname = 'ADDR_ORIGIN'.
INSERT ls_input_field_name INTO TABLE lt_input_field_name.
ls_input_field_name-fieldname = 'STD_BP_ADDRESS'.
INSERT ls_input_field_name INTO TABLE lt_input_field_name.
CALL FUNCTION 'CRM_PARTNER_MAINTAIN_SINGLE_OW'
EXPORTING
iv_ref_guid = ls_partner-ref_guid
iv_ref_kind = gc_a
is_partner_com = ls_partner_com
CHANGING
ct_input_field_names = lt_input_field_name
EXCEPTIONS
error_occurred = 1
OTHERS = 2.
IF sy-subrc EQ 0.
CALL FUNCTION 'COM_PARTNER_ADDRESS_MAINTAIN'
EXPORTING
iv_caller = ls_partner_control-caller
iv_document_id = ls_partner_control-document_id
iv_partnerset_guid = ls_partner-ref_guid
iv_addr_nr = lv_new_addr_nr
iv_addr_np = lv_new_addr_np
iv_addr_type = lv_new_addr_type
is_bapiaddr1 = ls_bapiaddr1
iv_keep_err_adr = 'X'
TABLES
et_error_table = lt_error_table
EXCEPTIONS
error_occurred = 1
parameter_error = 2
OTHERS = 3.
ENDIF.
User | Count |
---|---|
4 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.