调用 BAPI 创建 BP 银行信息的 IBAN 问题解决

904 阅读1分钟

在通过 BAPI 创建供应商银行时,有个 IBAN 方式创建银行账户,如果此时直接调用 BAPI_BUPA_BANKDETAIL_ADD,会导致此时维护的 IBAN 不成功,或者下图中的按钮不可用:

图片.png

当时第一直觉就是这个想看看在系统界面上操作 IBAN 的维护方式,于是转向 SAP BP 操作界面,接着发现在一个全新的行里面点开 IBAN 转换器,只能输入 IBAN 和 SWIFT/BIC,但是在 BAPI 中如果是外部给号的银行必须输入银行代码,于是想着有没有关于这个 IBAN 转换器(IBAN converters)的 BAPI 接口。

图片.png

于是就上网查 IBAN BAPI,就找到了这个官方 Note —— (1447761 - Overview of the IBAN converters - SAP ONE Support Launchpad)。

此时需要调用 CONVERT_IBAN_2_BANK_ACCOUNT,将 IBAN 生成的数据填入银行信息的 BAPIBUS1006_BANKDETAIL 结构中:

图片.png

即需要保证 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.

创建成功后:

图片.png

图片.png

总结

本文中通过使用 CONVERT_IBAN_2_BANK_ACCOUNT 将 IBAN 转化为银行账号后再建立供应商的银行信息。

此外,其他还有将银行账户转化为 IBAN 的函数模块 CONVERT_BANK_ACCOUNT_2_IBANCONVERT_IBAN_2_BANK_ACCOUNT_XX,前提是这些 IBAN 是符合相应的国家标准的。

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 16 天,点击查看活动详情