FORM frm_bp02 . * 更改供应商所需变量 DATA:l_xfeld TYPE xfeld, "复选框 ls_data TYPE vmds_ei_main, "供应商总数据 ls_msg1 TYPE vmds_ei_main, ls_msg2 TYPE cvis_message, ls_msg3 TYPE vmds_ei_main, ls_msg4 TYPE cvis_message, l_msg_tmp TYPE char255. * 复杂外部接口的供应商 DATA:ls_vendor TYPE vmds_ei_extern, lt_vendor TYPE vmds_ei_extern_t. * 供应商抬头数据 DATA ls_header TYPE vmds_ei_header. ls_header-object_instance-lifnr = gs_alv-partner. ls_header-object_task = \'U\'. * 供应商中心数据 DATA ls_central_data TYPE vmds_ei_central_data. ls_central_data-address-task = \'U\'. ls_central_data-address-postal-data-name = gs_alv-name_org1. ls_central_data-address-postal-datax-name = \'X\'. ls_central_data-address-postal-data-name_2 = gs_alv-name_org2. ls_central_data-address-postal-datax-name_2 = \'X\'. ls_central_data-address-postal-data-sort1 = gs_alv-bu_sort1. ls_central_data-address-postal-datax-sort1 = \'X\'. ls_central_data-address-postal-data-street = gs_alv-street. ls_central_data-address-postal-datax-street = \'X\'. ls_central_data-address-postal-data-postl_cod1 = gs_alv-post_code1. ls_central_data-address-postal-datax-postl_cod1 = \'X\'. ls_central_data-address-postal-data-city = gs_alv-city1. ls_central_data-address-postal-datax-city = \'X\'. ls_central_data-address-postal-data-pobox_ctry = gs_alv-land1. ls_central_data-address-postal-datax-pobox_ctry = \'X\'. ls_central_data-address-postal-data-regiogroup = gs_alv-regio. ls_central_data-address-postal-data-regiogroup = \'X\'. CALL FUNCTION \'CONVERSION_EXIT_ISOLA_INPUT\' EXPORTING input = gs_alv-langu IMPORTING output = gs_alv-langu EXCEPTIONS unknown_language = 1 OTHERS = 2. IF sy-subrc <> 0. * Implement suitable error handling here ENDIF. ls_central_data-address-postal-data-langu = gs_alv-langu. ls_central_data-address-postal-datax-langu = \'X\'. ***************************************************************************************** * 银行信息 DATA: lv_bankl TYPE bnka-bankl, * LS_BANK TYPE CVIS_EI_CVI_BANKDETAIL, * LT_BANK TYPE CVIS_EI_BANKDETAIL_T. ls_bapibus1006_bankdetail TYPE bapibus1006_bankdetail. CLEAR lv_bankl. SELECT SINGLE bankl FROM bnka INTO lv_bankl WHERE banka = gs_alv-bank_name. IF lv_bankl <> \'\'. ls_bapibus1006_bankdetail-bank_key = lv_bankl. ELSE. "暂不直接创建供应商 * DATA: LV_BANK_CTRY LIKE BAPI1011_KEY-BANK_CTRY, * LT_BANK_ADDRESS LIKE BAPI1011_ADDRESS OCCURS 0 WITH HEADER LINE, * LT_RETURN_BK LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE. * * LV_BANK_CTRY = GS_ALV-BANK_LAND. * LT_BANK_ADDRESS-BANK_NAME = GS_ALV-BANK_NAME. * APPEND LT_BANK_ADDRESS. * * CLEAR: LT_RETURN_BK,LT_RETURN_BK[]. * CALL FUNCTION \'BAPI_BANK_CREATE\' * EXPORTING * BANK_CTRY = LV_BANK_CTRY ** BANK_KEY = * BANK_ADDRESS = LT_BANK_ADDRESS ** BANK_METHOD = ** BANK_FORMATTING = ** BANK_ADDRESS1 = ** I_XUPDATE = \'X\' ** I_CHECK_BEFORE_SAVE = ** BANK_IBAN_RULE = ** BANK_B2B_SUPPORTED = ** BANK_COR1_SUPPORTED = ** BANK_R_TRANSACTION_SUPPORTED = * IMPORTING * RETURN = LT_RETURN_BK ** BANKCOUNTRY = * BANKKEY = LS_BAPIBUS1006_BANKDETAIL-BANK_KEY. ENDIF. ls_bapibus1006_bankdetail-bank_ctry = gs_alv-bank_land. "银行国家 ls_bapibus1006_bankdetail-accountholder = gs_alv-koinh. "账户持有人 ls_bapibus1006_bankdetail-bank_acct = gs_alv-bank_no+0(18). "银行账户 ls_bapibus1006_bankdetail-bank_ref = gs_alv-bank_no+18(20). "参考明细 "LS_BAPIBUS1006_BANKDETAIL-BANKACCOUNTNAME = GS_ALV-BANK_NO. "账户名称 CLEAR: lt_return2, lt_return2[]. CALL FUNCTION \'BAPI_BUPA_BANKDETAIL_CHANGE\' EXPORTING businesspartner = gs_alv-partner bankdetailid = \'0001\' bankdetaildata = ls_bapibus1006_bankdetail * BANKDETAILDATA_X = TABLES return = lt_return2. * CALL FUNCTION \'BAPI_BUPA_BANKDETAIL_ADD\' * EXPORTING * BUSINESSPARTNER = GS_ALV-PARTNER ** BANKDETAILID = * BANKDETAILDATA = LS_BAPIBUS1006_BANKDETAIL ** IMPORTING ** BANKDETAILIDOUT = * TABLES * RETURN = LT_RETURN2. CLEAR l_msg2. LOOP AT lt_return2 WHERE type = \'E\' OR type = \'A\'. CONCATENATE lt_return2-message l_msg2 INTO l_msg2 SEPARATED BY \';\'. CONDENSE l_msg2. ENDLOOP. IF l_msg2 = \'\'. CALL FUNCTION \'BAPI_TRANSACTION_COMMIT\' EXPORTING wait = \'X\'. ELSE. CALL FUNCTION \'BAPI_TRANSACTION_ROLLBACK\' * IMPORTING * RETURN = . ENDIF. ************************************************************************** * 电话信息更改 DATA:ls_contact TYPE cvis_ei_phone_str, lt_contact TYPE cvis_ei_phone_t. ls_contact-contact-task = \'U\'. ls_contact-contact-data-telephone = gs_alv-tel_number. ls_contact-contact-datax-telephone = \'X\'. ls_contact-contact-data-extension = gs_alv-tel_extens. ls_contact-contact-datax-extension = \'X\'. APPEND ls_contact TO lt_contact. ls_central_data-address-communication-phone-phone[] = lt_contact. ls_contact-contact-task = \'U\'. ls_contact-contact-data-r_3_user = \'2\'. ls_contact-contact-datax-r_3_user = \'X\'. ls_contact-contact-data-telephone = gs_alv-mob_number. ls_contact-contact-datax-telephone = \'X\'. APPEND ls_contact TO lt_contact. ls_central_data-address-communication-phone-phone[] = lt_contact. * 传真信息更改 DATA:ls_fax TYPE cvis_ei_fax_str, lt_fax TYPE cvis_ei_fax_t. ls_fax-contact-task = \'U\'. ls_fax-contact-data-fax = gs_alv-fax_number. ls_fax-contact-datax-fax = \'X\'. ls_fax-contact-data-extension = gs_alv-fax_extens. ls_fax-contact-datax-extension = \'X\'. APPEND ls_fax TO lt_fax. ls_central_data-address-communication-fax-fax[] = lt_fax[]. * 电子邮箱 DATA:ls_smtp TYPE cvis_ei_smtp_str, lt_smtp TYPE cvis_ei_smtp_t. ls_smtp-contact-task = \'U\'. ls_smtp-contact-data-e_mail = gs_alv-smtp_addr. ls_smtp-contact-datax-e_mail = \'X\'. APPEND ls_smtp TO lt_smtp. ls_central_data-address-communication-smtp-smtp[] = lt_smtp[]. * 税号 * DATA:LT_VAT_NUMBERS TYPE CVIS_EI_VAT_T, * LS_VAT_NUMBERS TYPE CVIS_EI_VAT. * LS_VAT_NUMBERS-TASK = \'U\'. * LS_VAT_NUMBERS-DATA_KEY-LAND1 = GS_ALV-LAND1. * LS_VAT_NUMBERS-DATA-STCEG = GS_ALV-TAXNUM. * LS_VAT_NUMBERS-DATAX-STCEG = \'X\'. * APPEND LS_VAT_NUMBERS TO LT_VAT_NUMBERS. * LS_CENTRAL_DATA-VAT_NUMBER-VAT_NUMBERS[] = LT_VAT_NUMBERS[]. MOVE-CORRESPONDING ls_header TO ls_vendor-header. "20160905 MOVE-CORRESPONDING ls_central_data TO ls_vendor-central_data. "20160905 * 公司数据 DATA:ls_company_data TYPE vmds_ei_vmd_company, ls_company TYPE vmds_ei_company, lt_company TYPE vmds_ei_company_t. ls_company-task = \'U\'. ls_company-data_key-bukrs = gs_alv-bukrs. ls_company-data-akont = gs_alv-akont. ls_company-datax-akont = \'X\'. ls_company-data-zuawa = gs_alv-zuawa. ls_company-datax-zuawa = \'X\'. ls_company-data-zterm = gs_alv-zterm. ls_company-datax-zterm = \'X\'. ls_company-data-zwels = gs_alv-dzwels. ls_company-datax-zwels = \'X\'. ls_company-data-altkn = gs_alv-zaltkn. ls_company-datax-altkn = \'X\'. ls_company-data-reprf = \'X\'. "检查重复发票 ls_company-datax-reprf = \'X\'. APPEND ls_company TO lt_company. ls_company_data-company[] = lt_company[]. MOVE-CORRESPONDING ls_company_data TO ls_vendor-company_data. * 组织数据 DATA:ls_purchasing_data TYPE vmds_ei_vmd_purchasing, ls_purchasing TYPE vmds_ei_purchasing, lt_purchasing TYPE vmds_ei_purchasing_t. ls_purchasing-task = \'U\'. ls_purchasing-data_key-ekorg = gs_alv-ekorg. ls_purchasing-data-waers = gs_alv-waers. ls_purchasing-datax-waers = \'X\'. ls_purchasing-data-zterm = gs_alv-zterm2. ls_purchasing-datax-zterm = \'X\'. ls_purchasing-data-ekgrp = gs_alv-ekgrp. "采购组 ls_purchasing-datax-ekgrp = \'X\'. ls_purchasing-data-telf1 = gs_alv-telf1. ls_purchasing-datax-telf1 = \'X\'. ls_purchasing-data-verkf = gs_alv-verkf. ls_purchasing-datax-verkf = \'X\'. ls_purchasing-data-webre = \'X\'. "基于收货的发票校验 ls_purchasing-datax-webre = \'X\'. ls_functions-task = \'U\'. IF gs_alv-ktonr <> \'\'. ls_functions-data_key-parvw = \'ZM\'. "ER内外部转换后为ZM * LS_FUNCTIONS-DATA-DEFPA = \'\'. CALL FUNCTION \'CONVERSION_EXIT_ALPHA_INPUT\' EXPORTING input = gs_alv-ktonr IMPORTING output = gs_alv-ktonr. ls_functions-data-partner = gs_alv-ktonr. ls_functions-datax-partner = \'X\'. APPEND ls_functions TO ls_purchasing-functions-functions. ENDIF. APPEND ls_purchasing TO lt_purchasing. MOVE-CORRESPONDING ls_purchasing_data TO ls_vendor-purchasing_data. APPEND ls_vendor TO lt_vendor. ls_data-vendors[] = lt_vendor[]. vmd_ei_api=>initialize( ). CALL METHOD vmd_ei_api=>maintain_bapi EXPORTING iv_collect_messages = \'X\' is_master_data = ls_data IMPORTING es_master_data_correct = ls_msg1 es_message_correct = ls_msg2 es_master_data_defective = ls_msg3 es_message_defective = ls_msg4. IF ls_msg4-is_error = \'\'. CALL FUNCTION \'BAPI_TRANSACTION_COMMIT\' EXPORTING wait = \'X\'. ELSE. CALL FUNCTION \'BAPI_TRANSACTION_ROLLBACK\'. DATA ls_msg4_tmp LIKE LINE OF ls_msg4-messages. LOOP AT ls_msg4-messages INTO ls_msg4_tmp WHERE type = \'E\' OR type = \'A\'. CONCATENATE l_msg_tmp ls_msg4_tmp-message INTO l_msg_tmp SEPARATED BY \';\'. CONDENSE l_msg_tmp. ENDLOOP. ENDIF. CLEAR: ls_contact, lt_contact[], ls_contact, lt_contact[], ls_fax, lt_fax[], ls_smtp, lt_smtp[]. IF l_msg2 = \'\' AND l_msg_tmp = \'\'. gs_alv-remark = \'信息修改成功。\'. gs_alv-icon_a = icon_green_light. MODIFY gt_alv FROM gs_alv TRANSPORTING icon_a remark WHERE partner = g_partner AND bukrs = gs_alv-bukrs AND ekorg = gs_alv-ekorg. CALL FUNCTION \'GET_GLOBALS_FROM_SLVC_FULLSCR\' "获取alv IMPORTING e_grid = l_grid. CALL METHOD l_grid->check_changed_data. "获取alv改变值 CALL METHOD l_grid->refresh_table_display. "刷新ALV界面 ELSE. CONCATENATE l_msg2 l_msg_tmp INTO gs_alv-remark SEPARATED BY \';\'. gs_alv-icon_a = icon_red_light. MODIFY gt_alv FROM gs_alv TRANSPORTING icon_a remark WHERE partner = g_partner AND bukrs = gs_alv-bukrs AND ekorg = gs_alv-ekorg. CALL FUNCTION \'GET_GLOBALS_FROM_SLVC_FULLSCR\' "获取alv IMPORTING e_grid = l_grid. CALL METHOD l_grid->check_changed_data. "获取alv改变值 CALL METHOD l_grid->refresh_table_display. "刷新ALV界面 ENDIF. ENDFORM.
相关文章: