对做错的会计凭证,SAP 并不提供常规的删除操作,需要通过冲销 (reversal) 的方式来消除数据影响。对会计凭证的冲销,财务有红字冲销和蓝字冲销的概念。假设我们做了一张会计凭证,需要冲销,下图展示了红字冲销和蓝字冲销的效果:
可以看到,红字冲销采用的是对会计科目同方向,用负数记账的方式,这种方式从分类账的角度来看,对发生额和余额都没有影响。比如刚才的例子中:招待费用 1800 在红字冲销后,借方发生额和贷方发生额都为 0 ,没有影响。
蓝字冲销是通过将会计科目反方向记账的方式,这种方式对科目余额没有影响,但会影响期间的发生额。比如该例中,在蓝字冲销后,招待费用的借方和贷方发生额都为 1800。在诸多报表从借方发生额和贷方发生额取数的时候,蓝字记账存在问题。
SAP 在录入会计凭时,不允许金额为负数,所以没有办法做到真正意义上的红字冲销,为此,SAP 提供了在冲销的时候,将每一行都标记为反记账 (negative posting) 的机制,从而实现与红字冲销相同的效果。
尽管冲销凭证从表面来看,会计科目的方向是相反的,但因为凭证的每一行都有反记账标记,SAP 的汇总数据、标准报表都会把有反记账标记的数据视为方向相反、金额为负的数据,从而保证发生额与红字冲销效果相同。项目中自开发的报表,则需要考虑反记账标识进行合理转换。
反记账的配置
反记账需要做三个配置
- 公司代码允许反记账。可以从事务码 OBY6 进入:
- 会计凭证类型中定义允许反记账 (事务码 OBA7):
- 定义反记账的原因。该配置项用于设置会计凭证冲销的时候是否为反记账,以及是否可以输入一个不同的过账日期(从而允许跨期间冲销)
我定义了 Z1、Z2 和 Z3 分别用于蓝字冲销、红字冲销和跨期间红字冲销。
会计凭证冲销操作
先做一张会计凭证:
然后对该凭证进行冲销,使用事务码 FB08 进入下面的界面。输入要冲销的凭证号码,在冲销原因(Reversal Reason)字段中,选择 Z2。在当前期间冲销,过账日期不用管。
然后点击保存按钮,生成冲销的会计凭证。
SAP 对原凭证称为被冲销凭证 (Reversed document),对用于冲销的凭证称为冲销凭证 (Reversal document),如果某一个凭证被冲销,或某一个凭证时冲销凭证,在界面上多出了一个 Reversal Document 按钮,可以点击进行相互参照。
在凭证抬头中,记录了冲销凭证和被冲销凭证的相互参照关系。
反记账不影响发生额
不管什么方式冲销,都不会影响科目余额,反记账则既不影响余额,又不影响发生额。刚才的招待费用科目是特意新创建的科目,在录入一张凭证后,招待费用科目的发生额和余额如下 (FAGLB03):
做了冲销后,FAGLB03 报表显示如下,借方和贷方的发生额都为 0:
反记账凭证的数据表
在会计凭证抬头表 BKPF 表和 行项目表(BS**,比如 BSEG),相关重要字段如下:
在 BKPF 表中:
- Reverse Document Number (STBLG) 字段互相记录冲销和被冲销凭证号码
- XREVERAL 字段,被冲销凭证为 1,冲销凭证为 2
- Reason for Reveral (STGRD)字段,被冲销凭证记录冲销原因,冲销凭证为空
在会计凭证的明细表中,比如 BSEG,冲销凭证的 Negative posting indicator (XNEGP) 字段为 X,这个字段对于从明细表中取数据非常重要,如果有反记账标记,需要将该数据看成反方向的负数。我们经常可以在代码中看到下面的片段:
1 2 3 4 5 6 7 8 | IF ig_data-xnegp = 'X'. IF ig_data-shkzg = 'S'. ig_data-shkzg = 'H'. ELSE. ig_data-shkzg = 'S'. ENDIF. ig_data-dmbtr = -1 * ig_data-dmbtr. ENDIF. |
在 FAGLFLEXA 表中,对于冲销凭证 1000000003,因为凭证有反记账标记,金额记录为负数,方向(DRCRK) 字段为 S 借方。FAGLFLEXT 表,对反记账标记的凭证,按照红字冲销的逻辑进行计算。
会计凭证冲销总结
-
事务码 FB08 用于单一冲销,FB80 用于批量冲销
-
FB08 和 FB80 仅用于 FI 手工录入凭证的冲销,不能用于从其他模块(包括固定资产子模块)通过集成生成的会计凭证冲销
-
如果凭证包含已清账项目,则不能用 FB08 进行冲销,要用 FBRA 重置清账状态并冲销
-
跨公司交易凭证不能用 FB08 单独冲销,使用 FBU8 进行冲销
-
固定资产模块的生成的会计凭证用 AB08 冲销
-
MM 模块的物料凭证生成的会计凭证,使用 MBST 冲销 。MBST 冲销整个物料凭证,MIGO 可以对含有多个行项目的物料凭证冲销某一行
-
MIRO 发票校验凭证,使用 MR8M 进行冲销
-
SD 模块发货过账凭证使用 VL09 冲销,如果发货过账已经在系统中开票,要先冲销销售开票,再冲销发货过帐
-
SD 模块销售开票,用 VF11 进行冲销