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

文摘   2024-12-09 20:20   北京  

前言

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

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


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



标准BAPI报错分析

标准BAPI 函数

BAPI_ACC_DOCUMENT_REV_POST

跟踪错误 RW 628 .

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


解决方式

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


凭证分类

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

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

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


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

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

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

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



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



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



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


封装

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



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



非清账凭证直接冲销



清账凭证先清除清账标记



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


总结

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

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

THE

END

约定

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

请微信联系管理员:

syjf1976

sharry_xlp  

Yannick_Duan

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

码农干货铺
永远要保持一种无论何时何地都逼着自己更努力更优秀来享受更好生活的学习状态
 最新文章