on 2021 Apr 03 9:30 AM
hi guys
im using vmd_ei_api=>maintain_bapi to create vendor
i can create a vendor successfully with below's code but there are some problems:
1. even though i have populated central_data-central-data-stcd1 (identification - tax number), address-postal-data-country, address-postal-data-langu, they are not showing in tcode BP?
2. there is no place to populate ( identification - tax number's category )?
3. after calling maintain_bapi and commit, i cannot use the same lifnr number returned from it in tcode BP. It seems that i need to add '1' to the number in order to view it in BP? It says the previous lifnr is not confirmed yet?
Could you guys please advise what went wrong with the code? i have spent hours to debug but yet to find the problem.
Thanks.
DATA: ls_vmds_ei_main TYPE vmds_ei_main,
ls_vmds_ei_extern TYPE vmds_ei_extern,
ls_vmds_ei_company TYPE vmds_ei_company.
CLEAR ls_vmds_ei_main.
LOOP AT gt_input INTO gs_input.
CLEAR ls_vmds_ei_extern.
CLEAR ls_vmds_ei_company.
"check whether existing record exists
READ TABLE lt_lfb1 INTO DATA(ls_lfb1)
WITH KEY bukrs = gs_input-bukrs
altkn = gs_input-lifnr
BINARY SEARCH.
IF sy-subrc = 0.
"key
ls_vmds_ei_extern-header-object_instance-lifnr = |{ gs_input-lifnr ALPHA = IN }|.
ls_vmds_ei_extern-header-object_task = 'U'. "change
ELSE.
"key
"get new number
READ TABLE lt_tb001 INTO DATA(ls_tb001)
WITH KEY bu_group = gs_input-ktokk.
IF sy-subrc = 0.
CALL FUNCTION 'NUMBER_GET_NEXT'
EXPORTING
nr_range_nr = 'V8'
object = 'BU_PARTNER'
IMPORTING
number = ls_vmds_ei_extern-header-object_instance-lifnr
EXCEPTIONS
interval_not_found = 1
number_range_not_intern = 2
object_not_found = 3
quantity_is_0 = 4
quantity_is_not_1 = 5
interval_overflow = 6
buffer_overflow = 7
OTHERS = 8.
ENDIF.
ls_vmds_ei_extern-header-object_task = 'I'. "create
ENDIF.
"general data
ls_vmds_ei_extern-central_data-central-data-ktokk = 'ZEMP'.
ls_vmds_ei_extern-central_data-central-data-stcd1 = gs_input-stcd1. <<=====================
ls_vmds_ei_extern-central_data-central-data-stkzn = gs_input-stkzn.
ls_vmds_ei_extern-central_data-central-data-sexkz = gs_input-sexkz.
ls_vmds_ei_extern-central_data-central-data-j_1kfrepre = 'person1'.
ls_vmds_ei_extern-central_data-central-data-j_1kftbus = 'ABC'.
ls_vmds_ei_extern-central_data-central-data-j_1kftind = 'ABC'.
ls_vmds_ei_extern-central_data-central-datax-ktokk = abap_true.
ls_vmds_ei_extern-central_data-central-datax-stcd1 = abap_true. <<=====================
ls_vmds_ei_extern-central_data-central-datax-stkzn = abap_true.
ls_vmds_ei_extern-central_data-central-datax-sexkz = abap_true.
ls_vmds_ei_extern-central_data-central-datax-j_1kfrepre = abap_true.
ls_vmds_ei_extern-central_data-central-datax-j_1kftbus = abap_true.
ls_vmds_ei_extern-central_data-central-datax-j_1kftind = abap_true.
ls_vmds_ei_extern-central_data-address-task = 'M'.
ls_vmds_ei_extern-central_data-address-postal-data-name = gs_input-name1.
ls_vmds_ei_extern-central_data-address-postal-data-street = 'Street 1'. <<=====================
ls_vmds_ei_extern-central_data-address-postal-data-country = gs_input-land1. <<==================
ls_vmds_ei_extern-central_data-address-postal-data-langu = gs_input-spras. <<===================
ls_vmds_ei_extern-central_data-address-postal-data-sort1 = gs_input-sortl.
ls_vmds_ei_extern-central_data-address-postal-datax-name = abap_true.
ls_vmds_ei_extern-central_data-address-postal-datax-street = abap_true. <<=====================
ls_vmds_ei_extern-central_data-address-postal-datax-country = abap_true. <<=====================
ls_vmds_ei_extern-central_data-address-postal-datax-langu = abap_true. <<=====================
ls_vmds_ei_extern-central_data-address-postal-datax-sort1 = abap_true.
READ TABLE lt_country_iso INTO DATA(ls_country_iso) WITH KEY land1 = gs_input-land1.
IF sy-subrc = 0.
ls_vmds_ei_extern-central_data-address-postal-data-countryiso = ls_country_iso-intca.
ls_vmds_ei_extern-central_data-address-postal-datax-countryiso = abap_true.
ENDIF.
READ TABLE lt_language_iso INTO DATA(ls_language_iso) WITH KEY spras = gs_input-spras.
IF sy-subrc = 0.
ls_vmds_ei_extern-central_data-address-postal-data-langu_iso = ls_language_iso-laiso.
ls_vmds_ei_extern-central_data-address-postal-datax-langu_iso = abap_true.
ENDIF.
"company code page
ls_vmds_ei_company-task = 'M'. "create or change
ls_vmds_ei_company-data_key-bukrs = gs_input-bukrs.
ls_vmds_ei_company-data-akont = gs_input-akont.
ls_vmds_ei_company-data-altkn = gs_input-lifnr.
ls_vmds_ei_company-data-zterm = 'Z000'.
ls_vmds_ei_company-data-reprf = 'X'.
ls_vmds_ei_company-data-zwels = gs_output-zwels(1).
ls_vmds_ei_company-datax-akont = abap_true.
ls_vmds_ei_company-datax-altkn = abap_true.
ls_vmds_ei_company-datax-zterm = abap_true.
ls_vmds_ei_company-datax-reprf = abap_true.
ls_vmds_ei_company-datax-zwels = abap_true.
APPEND ls_vmds_ei_company TO ls_vmds_ei_extern-company_data-company[].
APPEND ls_vmds_ei_extern TO ls_vmds_ei_main-vendors[].
ENDLOOP.
CALL METHOD vmd_ei_api=>maintain_bapi
EXPORTING
iv_test_run = p_test
iv_collect_messages = abap_true
is_master_data = ls_vmds_ei_main
IMPORTING
es_master_data_correct = DATA(ls_vendor_correct)
es_message_correct = DATA(ls_message_correct)
es_master_data_defective = DATA(ls_vendor_defective)
es_message_defective = DATA(ls_message_defective).
IF p_test = ' '.
COMMIT WORK.
ENDIF.
Request clarification before answering.
i have solved the issue by using class cl_md_bp_maintain=>maintain
here is the code sample in case anyone wants to refer
DATA: lt_cvis_ei_extern TYPE cvis_ei_extern_t,
ls_cvis_ei_extern TYPE cvis_ei_extern,
ls_vmds_ei_company TYPE vmds_ei_company,
ls_role TYPE bus_ei_bupa_roles,
ls_taxnumber TYPE bus_ei_bupa_taxnumber,
ls_address TYPE bus_ei_bupa_address,
ls_bank_detail TYPE bus_ei_bupa_bankdetail,
lt_return_map TYPE mdg_bs_bp_msgmap_t,
ls_return TYPE bapiret2,
lt_return TYPE bapiret2_t.
LOOP AT gt_input INTO gs_input.
CLEAR ls_cvis_ei_extern.
"business partner data
ls_cvis_ei_extern-ensure_create-create_vendor = abap_true.
"key
CALL METHOD cl_system_uuid=>if_system_uuid_static~create_uuid_c32
RECEIVING
uuid = ls_cvis_ei_extern-partner-header-object_instance-bpartnerguid.
ls_cvis_ei_extern-partner-header-object_task = 'M' . "I / U / M / D
ls_cvis_ei_extern-partner-central_data-common-data-bp_control-category = '2'. "organization
ls_cvis_ei_extern-partner-central_data-common-data-bp_control-grouping = 'ZEMP'.
ls_cvis_ei_extern-partner-central_data-common-data-bp_centraldata-searchterm1 = gs_input-sortl.
ls_cvis_ei_extern-partner-central_data-common-datax-bp_centraldata-searchterm1 = abap_true.
ls_cvis_ei_extern-partner-central_data-common-data-bp_organization-name1 = gs_input-name1.
ls_cvis_ei_extern-partner-central_data-common-datax-bp_organization-name1 = abap_true.
"address
CLEAR ls_address.
ls_address-task = 'M'. "I U M D (S)tandard
ls_address-data_key-operation = 'XXDFLT'. "standard
ls_address-data-postal-data-standardaddress = abap_true.
ls_address-data-postal-data-street = 'street1'. "mandatory
ls_address-data-postal-data-country = gs_input-land1.
ls_address-data-postal-data-langu = gs_input-spras.
ls_address-data-postal-datax-standardaddress = abap_true.
ls_address-data-postal-datax-street = abap_true.
ls_address-data-postal-datax-country = abap_true.
ls_address-data-postal-datax-langu = abap_true.
ls_address-currently_valid = abap_true.
APPEND ls_address TO ls_cvis_ei_extern-partner-central_data-address-addresses[].
"bank details
CLEAR ls_bank_detail.
ls_bank_detail-task = 'I'. "I U D
ls_bank_detail-data-bank_ctry = gs_input-land1.
ls_bank_detail-data-bank_key = '3'.
ls_bank_detail-data-bank_acct = gs_input-bankn.
ls_bank_detail-data-ctrl_key = '1'.
ls_bank_detail-data-bank_ref = 'TESTBANK'.
ls_bank_detail-datax-bank_ctry = abap_true.
ls_bank_detail-datax-bank_key = abap_true.
ls_bank_detail-datax-bank_acct = abap_true.
ls_bank_detail-datax-ctrl_key = abap_true.
ls_bank_detail-datax-bank_ref = abap_true.
ls_bank_detail-currently_valid = abap_true.
APPEND ls_bank_detail TO ls_cvis_ei_extern-partner-central_data-bankdetail-bankdetails[].
"tax number
CLEAR ls_taxnumber.
ls_taxnumber-task = 'I'. "I / U / D
ls_taxnumber-data_key-taxtype = 'X1'.
ls_taxnumber-data_key-taxnumber = gs_input-stcd1.
APPEND ls_taxnumber TO ls_cvis_ei_extern-partner-central_data-taxnumber-taxnumbers[].
ls_cvis_ei_extern-partner-central_data-taxnumber-common-data-nat_person = gs_input-stkzn.
ls_cvis_ei_extern-partner-central_data-taxnumber-common-datax-nat_person = abap_true.
"role
CLEAR ls_role.
ls_role-task = 'I'. "I / D
ls_role-data_key = 'FLVN00'.
ls_role-data-rolecategory = 'FLVN00'.
ls_role-data-valid_from = sy-datum.
ls_role-data-valid_to = '99991231'.
ls_role-datax-valid_from = abap_true.
ls_role-datax-valid_to = abap_true.
ls_role-currently_valid = abap_true.
APPEND ls_role TO ls_cvis_ei_extern-partner-central_data-role-roles[].
"======================================================================
"vendor maintenance LFB1
ls_cvis_ei_extern-vendor-header-object_task = 'I'.
CLEAR ls_cvis_ei_extern-vendor-header-object_instance-lifnr.
ls_cvis_ei_extern-vendor-central_data-central-data-ktokk = 'ZEMP'.
ls_cvis_ei_extern-vendor-central_data-central-data-stcd1 = gs_input-stcd1.
ls_cvis_ei_extern-vendor-central_data-central-data-stkzn = gs_input-stkzn.
ls_cvis_ei_extern-vendor-central_data-central-data-sexkz = gs_input-sexkz.
ls_cvis_ei_extern-vendor-central_data-central-data-j_1kfrepre = 'test'. "mandatory
ls_cvis_ei_extern-vendor-central_data-central-data-j_1kftbus = 'CoD'. "mandatory
ls_cvis_ei_extern-vendor-central_data-central-data-j_1kftind = 'ABC'. "mandatory
ls_cvis_ei_extern-vendor-central_data-central-datax-ktokk = abap_true.
ls_cvis_ei_extern-vendor-central_data-central-datax-stcd1 = abap_true.
ls_cvis_ei_extern-vendor-central_data-central-datax-stkzn = abap_true.
ls_cvis_ei_extern-vendor-central_data-central-datax-sexkz = abap_true.
ls_cvis_ei_extern-vendor-central_data-central-datax-j_1kfrepre = abap_true.
ls_cvis_ei_extern-vendor-central_data-central-datax-j_1kftbus = abap_true.
ls_cvis_ei_extern-vendor-central_data-central-datax-j_1kftind = abap_true.
"""address will be copied from business partner above
* ls_cvis_ei_extern-vendor-central_data-address-task = 'M'. "I U D M
* ls_cvis_ei_extern-vendor-central_data-address-postal-data-name = gs_input-name1.
* ls_cvis_ei_extern-vendor-central_data-address-postal-data-street = 'street1'. "mandatory
* ls_cvis_ei_extern-vendor-central_data-address-postal-data-country = gs_input-land1.
* ls_cvis_ei_extern-vendor-central_data-address-postal-data-langu = gs_input-spras.
* ls_cvis_ei_extern-vendor-central_data-address-postal-data-sort1 = gs_input-sortl.
* ls_cvis_ei_extern-vendor-central_data-address-postal-datax-name = abap_true.
* ls_cvis_ei_extern-vendor-central_data-address-postal-datax-street = abap_true.
* ls_cvis_ei_extern-vendor-central_data-address-postal-datax-country = abap_true.
* ls_cvis_ei_extern-vendor-central_data-address-postal-datax-langu = abap_true.
* ls_cvis_ei_extern-vendor-central_data-address-postal-datax-sort1 = abap_true.
"""bank detail will be copied from business partner above
* CLEAR ls_cvis_bank_detail.
* APPEND ls_cvis_bank_detail TO ls_cvis_ei_extern-vendor-central_data-bankdetail-bankdetails[].
"company code page
CLEAR ls_vmds_ei_company.
ls_vmds_ei_company-task = 'M'. "create or change "I U M
ls_vmds_ei_company-data_key-bukrs = gs_input-bukrs.
ls_vmds_ei_company-data-akont = gs_input-akont.
ls_vmds_ei_company-data-altkn = gs_input-lifnr.
ls_vmds_ei_company-data-zterm = 'Z000'.
ls_vmds_ei_company-data-reprf = 'X'.
ls_vmds_ei_company-data-zwels = gs_input-zwels(1).
ls_vmds_ei_company-datax-akont = abap_true.
ls_vmds_ei_company-datax-altkn = abap_true.
ls_vmds_ei_company-datax-zterm = abap_true.
ls_vmds_ei_company-datax-reprf = abap_true.
ls_vmds_ei_company-datax-zwels = abap_true.
APPEND ls_vmds_ei_company TO ls_cvis_ei_extern-vendor-company_data-company[].
"validate
REFRESH lt_return_map.
CALL METHOD cl_md_bp_maintain=>validate_single
EXPORTING
i_data = ls_cvis_ei_extern
IMPORTING
et_return_map = lt_return_map.
LOOP AT lt_return_map INTO DATA(ls_return_map) WHERE type = 'A' OR type = 'E'.
EXIT.
ENDLOOP.
"if no problem, append to table for next processing
IF sy-subrc <> 0.
APPEND ls_cvis_ei_extern TO lt_cvis_ei_extern[].
ENDIF.
ENDLOOP.
IF p_test IS INITIAL.
IF lt_cvis_ei_extern[] IS NOT INITIAL.
CALL METHOD cl_md_bp_maintain=>maintain
EXPORTING
i_data = lt_cvis_ei_extern
IMPORTING
e_return = DATA(lt_bapiretm).
ENDIF.
CLEAR ls_return.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = abap_true
IMPORTING
return = ls_return.
ENDIF.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi lead
Not sure on your program as I need to be able to run it and debug to understand whats the issue
But this is how I did it used FM BAPI_BUPA_CREATE_FROM_DATA and added all the data in the segments using IDOC and was able to create the vendor,
For identification use BADI BADI_FITV_VENDOR_SYNC and you can try method
IF_FITV_VENDOR_SYNC~MODIFY_IDENTIFICATION_NUMBERS
CALL FUNCTION 'BAPI_BUPA_CREATE_FROM_DATA'
EXPORTING
partnercategory = lv_partnercategory
partnergroup = lv_partnergroup
centraldata = ls_centraldata
centraldataperson = ls_centraldataperson
addressdata = ls_addressdata
IMPORTING
businesspartner = lv_businesspartner
TABLES
telefondata = lt_phones
e_maildata = lt_emails
return = lt_return.
Regards
Vinita
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
100 | |
11 | |
10 | |
9 | |
6 | |
5 | |
4 | |
4 | |
3 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.