bapi创建及修改供应商主数据(业务伙伴、财务视图、银行信息、采购组织) - sap开发工作者

时间:2024-03-11 11:44:07

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.

posted on 2019-06-28 10:04  sap开发工作者  阅读(4545)  评论(0编辑  收藏  举报