在通过 BAPI 创建供应商银行时,有个 IBAN 方式创建银行账户,如果此时直接调用 BAPI_BUPA_BANKDETAIL_ADD,会导致此时维护的 IBAN 不成功,或者下图中的按钮不可用:
当时第一直觉就是这个想看看在系统界面上操作 IBAN 的维护方式,于是转向 SAP BP 操作界面,接着发现在一个全新的行里面点开 IBAN 转换器,只能输入 IBAN 和 SWIFT/BIC,但是在 BAPI 中如果是外部给号的银行必须输入银行代码,于是想着有没有关于这个 IBAN 转换器(IBAN converters)的 BAPI 接口。
于是就上网查 IBAN BAPI,就找到了这个官方 Note —— (1447761 - Overview of the IBAN converters - SAP ONE Support Launchpad)。
此时需要调用 CONVERT_IBAN_2_BANK_ACCOUNT,将 IBAN 生成的数据填入银行信息的 BAPIBUS1006_BANKDETAIL 结构中:
即需要保证 IBAN 和银行账户号码和银行国家代码一致,不然系统就会出错,解决方式如下:
CALL FUNCTION 'CONVERT_IBAN_2_BANK_ACCOUNT'
EXPORTING
i_iban = i_iban
IMPORTING
e_bank_account = lv_bank_account
e_bank_control_key = lv_control_key
e_bank_country = lv_bank_country
e_bank_number = lv_bank_number.
ls_bapibus1006_bankdetail-bank_acct = lv_bank_number.
ls_bapibus1006_bankdetail-bank_ctry = lv_bank_country.
ls_bapibus1006_bankdetail-iban = i_iban.
ls_bapibus1006_bankdetail-bank_key = bank_key.
CALL FUNCTION 'BAPI_BUPA_BANKDETAIL_ADD'
EXPORTING
businesspartner = l_bpartner
bankdetaildata = ls_bapibus1006_bankdetail
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.
创建成功后:
总结
本文中通过使用 CONVERT_IBAN_2_BANK_ACCOUNT 将 IBAN 转化为银行账号后再建立供应商的银行信息。
此外,其他还有将银行账户转化为 IBAN 的函数模块 CONVERT_BANK_ACCOUNT_2_IBAN、CONVERT_IBAN_2_BANK_ACCOUNT_XX,前提是这些 IBAN 是符合相应的国家标准的。
开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 16 天,点击查看活动详情