ABAP:BP 供应商创建修改BAPI和供应商银行信息创建修改BAPI
供应商创建及BAPI:cl_md_bp_maintain=>maintain
供应商银行信息创建BAPI:BAPI_BUPA_BANKDETAIL_ADD
供应商银行信息更新BAPI:BAPI_BUPA_BANKDETAIL_CHANGE
复制代码
FORM frm_create_bp .
DATA: lt_zfis006 TYPE TABLE OF zfis006,
ls_zfis006 LIKE LINE OF lt_zfis006.
DATA: lv_id TYPE sysuuid_x16 .
DATA: exc_ref TYPE REF TO cx_root,
lt_partnerguid_list TYPE bu_partner_guid_t,
ls_partnerguid_list LIKE LINE OF lt_partnerguid_list.
DATA: lt_return TYPE bapiretm.
DATA: lv_bpartnerguid TYPE bu_partner_guid_bapi,
lv_partnerguid TYPE but000-partner_guid.
"BP数据
DATA: lt_data TYPE cvis_ei_extern_t,
ls_data TYPE cvis_ei_extern,
ls_partner TYPE bus_ei_extern,
ls_common TYPE bus_ei_bupa_central,
ls_roles TYPE bus_ei_bupa_roles,
lt_roles TYPE bus_ei_bupa_roles_t,
ls_bank TYPE bus_ei_bupa_bankdetail,
lt_bank TYPE bus_ei_bupa_bankdetail_t,
ls_industry TYPE bus_ei_bupa_industrysector,
lt_industry TYPE bus_ei_bupa_industrysector_t,
lt_phone TYPE bus_ei_bupa_telephone_t,
ls_phone TYPE bus_ei_bupa_telephone,
lt_fax TYPE bus_ei_bupa_fax_t,
ls_fax TYPE bus_ei_bupa_fax,
lt_smtp TYPE bus_ei_bupa_smtp_t,
ls_smtp TYPE bus_ei_bupa_smtp,
ls_addresses TYPE bus_ei_bupa_address,
lt_addresses TYPE bus_ei_bupa_address_t,
ls_bpheader TYPE bus_ei_header.
"供应商数据
DATA: lt_company TYPE vmds_ei_company_t,
ls_company TYPE vmds_ei_company,
ls_purchas TYPE vmds_ei_purchasing,
lt_purchas TYPE vmds_ei_purchasing_t,
ls_vendor TYPE vmds_ei_extern,
ls_header TYPE vmds_ei_header.
DATA: ls_bankdetail TYPE bapibus1006_bankdetail.
DATA: ls_bankdetail_x TYPE bapibus1006_bankdetail_x,
lv_type TYPE char1.
DATA: lt_return2 TYPE TABLE OF bapiret2.
CLEAR:lt_zfis006[].
LOOP AT gt_out ASSIGNING <fs_out> WHERE sel = 'X' AND color NE 'C510'.
CLEAR: lv_bpartnerguid, lv_partnerguid, ls_header, ls_vendor, ls_bpheader, ls_common,
ls_roles, lt_roles, lt_roles[], ls_phone, lt_phone, lt_phone[], ls_smtp, lt_smtp, lt_smtp[],
ls_addresses, lt_addresses, lt_addresses[], ls_bank, lt_bank, lt_bank[], ls_company, lt_company, lt_company[],
ls_data, lt_data, lt_data[].
SELECT SINGLE partner_guid FROM but000 INTO lv_partnerguid WHERE partner = <fs_out>-lifnr .
CASE 'X' .
WHEN rb_c . "创建
TRY .
lv_bpartnerguid = cl_uuid_factory=>create_system_uuid( )->create_uuid_x16( ).
CATCH cx_uuid_error INTO exc_ref.
"返回消息
<fs_out>-zcode = 'E'.
<fs_out>-zmsgl = exc_ref->get_text( ).
<fs_out>-color = 'C610' .
CLEAR: lv_id .
APPEND INITIAL LINE TO lt_zfis006 ASSIGNING FIELD-SYMBOL(<fs_zfis006>) .
TRY.
CALL METHOD cl_system_uuid=>if_system_uuid_static~create_uuid_c32
RECEIVING
uuid = lv_id.
CATCH cx_uuid_error .
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDTRY.
<fs_zfis006>-uuid = lv_id .
<fs_zfis006>-lifnr = <fs_out>-lifnr .
<fs_zfis006>-pernr = <fs_out>-pernr .
<fs_zfis006>-sname = <fs_out>-sname .
<fs_zfis006>-begda = <fs_out>-begda .
<fs_zfis006>-endda = <fs_out>-endda .
<fs_zfis006>-ztask = 'C' .
<fs_zfis006>-zcode = <fs_out>-zcode .
<fs_zfis006>-zmsgl = <fs_out>-zmsgl .
<fs_zfis006>-zdate = sy-datum .
<fs_zfis006>-ztime = sy-uzeit .
<fs_zfis006>-zname = sy-uname .
CONTINUE .
ENDTRY.
ls_header-object_task = 'I' .
ls_data-ensure_create-create_vendor = 'X'.
WHEN rb_m OR rb_d . "修改 冻结
TRY .
cl_system_uuid=>if_system_uuid_static~convert_uuid_x16(
EXPORTING uuid = lv_partnerguid
IMPORTING uuid_c32 = lv_bpartnerguid
).
CATCH cx_uuid_error INTO DATA(exc_ref1).
ENDTRY.
ls_header-object_task = 'U'.
ENDCASE .
ls_header-object_instance-lifnr = <fs_out>-lifnr .
ls_vendor-header = ls_header .
IF rb_d = 'X' . "冻结
ls_vendor-central_data-central-data-sperr = 'X' .
ls_vendor-central_data-central-datax-sperr = abap_true.
ENDIF .
"header
ls_bpheader-object_task = 'M'.
ls_bpheader-object_instance-bpartner = <fs_out>-lifnr. "BP号
ls_bpheader-object_instance-bpartnerguid = lv_bpartnerguid. "BP GUID
"common
ls_common-data-bp_control-category = '2'. "业务伙伴类别
ls_common-data-bp_control-grouping = <fs_out>-group. "业务伙伴分组
ls_common-data-bp_centraldata-partnerlanguageiso = 'ZH'. "语言
ls_common-data-bp_centraldata-searchterm1 = <fs_out>-pernr. "搜索项1
ls_common-data-bp_centraldata-searchterm2 = <fs_out>-zbmen. "搜索项2
ls_common-data-bp_centraldata-title_key = '0003'. "称谓
ls_common-datax-bp_centraldata-partnerlanguageiso = abap_true.
ls_common-datax-bp_centraldata-searchterm1 = abap_true.
ls_common-datax-bp_centraldata-searchterm2 = abap_true.
ls_common-datax-bp_centraldata-title_key = abap_true.
ls_common-data-bp_organization-name1 = <fs_out>-sname. "名称
ls_common-datax-bp_organization-name1 = abap_true.
ls_roles-task = 'M'.
ls_roles-data_key = 'FLVN00'. "角色类别
APPEND ls_roles TO lt_roles.
CLEAR: ls_roles.
ls_roles-task = 'M'.
ls_roles-data_key = 'FLVN01'. "角色类别
APPEND ls_roles TO lt_roles.
CLEAR: ls_roles.
"phone
ls_phone-contact-task = 'M'.
ls_phone-contact-data-telephone = <fs_out>-telf1. "电话号码
ls_phone-contact-datax-telephone = abap_true.
APPEND ls_phone TO lt_phone.
CLEAR: ls_phone.
"email
ls_smtp-contact-task = 'M'.
ls_smtp-contact-data-e_mail = <fs_out>-telbx. "邮箱
ls_smtp-contact-datax-e_mail = abap_true.
APPEND ls_smtp TO lt_smtp.
CLEAR: ls_smtp.
"addr
ls_addresses-data-postal-data-country = <fs_out>-land1. "国家代码
ls_addresses-data-postal-data-languiso = 'ZH'. "语言
ls_addresses-data-postal-data-street = <fs_out>-locat. "地址
ls_addresses-data-postal-data-city = <fs_out>-locat. "城市
ls_addresses-data-postal-data-postl_cod1 = '000000' . "邮编
ls_addresses-data-postal-datax-country = abap_true.
ls_addresses-data-postal-datax-langu_iso = abap_true.
ls_addresses-data-postal-datax-street = abap_true.
ls_addresses-data-postal-datax-city = abap_true.
ls_addresses-data-postal-datax-postl_cod1 = abap_true.
APPEND ls_addresses TO lt_addresses.
CLEAR: ls_addresses.
"bank
IF <fs_out>-bankl IS NOT INITIAL .
ls_bank-task = 'M'.
ls_bank-data-bank_ctry = <fs_out>-banks.
ls_bank-data-bank_key = <fs_out>-bankl.
ls_bank-data-bank_acct = <fs_out>-bankn.
ls_bank-data-accountholder = <fs_out>-emfsl.
ls_bank-data-bank_ref = <fs_out>-bkref.
ls_bank-data-bankdetailvalidfrom = <fs_out>-begda_yh. "ADD BY ZJ 20230803 银行信息有效起始日期
ls_bank-data-bankdetailvalidto = <fs_out>-endda_yh. "ADD BY ZJ 20230803 银行信息有效结束日期
ls_bank-datax-bank_ctry = abap_true.
ls_bank-datax-bank_key = abap_true.
ls_bank-datax-bank_acct = abap_true.
ls_bank-datax-bank_ref = abap_true.
ls_bank-datax-accountholder = abap_true.
ls_bank-datax-bankdetailvalidfrom = abap_true. "ADD BY ZJ 20230803 银行信息有效起始日期
ls_bank-datax-bankdetailvalidto = abap_true. "ADD BY ZJ 20230803 银行信息有效结束日期
APPEND ls_bank TO lt_bank.
CLEAR: ls_bank.
ENDIF .
ls_partner-header = ls_bpheader.
ls_partner-central_data-common = ls_common.
ls_partner-central_data-role-roles = lt_roles.
ls_partner-central_data-bankdetail-bankdetails = lt_bank.
ls_partner-central_data-communication-phone-phone = lt_phone.
ls_partner-central_data-communication-smtp-smtp = lt_smtp.
ls_partner-central_data-address-addresses = lt_addresses.
"company
ls_company-task = 'M'.
ls_company-data_key = <fs_out>-bukrs.
ls_company-data-akont = <fs_out>-akont.
ls_company-data-zterm = <fs_out>-zterm.
ls_company-datax-akont = abap_true.
ls_company-datax-zterm = abap_true.
APPEND ls_company TO lt_company.
CLEAR: ls_company.
ls_vendor-company_data-company = lt_company.
CLEAR: ls_company.
ls_data-partner = ls_partner.
ls_data-vendor = ls_vendor.
APPEND ls_data TO lt_data.
"维护
cl_md_bp_maintain=>maintain(
EXPORTING
i_data = lt_data
IMPORTING
e_return = lt_return
).
READ TABLE lt_return INTO DATA(ls_return) INDEX 1.
DATA(lt_msg) = ls_return-object_msg.
LOOP AT lt_msg INTO DATA(ls_msg) WHERE type CA 'AEX'.
EXIT.
ENDLOOP.
IF sy-subrc <> 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = abap_true.
********** 更新银行信息
"判断表中有没有供应商的银行信息
CLEAR:ls_bankdetail,ls_bankdetail_x,lv_type,lt_return2.
SELECT SINGLE bkvid
FROM but0bk
INTO @DATA(lv_bkvid)
WHERE partner = @<fs_out>-lifnr
AND bankl = @<fs_out>-bankl
AND bankn = @<fs_out>-bankn
AND bkref = @<fs_out>-bkref.
IF sy-subrc EQ 0.
lv_type = 'U'.
ELSE.
lv_type = 'I'.
ENDIF.
ls_bankdetail-bank_ctry = <fs_out>-land1."国家
ls_bankdetail-bank_key = <fs_out>-bankl."银行代码
ls_bankdetail-bank_acct = <fs_out>-bankn."账号
ls_bankdetail-bank_ref = <fs_out>-bkref."参考
ls_bankdetail-bankdetailvalidfrom = <fs_out>-begda_yh."有效起始日期
ls_bankdetail-bankdetailvalidto = <fs_out>-endda_yh."有效截至日期
"插入银行信息
IF lv_type EQ 'I'.
CALL FUNCTION 'BAPI_BUPA_BANKDETAIL_ADD'
EXPORTING
businesspartner = <fs_out>-lifnr
bankdetaildata = ls_bankdetail
TABLES
return = lt_return2.
ELSE.
"修改银行信息的日期
ls_bankdetail_x-bankdetailvalidfrom = abap_true.
ls_bankdetail_x-bankdetailvalidto = abap_true.
CALL FUNCTION 'BAPI_BUPA_BANKDETAIL_CHANGE'
EXPORTING
businesspartner = <fs_out>-lifnr
bankdetailid = lv_bkvid
bankdetaildata = ls_bankdetail
bankdetaildata_x = ls_bankdetail_x
TABLES
return = lt_return2.
ENDIF.
CLEAR:lv_bkvid.
LOOP AT lt_return2 TRANSPORTING NO FIELDS WHERE type CA 'AEX'.
EXIT.
ENDLOOP.
IF sy-subrc = 0.
<fs_out>-zcode = 'E'.
<fs_out>-zmsgl = '供应商创建成功,银行信息更新失败' .
<fs_out>-color = 'C610' .
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = abap_true.
<fs_out>-zcode = 'S'.
<fs_out>-zmsgl = '成功' .
<fs_out>-color = 'C510' .
CLEAR: lv_id .
APPEND INITIAL LINE TO lt_zfis006 ASSIGNING <fs_zfis006> .
TRY.
CALL METHOD cl_system_uuid=>if_system_uuid_static~create_uuid_c32
RECEIVING
uuid = lv_id.
CATCH cx_uuid_error .
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDTRY.
<fs_zfis006>-uuid = lv_id .
<fs_zfis006>-lifnr = <fs_out>-lifnr .
<fs_zfis006>-pernr = <fs_out>-pernr .
<fs_zfis006>-sname = <fs_out>-sname .
<fs_zfis006>-begda = <fs_out>-begda .
<fs_zfis006>-endda = <fs_out>-endda .
IF rb_c = 'X' .
<fs_zfis006>-ztask = 'C' .
ELSEIF rb_m = 'X' .
<fs_zfis006>-ztask = 'M' .
ELSEIF rb_d = 'X' .
<fs_zfis006>-ztask = 'D' .
ENDIF .
<fs_zfis006>-zcode = <fs_out>-zcode .
<fs_zfis006>-zmsgl = <fs_out>-zmsgl .
<fs_zfis006>-zdate = sy-datum .
<fs_zfis006>-ztime = sy-uzeit .
<fs_zfis006>-zname = sy-uname .
ENDIF.
********** 更新银行信息
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
<fs_out>-zcode = 'E'.
LOOP AT lt_msg INTO ls_msg WHERE type CA 'AEX'.
<fs_out>-zmsgl = <fs_out>-zmsgl && ls_msg-message && '/'.
ENDLOOP.
<fs_out>-color = 'C610' .
CLEAR: lv_id .
APPEND INITIAL LINE TO lt_zfis006 ASSIGNING <fs_zfis006> .
TRY.
CALL METHOD cl_system_uuid=>if_system_uuid_static~create_uuid_c32
RECEIVING
uuid = lv_id.
CATCH cx_uuid_error .
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDTRY.
<fs_zfis006>-uuid = lv_id .
<fs_zfis006>-lifnr = <fs_out>-lifnr .
<fs_zfis006>-pernr = <fs_out>-pernr .
<fs_zfis006>-sname = <fs_out>-sname .
<fs_zfis006>-begda = <fs_out>-begda .
<fs_zfis006>-endda = <fs_out>-endda .
IF rb_c = 'X' .
<fs_zfis006>-ztask = 'C' .
ELSEIF rb_m = 'X' .
<fs_zfis006>-ztask = 'M' .
ELSEIF rb_d = 'X' .
<fs_zfis006>-ztask = 'D' .
ENDIF .
<fs_zfis006>-zcode = <fs_out>-zcode .
<fs_zfis006>-zmsgl = <fs_out>-zmsgl .
<fs_zfis006>-zdate = sy-datum .
<fs_zfis006>-ztime = sy-uzeit .
<fs_zfis006>-zname = sy-uname .
ENDIF.
ENDLOOP .
IF lt_zfis006[] IS NOT INITIAL .
MODIFY zfis006 FROM TABLE lt_zfis006 .
COMMIT WORK .
ENDIF .
MESSAGE: '操作完成' TYPE 'S' .
ENDFORM.
代码2
CASE SRM_SUPPLIER_IN-ZMOD.
WHEN 'ADD'.
SELECT MAX( BUT000~PARTNER )
INTO L_BPARTNER
FROM BUT000
WHERE BUT000~BU_GROUP = 'ST07'.
L_BPARTNER = L_BPARTNER + 1.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = L_BPARTNER
IMPORTING
OUTPUT = L_BPARTNER.
CALL FUNCTION 'CONVERSION_EXIT_ISOLA_INPUT'
EXPORTING
INPUT = 'ZH'
IMPORTING
OUTPUT = LS_ADDRESS-LANGU "语言
EXCEPTIONS
UNKNOWN_LANGUAGE = 1
OTHERS = 2.
L_PARTN_CAT = '2'.
L_PARTN_GRP = 'ST07'.
LS_CENTRAL-TITLE_KEY = '0003'. "称谓
LS_CENTRAL_ORGAN-NAME1 = SRM_SUPPLIER_IN-NAME_ORG1. "名称1
IF SRM_SUPPLIER_IN-BU_SORT1 IS INITIAL.
LS_CENTRAL-SEARCHTERM1 = SRM_SUPPLIER_IN-NAME_ORG1(20). "检索项
ELSE.
LS_CENTRAL-SEARCHTERM1 = SRM_SUPPLIER_IN-BU_SORT1. "检索项
ENDIF.
LS_ADDRESS-STREET = SRM_SUPPLIER_IN-STREET. "街道
LS_ADDRESS-CITY = SRM_SUPPLIER_IN-CITY1. "城市
LS_ADDRESS-COUNTRY = 'CN'. "国家
CALL FUNCTION 'BAPI_BUPA_CREATE_FROM_DATA'
EXPORTING
BUSINESSPARTNEREXTERN = L_BPARTNER
PARTNERCATEGORY = L_PARTN_CAT
PARTNERGROUP = L_PARTN_GRP
CENTRALDATA = LS_CENTRAL
CENTRALDATAORGANIZATION = LS_CENTRAL_ORGAN
ADDRESSDATA = LS_ADDRESS
IMPORTING
BUSINESSPARTNER = L_BPARTNER
TABLES
RETURN = LT_RETURN1
.
CLEAR:RETURN_MESSAGE, L_MSG1.
LOOP AT LT_RETURN1 WHERE TYPE CA 'AEX'.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
MSGID = LT_RETURN1-ID
MSGNR = LT_RETURN1-NUMBER
MSGV1 = LT_RETURN1-MESSAGE_V1
MSGV2 = LT_RETURN1-MESSAGE_V2
MSGV3 = LT_RETURN1-MESSAGE_V3
MSGV4 = LT_RETURN1-MESSAGE_V4
IMPORTING
MESSAGE_TEXT_OUTPUT = RETURN_MESSAGE.
L_MSG1 = L_MSG1 && '##' && RETURN_MESSAGE.
CLEAR RETURN_MESSAGE.
ENDLOOP.
IF L_MSG1 IS INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' "commit--信息提交
EXPORTING
WAIT = 'X'. "地址信息提交
L_VENDOR = L_BPARTNER.
CLEAR LS_BAPIBUS1006_BANKDETAIL.
LS_BAPIBUS1006_BANKDETAIL-BANK_KEY = SRM_SUPPLIER_IN-BANKL.
LS_BAPIBUS1006_BANKDETAIL-BANK_CTRY = 'CN'. "银行国家
LS_BAPIBUS1006_BANKDETAIL-ACCOUNTHOLDER = SRM_SUPPLIER_IN-KOINH. "账户持有人
LS_BAPIBUS1006_BANKDETAIL-BANK_ACCT = SRM_SUPPLIER_IN-BANK_NO. "银行账户
CLEAR LS_BAPIBUS1006_BANKDETAIL_X.
LS_BAPIBUS1006_BANKDETAIL_X-BANK_KEY = 'X'.
LS_BAPIBUS1006_BANKDETAIL_X-BANK_CTRY = 'X'.
LS_BAPIBUS1006_BANKDETAIL_X-ACCOUNTHOLDER = 'X'.
LS_BAPIBUS1006_BANKDETAIL_X-BANKACCOUNTNAME = 'X'.
CLEAR: LT_RETURN3, LT_RETURN3[].
CALL FUNCTION 'BAPI_BUPA_BANKDETAIL_ADD'
EXPORTING
BUSINESSPARTNER = L_BPARTNER
BANKDETAILDATA = LS_BAPIBUS1006_BANKDETAIL
TABLES
RETURN = LT_RETURN3.
CLEAR L_MSG3.
LOOP AT LT_RETURN3 WHERE TYPE = 'E' OR TYPE = 'A'. " OR TYPE = 'W'.
CONCATENATE LT_RETURN3-MESSAGE L_MSG3 INTO L_MSG3 SEPARATED BY ';'. "银行信息创建不成功
CONDENSE L_MSG3.
ENDLOOP.
IF L_MSG3 = ''.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'. "银行信息提交(即银行信息创建成功)
*分配角色
CLEAR: LT_RETURN4,LT_RETURN4[].
CALL FUNCTION 'BAPI_BUPA_ROLE_ADD_2' "财务视图
EXPORTING
BUSINESSPARTNER = L_BPARTNER
BUSINESSPARTNERROLECATEGORY = 'FLVN00'
BUSINESSPARTNERROLE = 'FLVN00'
TABLES
RETURN = LT_RETURN4.
CLEAR L_MSG4.
LOOP AT LT_RETURN4 WHERE TYPE = 'E' OR TYPE = 'A'.
CONCATENATE LT_RETURN4-MESSAGE L_MSG4 INTO L_MSG4 SEPARATED BY ';'.
CONDENSE L_MSG4.
ENDLOOP.
IF L_MSG4 = ''.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
CLEAR: LS_MASTER_DATA,LS_COMPANY,LT_MASTER_DATA.
LS_MASTER_DATA-HEADER-OBJECT_TASK = 'M'.
LS_MASTER_DATA-HEADER-OBJECT_INSTANCE-LIFNR = L_VENDOR.
LS_MASTER_DATA-CENTRAL_DATA-CENTRAL-DATA-KTOKK = 'ST07'. "供应商帐户组
LS_MASTER_DATA-CENTRAL_DATA-CENTRAL-DATA-STENR = SRM_SUPPLIER_IN-TAXNUM."社会信用号
LS_MASTER_DATA-CENTRAL_DATA-CENTRAL-DATAX-KTOKK = 'X'. "供应商帐户组
LS_MASTER_DATA-CENTRAL_DATA-CENTRAL-DATAX-STENR = 'X'."社会信用号
LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATA-NAME = SRM_SUPPLIER_IN-NAME_ORG1+0(35). "名称1
LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATA-NAME_2 = SRM_SUPPLIER_IN-NAME_ORG1+35(5). "名称2
IF SRM_SUPPLIER_IN-BU_SORT1 IS INITIAL.
LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATA-SORT1 = SRM_SUPPLIER_IN-NAME_ORG1+0(20). "检索项
ELSE.
LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATA-SORT1 = SRM_SUPPLIER_IN-BU_SORT1. "属性(SAP为搜索项 1)
ENDIF.
LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATA-STREET = SRM_SUPPLIER_IN-STREET. "街道/门牌号
LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATA-CITY = SRM_SUPPLIER_IN-CITY1. "城市
LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATA-COUNTRY = 'CN'. "国家
LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATA-LANGU = '1'. "语言
LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATAX-NAME = 'X'. "名称1
LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATAX-NAME_2 = 'X'. "名称2
LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATAX-SORT1 = 'X'. "属性(SAP为搜索项 1)
LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATAX-STREET = 'X'. "街道/门牌号
LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATAX-CITY = 'X'. "城市
LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATAX-COUNTRY = 'X'. "国家
LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATAX-LANGU = 'X'. "语言
LS_COMPANY-TASK = 'M'.
LS_COMPANY-DATA_KEY-BUKRS = '6010'. "公司代码
LS_COMPANY-DATA-AKONT = '2202020000'. "统驭科目
LS_COMPANY-DATAX-AKONT = 'X'.
LS_COMPANY-DATA-ZTERM = SRM_SUPPLIER_IN-ZTERM. "付款条件
LS_COMPANY-DATAX-ZTERM = 'X'.
LS_COMPANY-DATA-ZWELS = 'BEFGHIJKLM'. "付款方式
LS_COMPANY-DATAX-ZWELS = 'X'.
APPEND LS_COMPANY TO LS_MASTER_DATA-COMPANY_DATA-COMPANY.
LS_COMPANY-DATA_KEY-BUKRS = '7010'. "公司代码
APPEND LS_COMPANY TO LS_MASTER_DATA-COMPANY_DATA-COMPANY.
LS_COMPANY-DATA_KEY-BUKRS = '8010'. "公司代码
APPEND LS_COMPANY TO LS_MASTER_DATA-COMPANY_DATA-COMPANY.
LS_COMPANY-DATA_KEY-BUKRS = '9010'. "公司代码
APPEND LS_COMPANY TO LS_MASTER_DATA-COMPANY_DATA-COMPANY.
LS_COMPANY-DATA_KEY-BUKRS = '9020'. "公司代码
APPEND LS_COMPANY TO LS_MASTER_DATA-COMPANY_DATA-COMPANY.
APPEND LS_MASTER_DATA TO LT_MASTER_DATA-VENDORS[].
VMD_EI_API=>INITIALIZE( ).
CALL METHOD VMD_EI_API=>MAINTAIN_BAPI
EXPORTING
IS_MASTER_DATA = LT_MASTER_DATA
IMPORTING
ES_MASTER_DATA_CORRECT = L1
ES_MESSAGE_CORRECT = L2
ES_MASTER_DATA_DEFECTIVE = L3
ES_MESSAGE_DEFECTIVE = L4.
IF L4-IS_ERROR = ''.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
FREE: LS_MASTER_DATA,LS_PURCHASING,LT_MASTER_DATA.
CLEAR: LS_MASTER_DATA,LS_PURCHASING,LT_MASTER_DATA,LT_MASTER_DATA-VENDORS[].
CALL FUNCTION 'BAPI_BUPA_ROLE_ADD_2'
EXPORTING
BUSINESSPARTNER = L_BPARTNER
BUSINESSPARTNERROLECATEGORY = 'FLVN01'
BUSINESSPARTNERROLE = 'FLVN01'
TABLES
RETURN = LT_RETURN5.
LOOP AT LT_RETURN5 WHERE TYPE = 'E' OR TYPE = 'A'.
CONCATENATE LT_RETURN5-MESSAGE L_MSG5 INTO L_MSG4 SEPARATED BY ';'.
CONDENSE L_MSG5.
ENDLOOP.
IF L_MSG5 = ''.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' "角色信息提交(即角色创建成功)
EXPORTING
WAIT = 'X'.
LS_MASTER_DATA-HEADER-OBJECT_TASK = 'M'.
LS_MASTER_DATA-HEADER-OBJECT_INSTANCE-LIFNR = L_BPARTNER.
LS_MASTER_DATA-CENTRAL_DATA-CENTRAL-DATA-KTOKK = 'ST07'. "供应商帐户组
LS_MASTER_DATA-CENTRAL_DATA-CENTRAL-DATAX-KTOKK = 'X'. "供应商帐户组
"采购数据
LS_MASTER_DATA-PURCHASING_DATA-CURRENT_STATE = 'X'. "采购完成数据的标识
LS_PURCHASING-FUNCTIONS-CURRENT_STATE = 'X'."合作伙伴完成数据的标识
LS_PURCHASING-TASK = 'M'.
LS_PURCHASING-DATA_KEY-EKORG = '6010'.
LS_PURCHASING-DATA-WAERS = 'CNY'.
LS_PURCHASING-DATAX-WAERS = 'X'.
LS_PURCHASING-DATA-ZTERM = SRM_SUPPLIER_IN-ZTERM.
LS_PURCHASING-DATAX-ZTERM = 'X'.
LS_PURCHASING-DATA-VERKF = SRM_SUPPLIER_IN-VERKF.
LS_PURCHASING-DATAX-VERKF = 'X'.
LS_PURCHASING-DATA-TELF1 = SRM_SUPPLIER_IN-TELF1.
LS_PURCHASING-DATAX-TELF1 = 'X'.
LS_FUNCTIONS-TASK = 'M'.
LS_FUNCTIONS-DATA_KEY-PARVW = 'BA'.
APPEND LS_FUNCTIONS TO LS_PURCHASING-FUNCTIONS-FUNCTIONS.
LS_FUNCTIONS-DATA_KEY-PARVW = 'LF'.
APPEND LS_FUNCTIONS TO LS_PURCHASING-FUNCTIONS-FUNCTIONS.
LS_FUNCTIONS-DATA_KEY-PARVW = 'RS'.
APPEND LS_FUNCTIONS TO LS_PURCHASING-FUNCTIONS-FUNCTIONS.
APPEND LS_PURCHASING TO LS_MASTER_DATA-PURCHASING_DATA-PURCHASING.
LS_PURCHASING-DATA_KEY-EKORG = '9010'.
APPEND LS_PURCHASING TO LS_MASTER_DATA-PURCHASING_DATA-PURCHASING.
APPEND LS_MASTER_DATA TO LT_MASTER_DATA-VENDORS[].
VMD_EI_API=>INITIALIZE( ).
CALL METHOD VMD_EI_API=>MAINTAIN_BAPI
EXPORTING
IV_COLLECT_MESSAGES = 'X'
IS_MASTER_DATA = LT_MASTER_DATA
IMPORTING
ES_MASTER_DATA_CORRECT = L1
ES_MESSAGE_CORRECT = L2
ES_MASTER_DATA_DEFECTIVE = L3
ES_MESSAGE_DEFECTIVE = L5.
IF L5-IS_ERROR = ''.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
SRM_SUPPLIER_RETURN-LIFNR = L_BPARTNER.
SRM_SUPPLIER_RETURN-INFO = '供应商主数据创建成功'.
RETURN-ZMESS = '供应商主数据创建成功'.
RETURN-ZISOK = 'Y'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
DATA LS_L5 LIKE LINE OF L5-MESSAGES.
LOOP AT L5-MESSAGES INTO LS_L5 WHERE TYPE = 'E' OR TYPE = 'A'.
CONCATENATE L_MSGL5 LS_L5-MESSAGE INTO L_MSGL5 SEPARATED BY ';'.
CONDENSE L_MSGL5.
ENDLOOP.
SRM_SUPPLIER_RETURN-LIFNR = L_BPARTNER.
SRM_SUPPLIER_RETURN-INFO = L_MSGL5 .
RETURN-ZMESS = '业务伙伴创建成功,创建采购视图失败'.
RETURN-ZISOK = 'N'.
ENDIF.
ELSE.
SRM_SUPPLIER_RETURN-LIFNR = L_BPARTNER.
SRM_SUPPLIER_RETURN-INFO = L_MSGL5 .
RETURN-ZMESS = '业务伙伴创建成功,创建采购视图基础失败'.
RETURN-ZISOK = 'N'.
ENDIF.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
DATA LS_L4 LIKE LINE OF L4-MESSAGES.
LOOP AT L4-MESSAGES INTO LS_L4 WHERE TYPE = 'E' OR TYPE = 'A'.
CONCATENATE L_MSGL4 LS_L4-MESSAGE INTO L_MSGL4 SEPARATED BY ';'.
CONDENSE L_MSGL4.
ENDLOOP.
SRM_SUPPLIER_RETURN-LIFNR = L_BPARTNER.
SRM_SUPPLIER_RETURN-INFO = L_MSGL4 .
RETURN-ZMESS = '创建业务合作伙伴成功,创建财务视图失败'.
RETURN-ZISOK = 'N'.
ENDIF.
ELSE.
ROLLBACK WORK.
SRM_SUPPLIER_RETURN-LIFNR = L_BPARTNER.
SRM_SUPPLIER_RETURN-INFO = L_MSG4.
RETURN-ZMESS = '业务伙伴创建成功,创建财务视图基础失败'.
RETURN-ZISOK = 'N'.
ENDIF.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
SRM_SUPPLIER_RETURN-LIFNR = L_BPARTNER.
SRM_SUPPLIER_RETURN-INFO = L_MSG3 .
RETURN-ZMESS = '创建业务合作伙伴成功,创建银行信息失败'.
RETURN-ZISOK = 'N'.
ENDIF.
ELSE.
ROLLBACK WORK.
CLEAR:RETURN_MESSAGE.
SRM_SUPPLIER_RETURN-LIFNR = L_BPARTNER.
SRM_SUPPLIER_RETURN-INFO = L_MSG1.
RETURN-ZMESS = '业务伙伴创建失败'.
RETURN-ZISOK = 'N'.
ENDIF.
RETURN-ZNUM = ZNUM.
RETURN-DATUM = SY-DATUM.
RETURN-UZEIT = SY-UZEIT.
WHEN 'MOD'.
CALL FUNCTION 'CONVERSION_EXIT_ISOLA_INPUT'
EXPORTING
INPUT = 'ZH'
IMPORTING
OUTPUT = LS_ADDRESS-LANGU "语言
EXCEPTIONS
UNKNOWN_LANGUAGE = 1
OTHERS = 2.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = SRM_SUPPLIER_IN-PARTNER
IMPORTING
OUTPUT = L_BPARTNER.
SELECT SINGLE *
FROM BUT000
WHERE PARTNER = L_BPARTNER
AND BU_GROUP = 'ST07'.
IF SY-SUBRC NE 0.
SRM_SUPPLIER_RETURN-LIFNR = L_BPARTNER.
SRM_SUPPLIER_RETURN-INFO = '业务合作伙伴' && L_BPARTNER && '在SAP中不存在,不允许修改.'.
RETURN-ZMESS = '业务合作伙伴' && L_BPARTNER && '在SAP中不存在,不允许修改.'.
RETURN-ZISOK = 'N'.
RETURN-ZNUM = ZNUM.
RETURN-DATUM = SY-DATUM.
RETURN-UZEIT = SY-UZEIT.
ENDIF.
L_PARTN_CAT = '2'.
L_PARTN_GRP = 'ST07'.
LS_CENTRAL-TITLE_KEY = '0003'. "称谓
LS_CENTRALDATA_X-TITLE_KEY = 'X'.
LS_CENTRAL_ORGAN-NAME1 = SRM_SUPPLIER_IN-NAME_ORG1. "名称1
LS_CENTRALDATAORGANIZATION_X-NAME1 = 'X'.
IF SRM_SUPPLIER_IN-BU_SORT1 IS INITIAL.
LS_CENTRAL-SEARCHTERM1 = SRM_SUPPLIER_IN-NAME_ORG1(20). "检索项
ELSE.
LS_CENTRAL-SEARCHTERM1 = SRM_SUPPLIER_IN-BU_SORT1. "检索项
ENDIF.
LS_CENTRALDATA_X-SEARCHTERM1 = 'X'.
IF SRM_SUPPLIER_IN-ZTYPE = 'D'.
LS_CENTRAL-CENTRALARCHIVINGFLAG = 'X'. "中心归档标记
ENDIF.
LS_ADDRESS-STREET = SRM_SUPPLIER_IN-STREET. "街道
LS_ADDRESS-CITY = SRM_SUPPLIER_IN-CITY1. "城市
LS_ADDRESS-COUNTRY = 'CN'. "国家
SY-LANGU = '1'.
CALL FUNCTION 'BAPI_BUPA_CENTRAL_CHANGE'
EXPORTING
BUSINESSPARTNER = L_BPARTNER
CENTRALDATA = LS_CENTRAL
CENTRALDATAORGANIZATION = LS_CENTRAL_ORGAN
CENTRALDATA_X = LS_CENTRALDATA_X
CENTRALDATAORGANIZATION_X = LS_CENTRALDATAORGANIZATION_X
TABLES
RETURN = LT_RETURN1.
CLEAR:RETURN_MESSAGE, L_MSG1. "20160721新增
LOOP AT LT_RETURN1 WHERE TYPE CA 'AEX'.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
MSGID = LT_RETURN1-ID
MSGNR = LT_RETURN1-NUMBER
MSGV1 = LT_RETURN1-MESSAGE_V1
MSGV2 = LT_RETURN1-MESSAGE_V2
MSGV3 = LT_RETURN1-MESSAGE_V3
MSGV4 = LT_RETURN1-MESSAGE_V4
IMPORTING
MESSAGE_TEXT_OUTPUT = RETURN_MESSAGE.
L_MSG1 = L_MSG1 && '##' && RETURN_MESSAGE.
CLEAR RETURN_MESSAGE.
ENDLOOP.
IF L_MSG1 IS INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' "commit--信息提交
EXPORTING
WAIT = 'X'. "地址信息提交
CLEAR LS_BAPIBUS1006_BANKDETAIL.
LS_BAPIBUS1006_BANKDETAIL-BANK_KEY = SRM_SUPPLIER_IN-BANKL.
LS_BAPIBUS1006_BANKDETAIL-BANK_CTRY = 'CN'. "银行国家
LS_BAPIBUS1006_BANKDETAIL-ACCOUNTHOLDER = SRM_SUPPLIER_IN-KOINH. "账户持有人
LS_BAPIBUS1006_BANKDETAIL-BANK_ACCT = SRM_SUPPLIER_IN-BANK_NO. "银行账户
CLEAR LS_BAPIBUS1006_BANKDETAIL_X.
LS_BAPIBUS1006_BANKDETAIL_X-BANK_KEY = 'X'.
LS_BAPIBUS1006_BANKDETAIL_X-BANK_CTRY = 'X'.
LS_BAPIBUS1006_BANKDETAIL_X-ACCOUNTHOLDER = 'X'.
LS_BAPIBUS1006_BANKDETAIL_X-BANK_ACCT = 'X'.
CLEAR: LT_RETURN3, LT_RETURN3[].
CALL FUNCTION 'BAPI_BUPA_BANKDETAIL_CHANGE' "银行信息
EXPORTING
BUSINESSPARTNER = L_BPARTNER
BANKDETAILID = '0001'
BANKDETAILDATA = LS_BAPIBUS1006_BANKDETAIL
BANKDETAILDATA_X = LS_BAPIBUS1006_BANKDETAIL_X
TABLES
RETURN = LT_RETURN3.
CLEAR L_MSG3.
LOOP AT LT_RETURN3 WHERE TYPE = 'E' OR TYPE = 'A'. " OR TYPE = 'W'.
CONCATENATE LT_RETURN3-MESSAGE L_MSG3 INTO L_MSG3 SEPARATED BY ';'. "银行信息修改不成功
CONDENSE L_MSG3.
ENDLOOP.
IF L_MSG3 = ''.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'. "银行信息提交(即银行信息修改成功)
CLEAR: LS_ADDRESS, LS_ADDRESS_X.
LS_ADDRESS-COUNTRY = 'CN'.
LS_ADDRESS-CITY = SRM_SUPPLIER_IN-CITY1.
LS_ADDRESS-STREET = SRM_SUPPLIER_IN-STREET.
LS_ADDRESS-LANGU = 1.
LS_ADDRESS_X-COUNTRY = 'X'.
LS_ADDRESS_X-CITY = 'X'.
LS_ADDRESS_X-STREET = 'X'.
LS_ADDRESS_X-LANGU = 'X'.
CLEAR LT_BAPIADTEL.
LT_BAPIADTEL-STD_NO = 'X'.
* LT_BAPIADTEL-EXTENSION = GS_ITAB-TEL_EXTENS. "电话-分机
APPEND LT_BAPIADTEL.
CLEAR LT_BAPIADTEL_X.
LT_BAPIADTEL_X-STD_NO = 'X'.
LT_BAPIADTEL_X-TELEPHONE = 'X'. "电话
APPEND LT_BAPIADTEL_X.
CALL FUNCTION 'BAPI_BUPA_ADDRESS_CHANGE'
EXPORTING
BUSINESSPARTNER = L_BPARTNER
ADDRESSDATA = LS_ADDRESS
ADDRESSDATA_X = LS_ADDRESS_X
TABLES
BAPIADTEL = LT_BAPIADTEL
BAPIADFAX = LT_BAPIADFAX
BAPIADTEL_X = LT_BAPIADTEL_X
BAPIADFAX_X = LT_BAPIADFAX_X
RETURN = LT_RETURN2.
CLEAR L_MSG4. "20160721新增
LOOP AT LT_RETURN2 WHERE TYPE = 'E' OR TYPE = 'A'. " OR TYPE = 'W'.
CONCATENATE LT_RETURN2-MESSAGE L_MSG4 INTO L_MSG4 SEPARATED BY ';'.
CONDENSE L_MSG4.
ENDLOOP.
IF L_MSG4 = ''.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
CLEAR: LS_MASTER_DATA,LS_COMPANY,LT_MASTER_DATA.
LS_MASTER_DATA-HEADER-OBJECT_TASK = 'M'.
LS_MASTER_DATA-HEADER-OBJECT_INSTANCE-LIFNR = L_BPARTNER.
LS_MASTER_DATA-CENTRAL_DATA-CENTRAL-DATA-KTOKK = 'ST07'. "供应商帐户组
LS_MASTER_DATA-CENTRAL_DATA-CENTRAL-DATA-STENR = SRM_SUPPLIER_IN-TAXNUM."社会信用号
LS_MASTER_DATA-CENTRAL_DATA-CENTRAL-DATAX-KTOKK = 'X'. "供应商帐户组
LS_MASTER_DATA-CENTRAL_DATA-CENTRAL-DATAX-STENR = 'X'."社会信用号
IF SRM_SUPPLIER_IN-ZTYPE = 'F'.
LS_MASTER_DATA-CENTRAL_DATA-CENTRAL-DATA-SPERR = 'X'."中心记账冻结
LS_MASTER_DATA-CENTRAL_DATA-CENTRAL-DATA-SPERM = 'X'."采购组织冻结
LS_MASTER_DATA-CENTRAL_DATA-CENTRAL-DATAX-SPERR = 'X'."记账冻结
LS_MASTER_DATA-CENTRAL_DATA-CENTRAL-DATAX-SPERM = 'X'."采购组织冻结
ENDIF.
LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATA-NAME = SRM_SUPPLIER_IN-NAME_ORG1+0(35). "名称1
LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATA-NAME_2 = SRM_SUPPLIER_IN-NAME_ORG1+35(5). "名称2
IF SRM_SUPPLIER_IN-BU_SORT1 IS INITIAL.
LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATA-SORT1 = SRM_SUPPLIER_IN-NAME_ORG1(20). "检索项
ELSE.
LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATA-SORT1 = SRM_SUPPLIER_IN-BU_SORT1. "属性(SAP为搜索项 1)
ENDIF.
LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATA-STREET = SRM_SUPPLIER_IN-STREET. "街道/门牌号
LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATA-CITY = SRM_SUPPLIER_IN-CITY1. "城市
LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATA-COUNTRY = 'CN'. "国家
LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATA-LANGU = 1.
LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATAX-NAME = 'X'. "名称1
LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATAX-NAME_2 = 'X'. "名称2
LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATAX-SORT1 = 'X'. "属性(SAP为搜索项 1)
LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATAX-STREET = 'X'. "街道/门牌号
LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATAX-CITY = 'X'. "城市
LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATAX-COUNTRY = 'X'. "国家
LS_MASTER_DATA-CENTRAL_DATA-ADDRESS-POSTAL-DATAX-LANGU = 'X'. "语言
LS_COMPANY-TASK = 'M'.
LS_COMPANY-DATA_KEY-BUKRS = '6010'. "公司代码
LS_COMPANY-DATA-AKONT = '2202020000'. "统驭科目
LS_COMPANY-DATAX-AKONT = 'X'.
LS_COMPANY-DATA-ZTERM = SRM_SUPPLIER_IN-ZTERM. "付款条件
LS_COMPANY-DATAX-ZTERM = 'X'.
LS_COMPANY-DATA-ZWELS = 'BEFGHIJKLM'. "付款方式
LS_COMPANY-DATAX-ZWELS = 'X'.
APPEND LS_COMPANY TO LS_MASTER_DATA-COMPANY_DATA-COMPANY.
LS_COMPANY-DATA_KEY-BUKRS = '7010'. "公司代码
APPEND LS_COMPANY TO LS_MASTER_DATA-COMPANY_DATA-COMPANY.
LS_COMPANY-DATA_KEY-BUKRS = '8010'. "公司代码
APPEND LS_COMPANY TO LS_MASTER_DATA-COMPANY_DATA-COMPANY.
LS_COMPANY-DATA_KEY-BUKRS = '9010'. "公司代码
APPEND LS_COMPANY TO LS_MASTER_DATA-COMPANY_DATA-COMPANY.
LS_COMPANY-DATA_KEY-BUKRS = '9020'. "公司代码
APPEND LS_COMPANY TO LS_MASTER_DATA-COMPANY_DATA-COMPANY.
APPEND LS_MASTER_DATA TO LT_MASTER_DATA-VENDORS[].
VMD_EI_API=>INITIALIZE( ).
CALL METHOD VMD_EI_API=>MAINTAIN_BAPI
EXPORTING
IS_MASTER_DATA = LT_MASTER_DATA
IMPORTING
ES_MASTER_DATA_CORRECT = L1
ES_MESSAGE_CORRECT = L2
ES_MASTER_DATA_DEFECTIVE = L3
ES_MESSAGE_DEFECTIVE = L4.
IF L4-IS_ERROR = ''.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
*******采购组织
FREE: LS_MASTER_DATA,LS_PURCHASING,LT_MASTER_DATA.
CLEAR: LS_MASTER_DATA,LS_PURCHASING,LT_MASTER_DATA,LT_MASTER_DATA-VENDORS[].
CALL FUNCTION 'BAPI_BUPA_ROLE_ADD_2'
EXPORTING
BUSINESSPARTNER = L_BPARTNER
BUSINESSPARTNERROLECATEGORY = 'FLVN01'
BUSINESSPARTNERROLE = 'FLVN01'
TABLES
RETURN = LT_RETURN5.
LOOP AT LT_RETURN5 WHERE TYPE = 'E' OR TYPE = 'A'.
CONCATENATE LT_RETURN5-MESSAGE L_MSG5 INTO L_MSG4 SEPARATED BY ';'.
CONDENSE L_MSG5.
ENDLOOP.
IF L_MSG5 = ''.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' "角色信息提交(即角色创建成功)
EXPORTING
WAIT = 'X'.
LS_MASTER_DATA-HEADER-OBJECT_TASK = 'M'.
LS_MASTER_DATA-HEADER-OBJECT_INSTANCE-LIFNR = L_BPARTNER.
LS_MASTER_DATA-CENTRAL_DATA-CENTRAL-DATA-KTOKK = 'ST07'. "供应商帐户组
LS_MASTER_DATA-CENTRAL_DATA-CENTRAL-DATAX-KTOKK = 'X'. "供应商帐户组
"采购数据
LS_MASTER_DATA-PURCHASING_DATA-CURRENT_STATE = 'X'. "采购完成数据的标识
LS_PURCHASING-FUNCTIONS-CURRENT_STATE = 'X'."合作伙伴完成数据的标识
LS_PURCHASING-TASK = 'M'.
LS_PURCHASING-DATA_KEY-EKORG = '6010'.
LS_PURCHASING-DATA-WAERS = 'CNY'.
LS_PURCHASING-DATAX-WAERS = 'X'.
LS_PURCHASING-DATA-ZTERM = SRM_SUPPLIER_IN-ZTERM.
LS_PURCHASING-DATAX-ZTERM = 'X'.
LS_PURCHASING-DATA-VERKF = SRM_SUPPLIER_IN-VERKF.
LS_PURCHASING-DATAX-VERKF = 'X'.
LS_PURCHASING-DATA-TELF1 = SRM_SUPPLIER_IN-TELF1.
LS_PURCHASING-DATAX-TELF1 = 'X'.
LS_FUNCTIONS-TASK = 'M'.
LS_FUNCTIONS-DATA_KEY-PARVW = 'BA'.
APPEND LS_FUNCTIONS TO LS_PURCHASING-FUNCTIONS-FUNCTIONS.
LS_FUNCTIONS-DATA_KEY-PARVW = 'LF'.
APPEND LS_FUNCTIONS TO LS_PURCHASING-FUNCTIONS-FUNCTIONS.
LS_FUNCTIONS-DATA_KEY-PARVW = 'RS'.
APPEND LS_FUNCTIONS TO LS_PURCHASING-FUNCTIONS-FUNCTIONS.
APPEND LS_PURCHASING TO LS_MASTER_DATA-PURCHASING_DATA-PURCHASING.
LS_PURCHASING-DATA_KEY-EKORG = '9010'.
APPEND LS_PURCHASING TO LS_MASTER_DATA-PURCHASING_DATA-PURCHASING.
APPEND LS_MASTER_DATA TO LT_MASTER_DATA-VENDORS[].
VMD_EI_API=>INITIALIZE( ).
CALL METHOD VMD_EI_API=>MAINTAIN_BAPI
EXPORTING
IV_COLLECT_MESSAGES = 'X'
IS_MASTER_DATA = LT_MASTER_DATA
IMPORTING
ES_MASTER_DATA_CORRECT = L1
ES_MESSAGE_CORRECT = L2
ES_MASTER_DATA_DEFECTIVE = L3
ES_MESSAGE_DEFECTIVE = L5.
IF L5-IS_ERROR = ''.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
SRM_SUPPLIER_RETURN-LIFNR = L_BPARTNER.
SRM_SUPPLIER_RETURN-INFO = '供应商主数据修改成功'.
RETURN-ZMESS = '供应商主数据修改成功'.
RETURN-ZISOK = 'Y'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
LOOP AT L5-MESSAGES INTO LS_L5 WHERE TYPE = 'E' OR TYPE = 'A'.
CONCATENATE L_MSGL5 LS_L5-MESSAGE INTO L_MSGL5 SEPARATED BY ';'.
CONDENSE L_MSGL5.
ENDLOOP.
SRM_SUPPLIER_RETURN-LIFNR = L_BPARTNER.
SRM_SUPPLIER_RETURN-INFO = L_MSGL5 .
RETURN-ZMESS = '业务伙伴修改成功,修改采购视图失败'.
RETURN-ZISOK = 'N'.
ENDIF.
ELSE.
SRM_SUPPLIER_RETURN-LIFNR = L_BPARTNER.
SRM_SUPPLIER_RETURN-INFO = L_MSGL5 .
RETURN-ZMESS = '业务伙伴修改成功,修改采购视图基础失败'.
RETURN-ZISOK = 'N'.
ENDIF.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
LOOP AT L4-MESSAGES INTO LS_L4 WHERE TYPE = 'E' OR TYPE = 'A'.
CONCATENATE L_MSGL4 LS_L4-MESSAGE INTO L_MSGL4 SEPARATED BY ';'.
CONDENSE L_MSGL4.
ENDLOOP.
SRM_SUPPLIER_RETURN-LIFNR = L_BPARTNER.
SRM_SUPPLIER_RETURN-INFO = L_MSGL4 .
RETURN-ZMESS = '供应商主数据修改成功,修改财务视图失败'.
RETURN-ZISOK = 'N'.
ENDIF.
ELSE.
ROLLBACK WORK.
SRM_SUPPLIER_RETURN-LIFNR = L_BPARTNER.
SRM_SUPPLIER_RETURN-INFO = L_MSG4.
RETURN-ZMESS = '供应商主数据修改成功,修改财务视图基础失败'.
RETURN-ZISOK = 'N'.
ENDIF.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
SRM_SUPPLIER_RETURN-LIFNR = L_BPARTNER.
SRM_SUPPLIER_RETURN-INFO = L_MSG3 .
RETURN-ZMESS = '修改业务合作伙伴成功,修改银行信息失败'.
RETURN-ZISOK = 'N'.
ENDIF.
ELSE.
ROLLBACK WORK.
CLEAR:RETURN_MESSAGE.
SRM_SUPPLIER_RETURN-LIFNR = L_BPARTNER.
SRM_SUPPLIER_RETURN-INFO = L_MSG1.
RETURN-ZMESS = '业务伙伴修改失败'.
RETURN-ZISOK = 'N'.
ENDIF.
RETURN-ZNUM = ZNUM.
RETURN-DATUM = SY-DATUM.
RETURN-UZEIT = SY-UZEIT.
ENDCASE.