SAP MM 供应商银行主数据更新报错!message R1228!

发布时间:2026/9/15 11:13:32
SAP MM 供应商银行主数据更新报错!message R1228! 1、前台数据供应商A银行主数据原始数据长成这样标识 国家 银行账户 控制码 有效日期从 有效日期到 CN01 CN 1000001 CN 20260801 99991231此时我们前台BP去修改第一种我改账户没问题标识 国家 银行账户 控制码 有效日期从 有效日期到 CN01 CN 1000002 CN 20260801 99991231此时正常第二种我新增一行数据和原始数据一样标识 国家 银行账户 控制码 有效日期从 有效日期到 CN01 CN 1000001 CN 20260801 99991231此时候会报错说明细标识CN01已经存在(因为BUT0BK主键就是这个玩意这个就不解释了不可能再让你建一行一模一样的)这时候我把再标识换了,其他保持不变标识 国家 银行账户 控制码 有效日期从 有效日期到 US01 CN 1000001 CN 20260801 99991231此时候会报错R1228有效期间的银行明细 CN 1000001 CN不唯一为什么会报R1228呢这是因为SAP标准功能就是这样的。SAP NOTE 3164505其实SAP NOTE说的少了一个唯一KEY 控制码因为当你这样插入的时候是没有问题的标识 国家 银行账户 控制码 有效日期从 有效日期到 US01 CN 1000001 **留空** 20260801 99991231但是我就想把控制码和之前数据一样怎么插入呢SAP NOTE解决方案说到了你改一下有效期间就行改完BP直接保存就行回车其实会报错可以忽略标识 国家 银行账户 控制码 有效日期从 有效日期到 US01 CN 1000001 CN **20260701 20260731**2、前台你想怎么操作都是你可以控制但是BAPI执行时候可不是那样的本次用到供应商主数据创建类方法CALL METHOD cl_md_bp_maintainmaintain EXPORTING i_data it_data IMPORTING e_return it_return原始数据标识 国家 银行账户 控制码 有效日期从 有效日期到 CN01 CN 1000001 CN 20260801 99991231假如此时是8月2日好了你传一条数据如下标识 国家 银行账户 控制码 有效日期从 有效日期到 CN01 CN 1000001 CN 20260801 99991231结果标识 国家 银行账户 控制码 有效日期从 有效日期到 0001 CN 1000001 CN 20260801 20260801 CN01 CN 1000001 CN 20260802 99991231对于这个结果是SAP标准逻辑因为你传入的数据和原始数据一样此时就会触发SAP NOTE说的那段逻辑对SAP来说他会自动把这个8月1日的失效掉并且插入一条8月2日的有效期进来说实话这也解释得通毕竟按NOTE说的不让主键重复。假如又过了一天此时8月3日了你上午又传入一模一样数据传一条数据如下标识 国家 银行账户 控制码 有效日期从 有效日期到 CN01 CN 1000001 CN 20260801 99991231结果标识 国家 银行账户 控制码 有效日期从 有效日期到 0001 CN 1000001 CN 20260801 20260801 0002 CN 1000001 CN 20260802 20260802 CN01 CN 1000001 CN 20260803 99991231这个结果应该也是正常的继续拆分没毛病。好了到了8月3日晚上你再传一条一模一样的数据或者你重传。标识 国家 银行账户 控制码 有效日期从 有效日期到 CN01 CN 1000001 CN 20260803 99991231结果此时候会报错R1228有效期间的银行明细 CN 1000001 CN不唯一为什么在同一天传2次会报错呢原因在于有0001和0002 在从而触发RI228报错。用的那个最上面供应商创建的类追溯的源代码发现会走这些函数bupa_bankdetail_changeBUP_CHECK_BANK_ACCOUNTS_CHANGEBUP_BUT0BK_SELECT_WITH_PARTNER4、怎么解决这个问题1调用BAPI_BUPA_BANKDETAIL_REMOVE删除0001 0002 根据那几个主键值先把相同这几个自动创建的行全部删除这里删除目的不让底下那个报错R1228 2再调用类函数 CALL METHOD cl_md_bp_maintainmaintain EXPORTING i_data it_data IMPORTING e_return it_return 3再调用BAPI_BUPA_BANKDETAIL_REMOVE删除0001 0002 因为创建完还会生成0001 0002 .所以这里再删一遍这样供应商主数据生成就很完美 5、其实供应商银行拿这几个函数去操作即可我觉得那个类方法不怎么好用而且那个类写入删除标记D还不好使垃圾一批更新也LOWDEBUG改数据更LOW一层层都不如下面那个删除函数好。BAPI_BUPA_BANKDETAIL_CHANGE 更新BAPI_BUPA_BANKDETAIL_ADD 新增BAPI_BUPA_BANKDETAIL_REMOVE 删除以上只是个人理解分享的笔记仅供参考如果喜欢帮忙点个赞以上截图均来自SAP系统截图如有侵权联系本人进行删除感谢,如有疑问请在下方留言共同学习

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询