SAP MIRO 报错 Allowed posting periods:xx xxx

文章讲述了在使用MIRO时遇到的开票失败问题,因为财务账期未关闭而物料账期已关闭。解决方法是确保两者同时开放,若物料账未开,需在MMRV中启用前期过账。操作应在GRIR处理应收应付之前进行,否则可能影响报表准确性,参考Note3053842。

 背景:在八月初,七月份财务账期没关,七月份物料帐期已关

用户在做MIRO的时候,无法开票成功,报错: Allowed posting periods:xx xxx 

但是集团要求,这些帐应该记在七月份

查询相关资料得知。MIRO的过账必须财务和物料帐都开着

如果物料帐没开,那么就需要在MMRV去允许前期过账

如下图

 当然以上操作是在做GRIR  应收应付之前,如果在此之后,那么需要重新操作一遍,不然报表会不准

相关note:3053842

 

 

<think>我们正在处理一个关于SAP MIRO模块中BAPI调用的问题。用户在使用BAPI_INCOMINGINVOICE_CREATE(或类似BAPI)创建发票时,遇到了未生成发票并且可能出现重复会计凭证的情况。根据提供的引用,我们可以推断出一些可能的原因和解决方案。 首先,引用[1]提到,当使用ARBCIG_BAPI_INVOICE_CREATE创建发票时,可能不会带出预付款税码,因为BAPI没有传入对应的数据。这提示我们,在调用BAPI时,传入的数据不完整可能导致一些问题。同样,在用户的情况下,未生成发票可能是由于传入的数据不满足生成发票的条件。 引用[2]强调了在调用BAPI之前使用SE37进行测试的重要性,以确保熟悉BAPI的结构和字段,避免因参数错误导致的各种报错。因此,用户需要检查传入BAPI的参数是否正确和完整。 引用[3]和[4]则提供了关于采购发票过账和预制发票的相关BADI(业务插件)的信息,这提示我们可能需要通过增强或BADI来补充标准BAPI的功能。 综合以上信息,我们可以分析可能的原因和解决方案如下: **可能的原因:** 1. **参数缺失或不正确**:在调用BAPI时,传入的参数(如发票数据、供应商、公司代码等)不完整或错误,导致系统无法生成发票。 2. **重复调用BAPI**:可能由于程序逻辑错误,多次调用BAPI,导致重复创建会计凭证(尽管未生成发票,但可能生成了重复的凭证)。 3. **前置条件未满足**:例如,采购订单尚未收货或未达到开票条件,导致无法生成发票。 4. **系统配置或主数据问题**:供应商主数据、税码配置等存在问题,导致BAPI无法正常执行。 5. **并发控制问题**:在多用户或并发处理时,可能由于锁机制导致未生成发票,但会计凭证已生成。 **解决方案:** 1. **检查BAPI参数**:使用事务码SE37测试BAPI(如BAPI_INCOMINGINVOICE_CREATE),确保传入的参数正确且完整。特别注意: - 供应商、公司代码、采购订单号等关键字段。 - 税码(如预付款税码)是否传入,引用[1]提到可以通过增强来补充税码数据。 - 凭证日期、过账日期等。 2. **检查是否重复调用**:在程序中确保BAPI只被调用一次。可以通过日志或调试来确认。 3. **检查前置条件**:确认采购订单是否已经收货(MIGO),是否满足开票条件。 4. **使用BADI增强**:引用[4]提到了一些BADI,如INVOICE_UPDATE_MIRO,可以在开票过程中进行增强。例如,在调用BAPI之前,通过BADI补充必要的数据或进行校验。 5. **检查错误消息**:在调用BAPI后,必须检查返回的消息(RETURN表),以确定失败的具体原因。例如: ```abap CALL FUNCTION 'BAPI_INCOMINGINVOICE_CREATE' EXPORTING ... TABLES return = lt_return. ``` 然后检查`lt_return`中是否有错误消息。 6. **检查会计凭证是否已生成**:如果会计凭证重复,可能是因为在调用BAPI失败后重试,但之前的调用已经生成了凭证(部分成功)。此时,需要检查凭证表(如RBKP、RSEG)以确认凭证状态。如果凭证已经生成,则不应该再次调用BAPI,而应该先冲销重复的凭证。 7. **使用正确的BAPI**:确保使用的BAPI是适合当前场景的。例如,如果是预制发票,应使用`BAPI_INCOMINGINVOICE_PARK`,而过账则使用`BAPI_INCOMINGINVOICE_POST`(引用[3])。 **具体步骤建议:** 1. **SE37测试**:在SE37中手动测试BAPI调用,使用与程序相同的数据,观察是否能够成功生成发票。如果测试失败,根据错误消息调整参数。 2. **程序调试**:在程序中设置断点,检查传入BAPI的参数值,并检查返回消息。 3. **增强补充数据**:如引用[1]所述,如果税码等数据缺失,可以在调用BAPI之前通过增强(如用户出口或BADI)来补充。例如,在调用BAPI之前,根据供应商和公司代码确定税码并填充到相应字段。 4. **检查锁机制**:在调用BAPI之前,检查是否有锁存在,避免并发问题。 如果以上步骤仍无法解决问题,可能需要进一步分析具体的错误消息和系统日志。 §§相关问题§§ 1. 如何通过SE37测试BAPI_INCOMINGINVOICE_CREATE? 2. 在SAP中,如何通过ABAP程序处理BAPI返回的错误消息? 3. 如何避免在SAP BAPI调用中产生重复数据? 4. SAP MIRO开票时,哪些前置条件必须满足? 5. 如何通过BADI增强MIRO开票过程?</think>### SAP MIRO BAPI调用后未生成发票且出现重复会计凭证的原因及解决方法 在SAP系统中调用`BAPI_INCOMINGINVOICE_CREATE`或相关BAPI时,未生成发票并出现重复会计凭证的问题,通常由以下原因导致: --- ### 一、核心原因分析 1. **参数缺失或冲突** - **税码未正确传入**:如引用[1]所述,预付款税码可能因BAPI未传入对应数据而缺失,导致系统无法完成发票校验流程。 - **关键字段冲突**:供应商、公司代码、采购订单号等字段与现有凭证冲突,或未满足唯一性校验(如重复调用同一数据)。 2. **BAPI调用逻辑错误** - **未处理返回消息**:BAPI的`RETURN`表未检查,忽略错误提示(如凭证已存在、字段校验失败)仍继续执行[^2]。 - **重复调用机制**:程序未设计防重逻辑,多次调用相同参数的BAPI,触发系统生成重复凭证草稿[^3]。 3. **前置条件不满足** - **采购订单状态无效**:如未完成收货(MIGO)或未激活发票校验标识。 - **主数据问题**:供应商主数据(LFA1)或物料主数据(MARA)的税码/科目设置错误。 4. **并发与锁机制问题** - 多线程/并发调用时未加锁,导致系统尝试多次创建相同凭证[^4]。 --- ### 二、解决方案 #### ✅ 步骤1:验证BAPI参数完整性 - **必填字段检查**:确保以下参数正确传入: ```abap HEADERDATA-INV_DOC_NO " 发票号(留空由系统生成) HEADERDATA-VENDOR " 供应商编号 HEADERDATA-COMP_CODE " 公司代码 ITEMDATA-PO_NUMBER " 采购订单号 ITEMDATA-TAX_CODE " 税码(从供应商主数据或增强获取)[^1] ``` - **通过SE37测试**:先在事务码SE37中手动测试BAPI,观察返回消息(`RETURN`表)定位缺失字段[^2]。 #### ✅ 步骤2:增强税码与数据补全 - **添加预付款税码**:在调用BAPI前,通过增强(如BADI `INVOICE_UPDATE`)根据供应商+公司代码动态填充税码: ```abap METHOD if_ex_invoice_update~update. IF cs_header-data-vendor = '供应商编号' AND cs_header-data-comp_code = '公司代码'. cs_item-tax_code = 'J1'. " 示例税码 ENDIF. ENDMETHOD. [^1][^4] ``` #### ✅ 步骤3:防重处理与错误处理 - **检查RETURN表**:调用BAPI后必须解析返回消息: ```abap CALL FUNCTION 'BAPI_INCOMINGINVOICE_CREATE' TABLES return = lt_return. LOOP AT lt_return INTO ls_return WHERE type CA 'EA'. MESSAGE ls_return-message TYPE 'E'. " 中断并报错 ENDLOOP. ``` - **唯一键控制**:使用`INV_DOC_NO`+`FISC_YEAR`作为防重键,或通过`ENQUEUE`函数加锁: ```abap CALL FUNCTION 'ENQUEUE_E_TRESK' EXPORTING vbeln = lv_invoice_doc. " 锁定发票号 ``` #### ✅ 步骤4:凭证状态检查与修复 1. **查询重复凭证**: 检查表 `RBKP`(发票头)、`RSEG`(发票行)是否存在相同供应商/订单号的凭证: ```sql SELECT * FROM rbkp WHERE lifnr = '供应商编号' AND xblnr = '参考凭证号'. ``` 2. **删除重复草稿**: 若凭证状态为`Parked`(预制),使用`BAPI_INCOMINGINVOICE_CANCEL`冲销。 --- ### 三、预防措施 1. **启用BAPI事务控制**: 在调用后执行 `BAPI_TRANSACTION_COMMIT` 或 `ROLLBACK`,确保操作原子性。 2. **主数据同步**: 调用BAPI前验证供应商税码(T007S表)及科目分配(SKB1表)。 3. **日志跟踪**: 记录每次BAPI调用的输入参数和返回消息,便于追溯。 > **提示**:若问题持续,检查是否有自定义增强(如BADI `INVOICE_UPDATE_MIRO`[^4])干扰标准流程,或联系SAP支持分析系统日志(ST22)。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值