2023 Mar 21 1:37 PM
Hi Experts,
I have an requirment to create an customer in BP.
Here, I created the general data , Company code but i unable to create an sales and distribution.
I created it with 'BAPI_BUPA_FRG0010_ADD' but getting an error as 'No sales and distribution' .
Please guidance me or provide BAPI names.
LOOP AT lt_excel_1 INTO ls_excel_1.
IF ls_excel_1-role = 'ZCUST'. "businesspartnerrole
businesspartnerrole = 'FLCU00'.
ENDIF.
* **************************************** Creating a BP Role
partnercategory = '2'.
partnergroup = ls_excel_1-group.
* **************************************** Fill Central data
centraldata-searchterm1 = ls_excel_1-search1.
DATA: adrnr TYPE ad_addrnum,
w_part TYPE bu_partner,
err TYPE string.
CLEAR: adrnr, w_part, err.
centraldata-searchterm2 = ls_excel_1-search2.
centraldata-title_key = ls_excel_1-title.
centraldata-titleletter = ls_excel_1-salu.
IF partnercategory = 2.
ELSE.
centraldataperson-correspondlanguage = 'E'.
centraldataperson-correspondlanguageiso = 'EN'.
ENDIF.
* ***************************************** Fill Address Details
IF partnercategory = 2.
centraldataorganization-name1 = ls_excel_1-name1.
centraldataorganization-name2 = ls_excel_1-name2.
centraldataorganization-name3 = ls_excel_1-name3.
centraldataorganization-name4 = ls_excel_1-name4.
ELSEIF partnercategory = 1.
centraldataperson-firstname = ls_excel_1-name1.
ENDIF.
addressdata-street = ls_excel_1-street1.
addressdata-str_suppl1 = ls_excel_1-street2.
addressdata-str_suppl2 = ls_excel_1-street3.
addressdata-str_suppl3 = ls_excel_1-street4.
addressdata-postl_cod1 = ls_excel_1-post_code1.
addressdata-city = ls_excel_1-city1 .
addressdata-country = ls_excel_1-country .
addressdata-region = ls_excel_1-region .
addressdata-langu = ls_excel_1-spras .
REFRESH it_telephondata.
wa_telephondata-country = ls_excel_1-country.
wa_telephondata-telephone = ls_excel_1-tel_number1.
wa_telephondata-std_no = 'X'.
wa_telephondata-r_3_user = '3'.
wa_telephondata-consnumber = '001'.
wa_telephondata-home_flag = 'X'.
APPEND wa_telephondata TO it_telephondata.
CLEAR wa_telephondata.
wa_telephondata-country = ls_excel_1-country.
wa_telephondata-telephone = ls_excel_1-tel_number.
wa_telephondata-std_no = 'X'.
wa_telephondata-r_3_user = '1'.
wa_telephondata-consnumber = '002'.
wa_telephondata-home_flag = 'X'.
APPEND wa_telephondata TO it_telephondata.
REFRESH it_maildata.
wa_maildata-e_mail = ls_excel_1-smtp_addr.
wa_maildata-std_no = 'X'.
wa_maildata-std_recip = 'X'.
wa_maildata-home_flag = 'X'.
wa_maildata-consnumber = '001'.
APPEND wa_maildata TO it_maildata.
* ****************************************Creating A Business Partner
DATA: tax_ret TYPE TABLE OF bapiret2,
lv_bp TYPE bu_partner,
lv_kunnr TYPE kna1-kunnr,
w_log TYPE kna1-kunnr.
CLEAR businesspartner.
lv_bp = ls_excel_1-search2.
CALL FUNCTION 'BAPI_BUPA_CREATE_FROM_DATA'
EXPORTING
* businesspartnerextern = businesspartnerextern
partnercategory = partnercategory
partnergroup = partnergroup
centraldata = centraldata
centraldataperson = centraldataperson
centraldataorganization = centraldataorganization
addressdata = addressdata
IMPORTING
businesspartner = businesspartner
TABLES
telefondata = it_telephondata
e_maildata = it_maildata
return = return.
READ TABLE return INTO lwa_return WITH KEY type = 'E' .
IF sy-subrc EQ 0.
lv_error = 'X'.
ENDIF.
IF lv_error IS NOT INITIAL.
ROLLBACK WORK.
ENDIF.
IF businesspartner IS NOT INITIAL.
IF lv_error IS INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
CONCATENATE 'S -' businesspartner 'BP-created' INTO DATA(gv_err1).
ENDIF.
ENDIF.
DATA: lw_bupa TYPE bu_partner.
DATA : lt_return1 TYPE STANDARD TABLE OF bapiret2.
DATA : lv_taxtype TYPE bapibus1006tax-taxtype, lv_taxnum TYPE bapibus1006tax-taxnumber.
IF businesspartner IS NOT INITIAL.
lv_taxtype = ls_excel_1-tax.
lv_taxnum = ls_excel_1-taxnumxl.
IF ( lv_taxtype IS NOT INITIAL ) AND ( lv_taxnum IS NOT INITIAL ).
CALL FUNCTION 'BAPI_BUPA_TAX_ADD'
EXPORTING
businesspartner = businesspartner
taxtype = lv_taxtype
taxnumber = lv_taxnum
TABLES
return = lt_return1.
READ TABLE lt_return1 INTO DATA(gs_ret) WITH KEY type = 'E'.
IF sy-subrc = 0.
ENDIF.
ENDIF.
ENDIF.
IF businesspartner IS NOT INITIAL.
TRY .
DATA : lv_rltyp TYPE but100-rltyp.
CALL FUNCTION 'BAPI_BUPA_ROLE_ADD'
EXPORTING
businesspartner = businesspartner
businesspartnerrole = businesspartnerrole "'FLCU00'
* DIFFERENTIATIONTYPEVALUE =
TABLES
return = return.
*
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
CLEAR lv_rltyp.
SELECT SINGLE rltyp INTO lv_rltyp FROM but100 WHERE partner = businesspartner
AND rltyp = ls_excel_1-role.
IF lv_rltyp IS INITIAL.
WAIT UP TO 1 SECONDS.
ENDIF.
*&---------------------------------------------------------------------*
*& Add Customer Roles
*&---------------------------------------------------------------------*
CALL FUNCTION 'BAPI_BUPA_ROLE_ADD'
EXPORTING
businesspartner = businesspartner
businesspartnerrole = businesspartnerrole "'FLCU00'
* DIFFERENTIATIONTYPEVALUE =
TABLES
return = return.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
CLEAR lv_rltyp.
SELECT SINGLE rltyp INTO lv_rltyp FROM but100 WHERE partner = businesspartner
AND rltyp = ls_excel_1-role.
IF lv_rltyp IS INITIAL.
WAIT UP TO 1 SECONDS.
ENDIF.
* SELECT SINGLE * FROM but000 INTO TABLE @DATA(it_but000) WHERE partner = @businesspartner.
SELECT SINGLE * FROM but000 INTO @DATA(is_but000) WHERE partner = @businesspartner.
* SELECT * FROM cvi_cust_link INTO TABLE @DATA(it_cvi_cust_link) FOR ALL ENTRIES IN @it_but000 WHERE partner_guid = @it_but000-partner_guid.
SELECT * FROM cvi_cust_link INTO TABLE @DATA(it_cvi_cust_link) WHERE partner_guid = @is_but000-partner_guid AND customer EQ @is_but000-partner.
READ TABLE it_cvi_cust_link INTO DATA(wa_cvi_cust_link) INDEX 1.
* lv_kunnr = wa_cvi_cust_link-customer.
CATCH cx_salv_msg.
ENDTRY.
ENDIF.
lv_kunnr = businesspartner.
*
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = lv_kunnr
IMPORTING
output = lv_kunnr.
* CLEAR wa_kna1.
SELECT SINGLE * FROM kna1 INTO wa_kna1 WHERE kunnr = lv_kunnr.
IF sy-subrc = 0.
wa_kna1-j_1ipanno = ls_excel_1-pan.
UPDATE kna1 FROM wa_kna1.
ENDIF.
ls_customers-header-object_task = 'U'.
ls_address-postal-data-name = wa_kna1-name1.
ls_address-postal-data-country = wa_kna1-land1.
ls_address-postal-datax-name = 'X'.
ls_address-postal-datax-country = 'X'.
ls_address-task = 'U'.
ls_customers-central_data-address = ls_address.
ls_customers-central_data = ls_central_data.
* ls_customers-sales_data = ls_sales_data.
REFRESH: lt_company[].
CLEAR ls_company.
ls_company-task = 'I'.
ls_company-data_key-bukrs = ls_excel_1-companycode.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = ls_excel_1-rec_account
IMPORTING
output = ls_company-data-akont.
ls_company-datax-akont = 'X'.
IF headoffice IS NOT INITIAL.
ls_company-data-knrze = headoffice.
ls_company-datax-knrze = 'X'.
ENDIF.
ls_company-data-zterm = ls_excel_1-terms.
ls_company-datax-zterm = 'X'.
APPEND ls_company TO lt_company.
* ***********Sales to updated******************
*+++Sales area.
it_sales-sales_organization = ls_excel_1-sales.
it_sales-distribution_channel = ls_excel_1-dist.
it_sales-division = ls_excel_1-division.
* it_shipping-dlv_priority = ls_excel_1-delivery. "shipping tab
* it_shipping-order_combined = 'X'. "shipping tab
* it_shipping-shipping_cond = ls_excel_1-ship_con. "shipping tab
.
CALL FUNCTION 'BAPI_BUPA_FRG0010_ADD'
EXPORTING
businesspartner = businesspartner
sales_area = it_sales
TABLES
return = return.
IF return IS NOT INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
ENDIF.
* +++Order.
it_order-sales_dist = ls_excel_1-sales_dis.
it_order-price_grp = ls_excel_1-cu_pring.
it_order-cust_group = ls_excel_1-cu_grp.
CALL FUNCTION 'BAPI_SALESORDER_SIMULATE'
EXPORTING
order_header_in = it_sales
IMPORTING
sold_to_party = it_order.
ls_company_data-company = lt_company[].
ls_customers-company_data = ls_company_data.
APPEND ls_customers TO lt_customers.
is_master_data-customers = lt_customers[].
cmd_ei_api=>initialize( ).
CALL METHOD cmd_ei_api=>maintain_bapi
EXPORTING
is_master_data = is_master_data
IMPORTING
es_master_data_correct = es_master_data_correct
es_message_correct = es_message_correct
es_master_data_defective = es_master_data_defective
es_message_defective = es_message_defective.
IF es_message_defective-is_error IS INITIAL.
COMMIT WORK.
WAIT UP TO 1 SECONDS.
DATA(lv_partner) = ls_customers-header-object_instance-kunnr.
ELSE.
LOOP AT es_message_defective-messages INTO DATA(wa).
WAIT UP TO 1 SECONDS.
ENDLOOP.
ENDIF.
CLEAR : lv_flag.
CLEAR : centraldata,centraldataperson,centraldataorganization,addressdata,
businesspartner,partnergroup,partnercategory.
REFRESH : it_telephondata,it_maildata,return.
* CLEAR : lv_error.
ENDLOOP.
ENDFORM.