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. "城市