ABAP MIR7预制凭证BAPI

本文介绍了两种用于创建预制凭证的BAPI:BAPI_INCOMINGINVOICE_PARK和BAPI_INCOMINGINVOICE_CREATE。前者仅进行发票预制,后者同时完成发票预制与过账。文章还详细解释了四类业务场景下的预制凭证处理方式,并提出了退货凭证处理的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

正文部分

做预制凭证有两个BAPI:

BAPI_INCOMINGINVOICE_PARK 和 BAPI_INCOMINGINVOICE_CREATE

连个的区别是:第一个只做发票预制,第二个是发票和过账一块做。

下面简单说说BAPI_INCOMINGINVOICE_PARK发票预制

做发票有四种业务

1. Park as Invoice (HEADERDATA-INVOICE_IND = X, ITEMDATA-DE-CRE_IND = SPACE)

2. Park as Credit Memo (HEADERDATA-INVOICE_IND = SPACE, ITEMDATA-DE-CRE_IND = SPACE)

3. Park as Subsequent Debit (HEADERDATA-INVOICE_IND = X, ITEMDATA-DE-CRE_IND = X)

4. Park as Subsequent Credit (HEADERDATA-INVOICE_IND = SPACE, ITEMDATA-DE-CRE_IND = X)

然后现在遇到一个问题

退货的凭证,做发票传BAPI报错,不知道如何处理。

现在只能做收货的发票。

我总结的预制凭证bapi的使用

点击进入:ABAP MIR7预制凭证BAPI

### 关于SAP MIR7 预制发票底表的技术信息 在SAP系统中,`MIR7` 是用于处理预制发票的一个事务码。它主要用于创建基于采购订单的预制发票凭证,并允许用户手动输入或调整发票数据。为了理解 `MIR7` 的底层逻辑和技术细节,我们需要关注其涉及的核心底表以及配置方法。 #### 核心底表及其作用 以下是与 `MIR7` 预制发票相关的几个重要底表: 1. **`EKPO` 表** - 存储采购订单项目的详细信息。 - 当通过 `MIR7` 创建预制发票时,系统会从该表读取采购订单的相关数据以填充发票字段[^1]。 2. **`EBAN` 表** - 记录采购申请的信息。 - 如果采购订单是从采购申请生成的,则此表中的数据可能间接影响 `MIR7` 中的数据展示[^3]。 3. **`RBKP` 和 `RSEG` 表** - 这两个表分别存储财务会计凭证头和行项目信息。 - 在执行 `MIR7` 后,如果成功生成了预制发票凭证,这些数据会被写入到这两个表中[^2]。 4. **`BKPF` 和 `BSEG` 表** - 类似于 `RBKP` 和 `RSEG`,但更偏向于总账层面的记录。 - 它们同样会在最终确认发票并过账时被更新[^3]。 #### 数据流概述 当使用 `MIR7` 处理预制发票时,整个流程遵循以下顺序: - 用户启动 `MIR7` 并选择对应的采购订单作为依据。 - 系统根据选定的采购订单号访问 `EKPO` 表获取商品和服务的具体明细。 - 若存在已收货物的数量差异或其他特殊情况(如容差范围),则需调用后台作业 (Job Program) 如 `RMBABG00` 来完成自动对比计算。 - 成功匹配后,产生的临时凭证将存放在内存缓冲区直至正式提交至数据库;一旦提交完毕,“实际”的凭证条目即刻录入前述提到的各种核心表格之中。 #### 自定义配置指南 对于希望进一步优化或者修改默认行为的企业来说,可以通过如下方式来定制化自己的解决方案: 1. 使用 T-CODE: OLMRLIST 调整显示布局 此工具可以帮助管理员重新排列界面上各栏位的位置以便更好地满足特定需求。具体步骤包括但不限于复制现有视图模板、增删所需栏目等操作[^4]。 2. 设置合理的容差参数 企业可以根据自身的管理策略设定不同的容忍度界限(比如金额上的轻微偏差),从而减少不必要的干预次数。这通常涉及到更改某些隐藏参数文件的内容或是利用标准交易界面来进行相应设置。 3. 开发额外的功能扩展程序 对于那些超出开箱即用能力范畴的要求而言,往往还需要借助 ABAP 编程技能来自行构建附加组件。例如增加新的校验规则、改变原始算法等等皆可通过此类手段达成目标。 ```abap REPORT zmir7_customization. DATA: lv_order TYPE ekko-bstnk, lt_items TYPE TABLE OF ekpo. SELECT * FROM ekpo INTO TABLE lt_items WHERE bstnk = lv_order. IF sy-subrc EQ 0 AND lines( lt_items ) GT 0. WRITE: / 'Order Items Found:', lines( lt_items ). ELSE. WRITE: / 'No Order Items Found.'. ENDIF. ``` 以上代码片段展示了如何查询给定采购订单下的所有子项列表——这是任何深入分析之前必不可少的基础工作之一。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值