on 2025 Oct 07 5:14 PM
Hi everyone,
I’m currently working on a project where I need to create a Business Partner in SAP and assign the Customer role (ZFLCU0) to it. I have the code working for these parts, but I’m struggling with the last step — associating a company to the Business Partner.
Here is the code I have so far, which is functional:
ls_central-SEARCHTERM1 = customer-name1.
ls_central-PARTNERTYPE = 'GE00'.
APPEND ls_central TO lt_central.
" Create Business Partner
CALL FUNCTION 'BAPI_BUPA_CREATE_FROM_DATA'
EXPORTING
partnercategory = '1'
centraldata = ls_central
IMPORTING
business_partner = lv_bpartner
TABLES
return = lt_return.
" Assign Customer Role (ZFLCU0)
CALL FUNCTION 'BAPI_BUPA_ROLE_ADD'
EXPORTING
businesspartner = lv_bpartner
businesspartnerrole = 'ZFLCU0'
TABLES
return = lt_return.
" Commit creation and changes
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = abap_true.Thanks in advance for your help!
Request clarification before answering.
After resolving this issue, and considering that there were not many responses and I couldn’t find concrete examples, I am sharing my solution to it.
This solution involved using several BAPIs: BAPI_BUPA_CREATE_FROM_DATA, BAPI_BUPA_ROLE_ADD_2, BUPA_TAX_ADD, BAPI_BUPA_FRG0040_CHANGE, CVI_EI_INBOUND_MAIN and BAPI_TRANSACTION_COMMIT.
Below is an example ABAP code showcasing this implementation:
DATA:
ls_central TYPE BAPIBUS1006_CENTRAL,
ls_central_org TYPE BAPIBUS1006_CENTRAL_ORGAN,
ls_addressdata TYPE BAPIBUS1006_ADDRESS,
lv_bpnumber TYPE BAPIBUS1006_HEAD-BPARTNER,
lt_return TYPE TABLE OF BAPIRET2.
ls_central-partnertype = 'GE00'. " Geral
ls_central-searchterm1 = 'Test'.
ls_central_org-name1 = 'Name'.
ls_addressdata-standardaddress = 'X'.
ls_addressdata-c_o_name = 'Test'.
ls_addressdata-city = 'Lisbon'.
ls_addressdata-postl_cod1 = '0000-000'.
ls_addressdata-country = 'PT'.
ls_addressdata-street = 'Lisbon Street 101'.
ls_addressdata-langu = 'P'.
CALL FUNCTION 'BAPI_BUPA_CREATE_FROM_DATA'
EXPORTING
partnercategory = '2' " Organization
centraldata = ls_central
centraldataorganization = ls_central_org
addressdata = ls_addressdata
IMPORTING
businesspartner = lv_bpnumber
TABLES
return = lt_return.
DATA:
lv_businesspartner TYPE BAPIBUS1006_HEAD-BPARTNER,
lv_businesspartnerrole TYPE BAPIBUS1006_BPROLES-PARTNERROLE.
lv_businesspartner = lv_bpnumber.
lv_businesspartnerrole = 'ZFLCU0'. " Customer Role
CALL FUNCTION 'BAPI_BUPA_ROLE_ADD_2'
EXPORTING
businesspartner = lv_businesspartner
businesspartnerrole = lv_businesspartnerrole
TABLES
return = lt_return.
CALL FUNCTION 'BUPA_TAX_ADD'
EXPORTING
iv_partner = lv_businesspartner
iv_tax_type = 'PT0'
iv_tax_number = 'PT266598820'
iv_x_save = 'X'
TABLES
ct_return = lt_return
EXCEPTIONS
record_already_exists = 1
invalid_data = 2
foreign_lock = 3
OTHERS = 4.
DATA:
ls_datachange TYPE BAPIBUS1006040_SALESCLASS,
ls_datachangex TYPE BAPIBUS1006040_SALESCLASSX.
ls_datachange-attribute = '01'.
ls_datachangex-attribute = 'X'.
CALL FUNCTION 'BAPI_BUPA_FRG0040_CHANGE'
EXPORTING
businesspartner = lv_businesspartner
data = ls_datachange
datax = ls_datachangex
TABLES
return = lt_return.
DATA:
lt_i_data TYPE CVIS_EI_EXTERN_T,
ls_i_data TYPE CVIS_EI_EXTERN,
ls_company TYPE CMDS_EI_COMPANY,
wa_partn TYPE BUS_EI_EXTERN,
wa_partn_hdr TYPE BUS_EI_HEADER,
ls_return TYPE BAPIRETM.
SELECT partner_guid INTO @DATA(lv_guid)
FROM but000
WHERE partner = @LV_businesspartner.
ENDSELECT.
wa_partn_hdr-object_instance-bpartnerguid = lv_guid.
wa_partn_hdr-object_instance-bpartner = lv_businesspartner.
wa_partn_hdr-object_task = 'M'. " Modify
MOVE-CORRESPONDING wa_partn_hdr TO wa_partn-header.
MOVE-CORRESPONDING wa_partn TO ls_i_data-partner.
ls_i_data-customer-header-object_instance-kunnr = lv_businesspartner.
ls_i_data-customer-header-object_task = 'U'. " Update
ls_company-task = 'I'. " Insert
ls_company-data_key = '101'. " Company Code
ls_company-data-akont = '2111100000'.
ls_company-datax-akont = 'X'.
APPEND ls_company TO ls_i_data-customer-company_data-company.
APPEND ls_i_data TO lt_i_data.
CALL FUNCTION 'CVI_EI_INBOUND_MAIN'
EXPORTING
i_data = lt_i_data
IMPORTING
e_return = ls_return.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = abap_true.This method populates the following tables: BUT000, KNA1, and KNB1.
I would like to thank you for the help provided!
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
To associate a company (i.e., assign company code data to the Business Partner), you need to create customer company code data using the appropriate BAPI. The BAPI you're currently using (BAPI_BUPA_CREATE_FROM_DATA) only creates the general Business Partner record. Assigning a company requires customer-specific data under a company code.
You should use BAPI_CUSTOMER_CREATEFROMDATA1 after assigning the customer role where
Alternatively, if the Business Partner already exists and you just want to extend it to a company code, use BAPI_CUSTOMER_CHANGEFROMDATA1. After assigning company data, don’t forget to commit
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Lakshmipathi,
Thanks for the explanation regarding the use of BAPI_CUSTOMER_CREATEFROMDATA1 to assign company code data to the Business Partner. However, I have a question about the PI_SALESORG field in the BAPI_CUSTOMER_CHANGEFROMDATA1.
According to the BAPI documentation, this field is mandatory, but in my case, since this is a Customer FI (not SD), it’s neither required nor expected to associate sales organization or sales-related data.
I would like to confirm whether, for a Customer FI, it’s acceptable to leave this field empty or ignore it during the update, as no sales data is relevant in my scenario.
Thanks in advance for your help!
| User | Count |
|---|---|
| 18 | |
| 7 | |
| 6 | |
| 6 | |
| 4 | |
| 4 | |
| 3 | |
| 2 | |
| 2 | |
| 2 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.