IDOC发票输出报F5562错误quot帐户amp只能内部记帐到公司代码amp中qu

作者:公众号 约 4 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, Basis, CO, FI, 开发, 系统管理, 财务
IDOC发票输出报F5562错误quot帐户amp只能内部记帐到公司代码amp中qu - 封面图
IDOC发票输出报F5562错误quot帐户amp只能内部记帐到公司代码amp中qu - 封面图

前言

在发票输出生成会计凭证时,可能会碰到F5 562错误"帐户&只能内部记帐到公司代码&中",这个错误产生的原因是,科目设置中勾选了" 只允许自动过账

",科目为集成科目,不允许手工记账。

奇怪的是通过IDOC自动生成的会计凭证,按道理是系统集成,不是手工记账,为什么还报这个错呢?背后的原理是通过IDOC输出,最终是通过BDC调用TCODE:FB01去生成的会计凭证,所以就会报这个错误。

如果在业务层面没办法将科目 " 只允许自动过账 "取消勾选的话,就需要在代码中来增强处理 。

本文将介绍处理这种错误的方法。

原因分析

1\.

DEBUG跟踪,在包含文件MF05AFB0_BSCHL_KONTO_BEARBEITU的bschl_konto_bearbeitung子例程中抛出562错误,如下图

IDOC发票输出报F5562错误quot帐户amp只能内部记帐到公司代码amp中qu - 封面图
IDOC发票输出报F5562错误quot帐户amp只能内部记帐到公司代码amp中qu - 封面图

rf05a-staut字段为空,skb1-xintb不为空,就会报错。

增强实现

既然是判断 rf05a-staut字段为空就报错,那我在 bschl_konto_bearbeitung子例程开始的位置

,把这个字段设置为'X'是否可行呢?经过分析和实践,证明方法是可行的,增强代码如下:

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(1) Form BSCHL_KONTO_BEARBEITUNG, Start A*$*$-Start: (1)---------------------------------------------------------------------------------$*$*ENHANCEMENT 1 ZE_INVOICE_EDI. "active version*EDI输出的凭证,跳过科目自动过账检查IF bkpf-bktxt = 'EDI'. rf05a-staut = char_x.ENDIF.ENDENHANCEMENT.*$*$-End: (1)---------------------------------------------------------------------------------$*$*

总结

SAP强大的地方在于,它功能相对开放,开发人员可根据实际需求,更改系统的标准处理逻辑,但是要千万谨慎,也有可能一不小心就闯下大祸☺

公众号

关于作者:公众号

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「IDOC发票输出报F5562错误quot帐户amp只能内部记帐到公司代码amp中qu.md」整理生成,仅用于内部技术分享与学习交流。