cancel
Showing results for 
Search instead for 
Did you mean: 

Address number change for partner in parties Involved

Former Member
0 Kudos

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



Accepted Solutions (1)

Accepted Solutions (1)

faisal_pc
Active Contributor
0 Kudos

Hi Ramanji,

Could you please pass MODE = 'B' and see. Don't forget to pass the field MODE in input fields also.

Thanks,

Faisal

Former Member
0 Kudos

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.

Answers (0)