09-30-2020 8:07 AM
Hi ,
I got a requirement to upload customer master data from excel to SAP. For this I created a report using class i.e. CMD_EI_API method is MAINTAIN_BAPI. The report is working fine and the data also processed successfully through the class without any issues. But when I try to open created customer in table(kna1) or in XD03 level data is not displaying. But strangely when given customer number in the input field of XD02/XD03 tcode it is showing in F4 help values but it's not displaying after selecting it.
I already used COMMIT_WORK and also BAPI_TRANSACTION_COMMIT . But no luck.
Can anyone please suggest me what could be the issue and resolution ?
09-30-2020 8:07 AM
Hi and welcome to the SAP Community!
Thank you for visiting SAP Community to get answers to your questions. Since you're asking a question here for the first time, I recommend that you familiarize yourself with https://community.sap.com/resources/questions-and-answers (if you haven't already), as it provides tips for preparing questions that draw responses from our members. For example, you can outline what steps you took to find answers (and why they weren't helpful) and share screenshots of what you've seen/done. The more details you provide, the more likely it is that members will be able to assist you.
Should you wish, you can revise your question by selecting Actions, then Edit (although once someone answers your question, you'll lose the ability to edit the question -- but if that happens, you can leave more details in a comment).
Finally, if you're hoping to connect with readers, please consider adding a picture to your profile. Here's how you do it: https://www.youtube.com/watch?v=F5JdUbyjfMA&list=PLpQebylHrdh5s3gwy-h6RtymfDpoz3vDS. By personalizing your profile with a photo of you, you encourage readers to respond.
Cheers,
Julia SAP Community Moderator
09-30-2020 10:03 AM
Hi Purna,
Make sure that you used x fields. For example you filled both address data and addressx data together. I assume that you develop your program in ECC environment. I share with you following code which is worked for me before.
*&---------------------------------------------------------------------*
*& Form CREATE_CUSTOMER
*&---------------------------------------------------------------------*
FORM create_customer .
DATA: lt_rows TYPE salv_t_row,
ls_rows TYPE int4.
lt_rows = gs_scr-1903-r_selections->get_selected_rows( ).
IF lt_rows IS INITIAL.
MESSAGE i000(zsg) WITH text-002.
RETURN.
ENDIF.
DATA: ls_data TYPE cmds_ei_vmd_central_data,
ls_datax TYPE cmds_ei_vmd_central_data_xflag,
ls_address TYPE bapiad1vl,
ls_addressx TYPE bapiad1vlx,
ls_tax_ind TYPE cmds_ei_cmd_tax_ind,
ls_company_code TYPE cmds_ei_cmd_company,
ls_customers TYPE cmds_ei_main,
lt_email TYPE cvis_ei_smtp_t, """"EMAIL CONTACT ---
ls_contact TYPE cvis_ei_smtp,
lt_phone TYPE cvis_ei_phone_t, """PHONE AND FAX
ls_ph_contact TYPE cvis_ei_phone,
lt_fax TYPE cvis_ei_fax_t,
ls_fax_contact TYPE cvis_ei_fax,
ls_functions_t TYPE cmds_ei_functions_t,
ls_sales_data_st TYPE cmds_ei_sales,
lt_sales TYPE cmds_ei_sales_t,
lc_update TYPE c VALUE 'M',
lc_insert TYPE c VALUE 'I',
lv_tabix TYPE sy-tabix ,
lt_sales_dist TYPE TABLE OF zsog_fi_001_t_03.
DATA : ls_alv TYPE zsog_fi_001_s_08 .
SELECT * FROM zsog_fi_001_t_03 INTO TABLE lt_sales_dist.
SORT lt_sales_dist BY districts_number.
LOOP AT lt_rows INTO ls_rows.
READ TABLE gs_scr-1903-alv INTO ls_alv INDEX ls_rows.
lv_tabix = sy-tabix.
IF ls_alv-process EQ 'I'.
lc_insert = 'I'.
ELSEIF ls_alv-process EQ 'U'.
lc_insert = 'M'.
ENDIF.
PERFORM fill_tax_data USING ls_alv lc_insert CHANGING ls_tax_ind.
PERFORM fill_adres_comcode TABLES lt_sales_dist USING ls_alv lc_insert CHANGING ls_company_code ls_address ls_addressx.
PERFORM fill_central_data USING ls_alv lc_insert CHANGING ls_data ls_datax.
PERFORM fill_tel_fax_mail USING ls_alv lc_insert CHANGING lt_phone lt_fax lt_email.
PERFORM fill_sales_data USING ls_alv lc_insert CHANGING ls_sales_data_st ls_functions_t .
PERFORM fill_customer USING ls_alv lc_insert ls_company_code ls_address ls_addressx ls_data
ls_datax ls_tax_ind lt_phone lt_fax lt_email
CHANGING ls_customers.
PERFORM call_cmd_ei_api USING ls_customers lv_tabix CHANGING ls_alv.
CLEAR: ls_alv, ls_tax_ind, ls_company_code, ls_address, ls_addressx,
ls_data, ls_datax, lt_phone, lt_fax, lt_email, ls_sales_data_st, ls_functions_t,
ls_customers.
ENDLOOP.
gs_scr-1903-r_alv->refresh( ).
ENDFORM. " CREATE_CUSTOMER
*&---------------------------------------------------------------------*
*& Form FILL_TAX_DATA
*&---------------------------------------------------------------------*
FORM fill_tax_data USING ps_alv TYPE zsog_fi_001_s_08
lc_insert TYPE char1
CHANGING ps_tax_ind TYPE cmds_ei_cmd_tax_ind.
DATA: ls_tax_ind_st TYPE cmds_ei_tax_ind.
ls_tax_ind_st-task = lc_insert.
ls_tax_ind_st-data_key-aland = 'TR'.
ls_tax_ind_st-data_key-tatyp = 'MWST'.
ls_tax_ind_st-data-taxkd = '1'.
ls_tax_ind_st-datax-taxkd = 'X'.
APPEND ls_tax_ind_st TO ps_tax_ind-tax_ind.
ls_tax_ind_st-data_key-aland = 'TR'.
ls_tax_ind_st-data_key-tatyp = 'ZHRD'.
ls_tax_ind_st-data-taxkd = '0'.
ls_tax_ind_st-datax-taxkd = 'X'.
APPEND ls_tax_ind_st TO ps_tax_ind-tax_ind.
ls_tax_ind_st-data_key-aland = 'TR'.
ls_tax_ind_st-data_key-tatyp = 'ZWIA'.
ls_tax_ind_st-data-taxkd = '1'.
ls_tax_ind_st-datax-taxkd = 'X'.
APPEND ls_tax_ind_st TO ps_tax_ind-tax_ind.
ls_tax_ind_st-data_key-aland = 'TR'.
ls_tax_ind_st-data_key-tatyp = 'ZWOT'.
ls_tax_ind_st-data-taxkd = '1'.
ls_tax_ind_st-datax-taxkd = 'X'.
APPEND ls_tax_ind_st TO ps_tax_ind-tax_ind.
ls_tax_ind_st-data_key-aland = 'TR'.
ls_tax_ind_st-data_key-tatyp = 'ZOIV'.
ls_tax_ind_st-data-taxkd = '0'.
ls_tax_ind_st-datax-taxkd = 'X'.
APPEND ls_tax_ind_st TO ps_tax_ind-tax_ind.
ENDFORM. " FILL_TAX_DATA
*&---------------------------------------------------------------------*
*& Form FILL_ADRES_COMCODE
*&---------------------------------------------------------------------*
FORM fill_adres_comcode TABLES pt_sales_dist STRUCTURE zsog_fi_001_t_03
USING ps_alv TYPE zsog_fi_001_s_08
pc_insert TYPE char1
CHANGING ps_company_code TYPE cmds_ei_cmd_company
ps_address TYPE bapiad1vl
ps_addressx TYPE bapiad1vlx.
DATA: ls_company_code_st TYPE cmds_ei_company.
DATA: lv_char5 TYPE char5,
ls_sales_dist TYPE zsog_fi_001_t_03,
ls_rmf TYPE zsog_fi_001_s_07,
lv_sale_dist TYPE zsog_fi_001_s_06.
*
IF ps_alv-rmf IS NOT INITIAL.
READ TABLE ps_alv-rmf INTO ls_rmf INDEX 1.
ENDIF.
IF ps_alv-type EQ '1'.
ps_address-title = '0003'.
ELSEIF ps_alv-type EQ '2'.
ps_address-title = '0002'.
ELSE.
ps_address-title = '0003'.
ENDIF.
ps_address-name = ps_alv-business_name.
ps_address-name_2 = ls_rmf-owner_name.
ps_address-city = ps_alv-city.
*
* IF ps_alv-rlf IS NOT INITIAL.
* READ TABLE ps_alv-rlf INTO ls_rlf INDEX 1.
* ENDIF.
READ TABLE pt_sales_dist INTO ls_sales_dist WITH KEY districts_number = ps_alv-sales_district BINARY SEARCH.
* ps_address-district = ps_alv-ort02.
ps_address-district = ls_sales_dist-districts.
ps_address-country = 'TR'.
ps_address-langu = 'TR'.
* ps_address-region = ps_alv-regio. """COMNT
ps_address-sort1 = ps_alv-business_name.
ps_address-street = ps_alv-street.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = ps_alv-zip_code
IMPORTING
output = lv_char5.
ps_address-po_box = lv_char5.
ps_address-postl_cod1 = lv_char5.
*
ps_addressx-title = 'X'.
ps_addressx-name = 'X'.
ps_addressx-name_2 = 'X'.
ps_addressx-city = 'X'.
ps_addressx-district = 'X'.
ps_addressx-country = 'X'.
ps_addressx-langu = 'X'.
* ps_addressx-region = 'X'.
ps_addressx-sort1 = 'X'.
ps_addressx-street = 'X'.
ps_addressx-po_box = 'X'.
ps_addressx-postl_cod1 = 'X'.
*
ls_company_code_st-task = pc_insert.
ls_company_code_st-data-akont = '1200200001'. "aynı mutabakat hesabına mı gidecek
ls_company_code_st-data-zterm = 'Z000'.
ls_company_code_st-datax-akont = 'X'.
ls_company_code_st-datax-zterm = 'X'.
ls_company_code_st-data_key-bukrs = '2425'.
*
APPEND ls_company_code_st TO ps_company_code-company.
ENDFORM. " FILL_ADRES_COMCODE
*&---------------------------------------------------------------------*
*& Form FILL_CENTRAL_DATA
*&---------------------------------------------------------------------*
FORM fill_central_data USING ps_alv TYPE zsog_fi_001_s_08
pc_insert TYPE char1
CHANGING ps_data TYPE cmds_ei_vmd_central_data
ps_datax TYPE cmds_ei_vmd_central_data_xflag.
DATA: ls_rmf TYPE zsog_fi_001_s_07.
IF ps_alv-rmf IS NOT INITIAL.
READ TABLE ps_alv-rmf INTO ls_rmf INDEX 1.
ENDIF.
ps_data-ktokd = 'SG01'.
ps_data-brsch = 'SG01'.
* IF ps_alv-turkish_national_id IS NOT INITIAL.
* ps_data-stcd1 = ps_alv-turkish_national_id.
* ELSE.
* ENDIF.
* ps_data-stcd1 = ps_alv-house_number.
ps_data-stcd1 = ps_alv-tax_house.
ps_data-stcd2 = ls_rmf-tax_number.
ps_data-stcd3 = 'X'.
ps_data-katr2 = ps_alv-action_code.
ps_data-katr3 = ps_alv-retailer_sub_object.
ps_data-katr4 = ps_alv-sales_territory_region.
ps_data-katr5 = ps_alv-commission_package_id.
* IF ps_alv-is_lucky_retailer EQ '1'.
* ps_data-katr6 = 'Y'.
* ELSE.
* ps_data-katr6 = 'N'.
* ENDIF.
ps_data-katr6 = ps_alv-is_lucky_retailer.
*
ps_datax-ktokd = 'X'.
ps_datax-brsch = 'X'.
ps_datax-stcd1 = 'X'.
ps_datax-stcd2 = 'X'.
ps_datax-stcd3 = 'X'.
ps_datax-katr2 = 'X'.
ps_datax-katr3 = 'X'.
ps_datax-katr4 = 'X'.
ps_datax-katr5 = 'X'.
ps_datax-katr6 = 'X'.
IF ps_alv-action_code EQ '8'.
* ps_data-sperr = 'X'.
ps_data-loevm = 'X'.
ps_data-nodel = 'X'.
* ps_datax-sperr = 'X'.
ps_datax-loevm = 'X'.
ps_datax-nodel = 'X'.
ELSEif ps_alv-action_code EQ '4'.
* ps_data-sperr = ' '.
ps_data-loevm = ' '.
ps_data-nodel = ' '.
* ps_datax-sperr = 'X'.
ps_datax-loevm = 'X'.
ps_datax-nodel = 'X'.
ENDIF.
ENDFORM. " FILL_CENTRAL_DATA
*&---------------------------------------------------------------------*
*& Form FILL_TEL_FAX_MAIL
*&---------------------------------------------------------------------*
FORM fill_tel_fax_mail USING ps_alv TYPE zsog_fi_001_s_08
pc_insert TYPE char1
CHANGING pt_phone TYPE cvis_ei_phone_t
pt_fax TYPE cvis_ei_fax_t
pt_email TYPE cvis_ei_smtp_t.
DATA: ls_rmf TYPE zsog_fi_001_s_07.
IF ps_alv-rmf IS NOT INITIAL.
READ TABLE ps_alv-rmf INTO ls_rmf INDEX 1.
ENDIF.
DATA: ls_phone TYPE cvis_ei_phone_str,
ls_fax TYPE cvis_ei_fax_str,
ls_email TYPE cvis_ei_smtp_str.
ls_phone-contact-data-countryiso = 'TR'.
ls_phone-contact-data-telephone = ps_alv-phone1.
APPEND ls_phone TO pt_phone.
ls_phone-contact-data-countryiso = 'TR'.
ls_phone-contact-data-telephone = ps_alv-phone2.
APPEND ls_phone TO pt_phone.
IF ps_alv-fax IS NOT INITIAL.
ls_fax-contact-data-countryiso = 'TR'.
ls_fax-contact-data-fax = ps_alv-fax.
APPEND ls_fax TO pt_fax.
ENDIF.
IF ps_alv-email IS NOT INITIAL.
ls_email-contact-data-e_mail = ps_alv-email.
APPEND ls_email TO pt_email.
ENDIF.
ENDFORM. " FILL_TEL_FAX_MAIL
*&---------------------------------------------------------------------*
*& Form FILL_SALES_DATA
*&---------------------------------------------------------------------*
FORM fill_sales_data USING ps_alv TYPE zsog_fi_001_s_08
pc_insert TYPE char1
CHANGING ps_sales_data_st TYPE cmds_ei_sales
ps_functions_t TYPE cmds_ei_functions_t.
DATA: ls_sales_data TYPE cmds_ei_sales_data,
ls_functions_st TYPE cmds_ei_functions.
*
ls_sales_data-zterm = 'Z000'.
ls_sales_data-kalks = '1'.
ls_sales_data-versg = '1'.
ls_sales_data-ktgrd = 'D2'.
ls_sales_data-bzirk = 'GENEL'.
ls_sales_data-waers = 'TRY'.
ls_sales_data-lprio = '02'.
ls_sales_data-inco1 = 'EXW'.
ls_sales_data-konda = 'DG'.
ls_sales_data-inco2 = '.'.
ps_sales_data_st-data = ls_sales_data.
ls_functions_st-task = pc_insert.
ls_functions_st-data_key-parvw = 'AG'.
ls_functions_st-data-defpa = 'X'.
ls_functions_st-data-partner = ps_alv-retail_location_id."'INTERNAL'.
APPEND ls_functions_st TO ps_functions_t.
CLEAR: ls_functions_st.
*
ls_functions_st-task = pc_insert.
ls_functions_st-data_key-parvw = 'WE'.
ls_functions_st-data-defpa = 'X'.
ls_functions_st-data-partner = ps_alv-retail_location_id."'INTERNAL'.
APPEND ls_functions_st TO ps_functions_t.
CLEAR: ls_functions_st.
ls_functions_st-task = pc_insert.
ls_functions_st-data_key-parvw = 'RG'.
ls_functions_st-data-defpa = 'X'.
ls_functions_st-data-partner = ps_alv-retail_location_id."'INTERNAL'.
APPEND ls_functions_st TO ps_functions_t.
CLEAR: ls_functions_st.
ls_functions_st-task = pc_insert.
ls_functions_st-data_key-parvw = 'RE'.
ls_functions_st-data-defpa = 'X'.
ls_functions_st-data-partner = ps_alv-retail_location_id."'INTERNAL'.
APPEND ls_functions_st TO ps_functions_t.
CLEAR: ls_functions_st.
ps_sales_data_st-functions-current_state = 'X'.
ps_sales_data_st-functions-functions = ps_functions_t.
ENDFORM. " FILL_SALES_DATA
*&---------------------------------------------------------------------*
*& Form FILL_CUSTOMER
*&---------------------------------------------------------------------*
FORM fill_customer USING ps_alv TYPE zsog_fi_001_s_08
pc_insert TYPE char1
ps_company_code TYPE cmds_ei_cmd_company
ps_address TYPE bapiad1vl
ps_addressx TYPE bapiad1vlx
ps_data TYPE cmds_ei_vmd_central_data
ps_datax TYPE cmds_ei_vmd_central_data_xflag
ps_tax_ind TYPE cmds_ei_cmd_tax_ind
pt_phone TYPE cvis_ei_phone_t
pt_fax TYPE cvis_ei_fax_t
pt_email TYPE cvis_ei_smtp_t
CHANGING ps_customers TYPE cmds_ei_main.
DATA: ls_customer TYPE cmds_ei_extern.
ls_customer-central_data-address-postal-data = ps_address.
ls_customer-central_data-address-postal-datax = ps_addressx.
ls_customer-central_data-address-task = pc_insert.
ls_customer-central_data-central-data = ps_data.
ls_customer-central_data-central-datax = ps_datax.
ls_customer-central_data-tax_ind = ps_tax_ind.
ls_customer-central_data-address-communication-phone-phone = pt_phone[].
ls_customer-central_data-address-communication-fax-fax = pt_fax[].
ls_customer-central_data-address-communication-smtp-smtp = pt_email[].
ls_customer-sales_data-current_state = 'X'.
ls_customer-header-object_instance-kunnr = ps_alv-retail_location_id.
ls_customer-central_data-central-data-ktokd = 'SG01'.
ls_customer-header-object_instance-kunnr = ps_alv-retail_location_id.
ls_customer-header-object_task = pc_insert.
ls_customer-company_data = ps_company_code.
APPEND ls_customer TO ps_customers-customers.
ENDFORM. " FILL_CUSTOMER
*&---------------------------------------------------------------------*
*& Form CALL_CMD_EI_API
*&---------------------------------------------------------------------*
FORM call_cmd_ei_api USING ps_customers TYPE cmds_ei_main
pv_tabix TYPE sy-tabix
CHANGING ps_alv TYPE zsog_fi_001_s_08 .
DATA: ls_correct TYPE cmds_ei_main,
ls_defective TYPE cmds_ei_main,
ls_mes_correct TYPE cvis_message,
ls_mes_error TYPE cvis_message,
ls_bapiret2 TYPE bapiret2,
lt_bapiret2 TYPE TABLE OF bapiret2.
DATA: ls_rlf TYPE zsog_fi_001_t_01 ,
ls_rmf TYPE zsog_fi_001_t_02 ,
lt_rlf TYPE TABLE OF zsog_fi_001_t_01,
lt_rmf TYPE TABLE OF zsog_fi_001_t_02 ,
ls_alv_rmf TYPE zsog_fi_001_s_07.
CALL METHOD cmd_ei_api=>maintain_bapi
EXPORTING
iv_test_run = ''
iv_collect_messages = 'X'
is_master_data = ps_customers
IMPORTING
es_master_data_correct = ls_correct
es_message_correct = ls_mes_correct
es_master_data_defective = ls_defective
es_message_defective = ls_mes_error.
IF ls_mes_error-is_error IS INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
ls_bapiret2-type = 'S'.
ls_bapiret2-id = 'ZSG'.
ls_bapiret2-number = '000'.
ls_bapiret2-message = ps_alv-retailer_debtor_id && | Müşterisi başarıyla yaratıldı/güncellendi!|.
ls_bapiret2-message_v1 = ps_alv-retailer_debtor_id && | Müşterisi başarıyla yaratıldı/güncellendi!|.
ls_bapiret2-message_v2 = ps_alv-retailer_debtor_id && | Müşterisi başarıyla yaratıldı/güncellendi!|.
ls_bapiret2-message_v3 = ps_alv-retailer_debtor_id && | Müşterisi başarıyla yaratıldı/güncellendi!|.
APPEND ls_bapiret2 TO lt_bapiret2.
ps_alv-status = icon_action_success.
ps_alv-created = icon_okay.
ps_alv-process = 'U'.
ps_alv-t_messages = lt_bapiret2.
MODIFY gs_scr-1903-alv FROM ps_alv INDEX pv_tabix TRANSPORTING status t_messages created process.
MOVE-CORRESPONDING ps_alv TO ls_rlf.
ls_rlf-mandt = sy-mandt.
APPEND ls_rlf TO lt_rlf.
LOOP AT ps_alv-rmf INTO ls_alv_rmf.
MOVE-CORRESPONDING ls_alv_rmf TO ls_rmf.
APPEND ls_rmf TO lt_rmf.
CLEAR: ls_rmf.
ENDLOOP.
CLEAR: ls_rlf.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ps_alv-status = icon_action_fault.
ps_alv-t_messages = ls_mes_error-messages.
MODIFY gs_scr-1903-alv FROM ps_alv INDEX pv_tabix TRANSPORTING status t_messages.
* APPEND LINES OF ls_mes_error-MESSAGES TO E_MESSAGES.
ENDIF.
IF lt_rlf IS NOT INITIAL.
ls_rlf-mandt = sy-mandt.
MODIFY lt_rlf FROM ls_rlf TRANSPORTING mandt WHERE mandt IS INITIAL.
MODIFY zsog_fi_001_t_01 FROM TABLE lt_rlf.
COMMIT WORK AND WAIT .
ENDIF.
IF lt_rmf IS NOT INITIAL.
MODIFY zsog_fi_001_t_02 FROM TABLE lt_rmf.
COMMIT WORK AND WAIT.
ENDIF.
ENDFORM. " CALL_CMD_EI_API
09-30-2020 2:19 PM