ABAP基础知识 会计凭证冲销BAPI

前言

最近发现常用的会计凭证冲销功能无法使用了. 对常见凭证冲销时会报错

dfb80ea539fb5d6a951f624549ad526e.png

在解决这个问题的过程,有了本文的内容.

本文主要介绍会计凭证冲销相关的BAPI函数

标准BAPI报错分析

标准BAPI 函数

BAPI_ACC_DOCUMENT_REV_POST

跟踪错误 RW 628 .

在BAPI 开始会执行类型检查逻辑,相关类别(包括 BKPF )都会触发BAPI报错. 执行这些检查的原因不明. 但客观上阻止了这个函数冲销大部分凭证.但FB08可以冲销这个报错的凭证

b338cf9cffeab77ac16551f58f57c01e.png

b3c6549f4f95d255015ed8f715a74e7e.png

解决方式

BAPI函数无法冲销(也可以考虑强行去掉BAPI函数的凭证类别检查), 就只能采用BDC的方式冲销了. BDC可以用如下三种方式

  • 自行录制BDC

  • 使用标准函数CALL_FB08

  • POSTING_INTERFACE_REVERSE_DOC

其中CALL_FB08调用后无法获取冲销产生的新凭证号,

自行录制的BDC可以通过消息获取生成的凭证,但稳定性可能不足.

最终建议使用函数

POSTING_INTERFACE_REVERSE_DOC冲销会计凭证.

需要注意的是需要依次调用以下三个函数

  • POSTING_INTERFACE_START

  • POSTING_INTERFACE_REVERSE_DOC

  • POSTING_INTERFACE_END

3b5cd1af0db4340b7bf72cb2a87eb985.png

bccd953ca79f7db1b6f017150629605b.png

凭证分类

根据目前的经验给会计凭证分了两类

  • 标准会计凭证(通过前台或者业务过账产生的凭证)

  • 清账会计凭证(使用清账程序产生的会计凭证)

其中清账会计凭证可以细分为

  • 清账产生的凭证有凭证行, (剩余清账)

  • 清账产生的凭证没有凭证行( 完全清账 )

清账凭证通过TCODE FBRA 清除清账信息.

剩余清账-清账产生新的凭证行

bc1020644aae0bc2cf18b648aa3b1100.png

完全清账产生的凭证没有凭证行

b10bb65257c3908e204535804fb6cdb6.png

6b6d46814c23182017910aa55ee13442.png

对于清账产生凭证的冲销,需要先清除清账标记. 完全清账的,清除清账标记即可. 剩余清账的, 清除清账标记后, 还需要再次冲销凭证,

封装

基于上述分析把,会计凭证的冲销逻辑封装到函数Z_BC_CANCEL_FB中

先判断会计凭证类别(识别逻辑可能需要优化)

fd2b71d76bb49fa39604a4557e870ba6.png

b73396d5b5b32cdf17f43c5e5b072951.png

非清账凭证直接冲销

5c515b29e1e30d8b6ee3a2262ef1b90e.png

清账凭证先清除清账标记

1f7218d40b6adf8c72583fed84c2547f.png

对于剩余清账的凭证,存在新的凭证行, 则再次调用凭证的冲销.

c0ae788643def20579894737feb21a87.png

总结

会计凭证的冲销本身逻辑不复杂. 因为标准BAPI函数的限制及清账凭证的特殊性, 才有了一些复杂性.

函数组FIPI整合了标准BDC调用产生会计凭证的函数. 这些函数中考虑BDC过程中的所有可能的屏幕逻辑, 比自行录制的BDC好用很多 .

f07434929a6c8bcc5a1ae22df60ea5ae.png

THE

END

约定

如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.      

请微信联系管理员:

syjf1976

sharry_xlp  

Yannick_Duan

申请进入公众号讨论群提问或者参与话题讨论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值