SAP 小技巧发票校验 BAPI 调用总结

作者:ABAP技巧与实战 约 6 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, CO, FI, MM, 开发, 物料管理, 财务
目录

原创 无峰 [ ABAP 技巧与实战 ](javascript:void\(0\);)

**点击蓝字** 关注我们

前言

同事开发供应商结算功能时,需要把供应商的采购入库,采购退货,及供应商的费用项,返利项等整合到一张发票校验单据中.

调用BAPI的时候,因为参数填写的原因,报了一些错误. 帮忙跟踪了这些报错时.

**总结了发票校验BAPI的参数传递注意事项.**

分享给大家.

两个BAPI函数的选择

创建发票校验有两个BAPI函数,二者实现的功能是一致的.

• BAPI_INCOMINGINVOICE_CREATE

• BAPI_INCOMINGINVOICE_CREATE1

因为函数

BAPI_INCOMINGINVOICE_CREATE1

中会检查行项目金额不能为负数,所以无法同时创建正向和反向订单的发票校验.

• 如果按单张采购订单创建发票校验. 建议选择 BAPI_INCOMINGINVOICE_CREATE1

• 如果需要在一张发票校验中同时添加采购收获,采购退货或其它费用. 则需要用 BAPI_INCOMINGINVOICE_CREATE

后文的介绍以

**BAPI_INCOMINGINVOICE_CREATE 为主**

SAP 小技巧发票校验 BAPI 调用总结 - 封面图
SAP 小技巧发票校验 BAPI 调用总结 - 封面图

**多个BAPI的选择**

**SPRING**

一般情况下. 我们尽量选择函数名后面带有数字并且数字最大的函数,更大的数字序号往往代表了更新的BAPI函数版本.

比如PO的创建,选择BAPI_PO_CREATE1

SAP 小技巧发票校验 BAPI 调用总结 - 封面图
SAP 小技巧发票校验 BAPI 调用总结 - 封面图

函数传入参数简介

SAP 小技巧发票校验 BAPI 调用总结 - 封面图
SAP 小技巧发票校验 BAPI 调用总结 - 封面图

_**01** _

**抬头部分信息**

HEADERDATA

SAP 小技巧发票校验 BAPI 调用总结 - 封面图
SAP 小技巧发票校验 BAPI 调用总结 - 封面图

_**02** _

**明细部分**

ITEMDATA

采购订单/商品凭证明细部分

根据订单基于收货的出具发票标记EKPO-WEBRE,如果有该标记. 则明细部分必须输入商品凭证信息. 否则,无需输入商品凭证部分

SAP 小技巧发票校验 BAPI 调用总结 - 封面图
SAP 小技巧发票校验 BAPI 调用总结 - 封面图

_**03** _

**总账科目部分**

GLACCOUNTDATA

费用/返利等总账科目信息

总账贷方减少应付金额, 借方增加应付金额.

SAP 小技巧发票校验 BAPI 调用总结 - 封面图
SAP 小技巧发票校验 BAPI 调用总结 - 封面图

_**04** _

**物料部分**

MATERIALDATA

不在采购/商品凭证的商品数据信息(这部分不太常用,一般用来调整商品库存价值,从而影响移动平均价)

_**05** _

**关键字段**

**HEADERDATA- INVOICE_IND**

抬头-INVOICE_IND = 'X'. 创建正常发票校验

此时明细行中 **金额ITEM_AMOUNT** 退货设置负数, 收货设置正数 , **数量QUANTITY** 始终设置正数

抬头-INVOICE_IND = ''. 创建贷项发票校验

此时明细行中金额退货设置正数, 收货设置负数,数量始终设置为正数

**HEADERDATA- INVOICE_IND内容设置方式**

通过ITEMDATA 中的采购收获金额加总 + GLACCOUNTDATA借项金额加总 为SUMA

通过ITEMDATA 中的采购退货金额加总 + GLACCOUNTDATA贷项金额加总为SUMB

如果SUMA >= SUMB

INVOICE_IND = 'X' . 此时ITEMDATA中的采购入库金额用正数, 采购退货金额用负数. GLACCOUNTDATA 金额始终用正数

如果SUMA < SUMB

INVOICE_IND = '' 此时ITEMDATA中的采购入库金额用负数, 采购退货金额用正数

GLACCOUNTDATA 金额始终用正数

如果上述规则没有遵守. 系统可能会报错

_**06** _

**特定报错处理**

如果按照上述规则设置了参数,BAPI 还是返回错误 M8 485 现金折扣总额不能过帐。

**报错原因:** 系统会根据抬头的借项/贷项标记 RBKP-XRECH (从 INVOICE_IND 传入) = '' 表示贷项 ='X'表示结项

去校验行项目中的收货金额/退货金额总计. 如果收获总计>退货总计 只能做发票 如果退货总计>收获总计 只能做贷项

如果存在总账行,按照之前的规则确定的INVOICE_IND内容, 违背了系统这个检查规则, 就会导致报错M8 485

SAP 小技巧发票校验 BAPI 调用总结 - 封面图
SAP 小技巧发票校验 BAPI 调用总结 - 封面图

可以通过增强跳过这个检查,不影响后续处理逻辑.

跳过方式

检查的代码位置: 函数

MRM_CALCULATE_SKONTOBASE

FORM VERGLEICH_SKONTOBASIS

开头用隐式增强退出FORM .

SAP 小技巧发票校验 BAPI 调用总结 - 封面图
SAP 小技巧发票校验 BAPI 调用总结 - 封面图

总结

一般前台界面能够录入实现的凭证,都可以通过调用BAPI传递参数实现. 特殊情况下,可以用BAPI做出前台操作无法实现的业务.

尤其是增强跳过BAPI的部分检查逻辑后(需要确保产生的单据的业务正确性). BAPI能够完成更多的业务形态.

** THE **

** END **

**约定**

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

( **如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程.

越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.** )

**公众号主群加入受限, 请扫码加入副群后,向管理员申请加入主群**

SAP 小技巧发票校验 BAPI 调用总结 - 封面图
SAP 小技巧发票校验 BAPI 调用总结 - 封面图

**公众号 : syjf1976_abap**

**ABAP开发技巧**

**微信号 : 392077**

**公众号主群加入受限, 请扫码加入副群后,向管理员申请加入主群**

SAP 小技巧发票校验 BAPI 调用总结 - 封面图
SAP 小技巧发票校验 BAPI 调用总结 - 封面图
ABAP技巧与实战

关于作者:ABAP技巧与实战

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

来源说明:本文内容由「SAP小技巧发票校验BAPI调用总结.md」整理生成,仅用于内部技术分享与学习交流。