SAP 采购订单预制发票不让重复开立增强(包含:LMR1MF6S)<转载>

本文介绍了一种方法,通过在SAPLMR1MF6S程序的增强点添加代码,防止MIR7已过账的发票数据重复预制。作者分析了系统配置和业务场景,发现财务对账周期导致的问题,并提供了解决方案。

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

原文链接:https://blog.youkuaiyun.com/LH26988/article/details/136802631
之前博主有介绍过通过配置来控制不让采购发票重复开立,然是这个方式有点缺陷(跳转)
今天介绍,通过增强来彻底搞定这个问题的办法:
问题如下:
比如:

1月开票的432pc,MIR7金额和数量不会带出

3月开票的568pc,MIR7预制时依旧能带出并生成预制凭证
在这里插入图片描述
检查了系统配置和主数据:

(1)基于收货的发票校验标识:供应商主数据/信息记录/采购订单,有勾选

在这里插入图片描述
(2)OMRDC-重复发票检查:有勾选
在这里插入图片描述
(3)OBA5-消息控制:状态是E
在这里插入图片描述
在这里插入图片描述
以上配置均无问题

间隔时间较近的能带出,远的不会带出,所以怀疑是否跟发票未清账有关,但是财务清账是需要付款才能清,而且并不是过账了当月就会付款了,所以系统里会存在很多供应商都有已过账,但还未付款未清账的情况,无法验证,且不符合业务实际,所以只能通过增强控制。

补充一点:MIRO和MIR7的区别

MIRO如果已经开票,金额和数量都会显示为空,但是会带出本月的未开票的数据,MIR7则不会带出本月未开票的数据

财务是一个月对账一次,本月对账上个月的收货数据,所以需要对MIR7作增强控制

直接在程序LMR1MF6S - endform 前面加一段代码
在这里插入图片描述

ENHANCEMENT-POINT MIR7_01 SPOTS ES_SAPLMR1M .    "MIR7已经过账的数据不能再重复预制            
  DATA: LS_YDRSEG LIKE LINE OF YDRSEG.
  DATA: LT_EKBE LIKE TABLE OF EKBE WITH HEADER LINE.
  DATA: L_QTY LIKE EKBE-MENGE.
  DATA: S_QTY LIKE EKBE-MENGE.
  CHECK RM08M-VORGANG = '1'.
  IF SY-TCODE = 'MIR7'.
    LOOP AT YDRSEG INTO LS_YDRSEG.
      CLEAR: LT_EKBE,L_QTY,S_QTY.
      REFRESH: LT_EKBE.
      SELECT *
        INTO CORRESPONDING FIELDS OF TABLE LT_EKBE
        FROM EKBE
        WHERE EBELN = LS_YDRSEG-EBELN
          AND EBELP = LS_YDRSEG-EBELP
*          AND BEWTP IN ('T','Q')     "Q - 已过账 ;T - 预制
          AND BEWTP = 'Q'
          AND LFGJA = LS_YDRSEG-LFGJA
          AND LFBNR = LS_YDRSEG-LFBNR
          AND LFPOS = LS_YDRSEG-LFPOS.
      IF LT_EKBE[] IS NOT INITIAL.
        LOOP AT LT_EKBE.
          IF LT_EKBE-SHKZG = 'S'.    "借方
            L_QTY = LT_EKBE-MENGE.
          ELSEIF LT_EKBE-SHKZG = 'H'.  "贷方
            L_QTY = 0 - LT_EKBE-MENGE.
          ENDIF.
            S_QTY = S_QTY + L_QTY.
        ENDLOOP.
 
        IF LS_YDRSEG-SHKZG = 'H'.
          LS_YDRSEG-WEMNG = 0 - LS_YDRSEG-WEMNG.    "退货订单
        ENDIF.
        LS_YDRSEG-MENGE = LS_YDRSEG-WEMNG - S_QTY.
        LS_YDRSEG-BPMNG = LS_YDRSEG-MENGE.
        IF LS_YDRSEG-MENGE <= 0.
          DELETE YDRSEG.
          CONTINUE.
        ELSE.
          MODIFY YDRSEG FROM LS_YDRSEG.
        ENDIF.
      ENDIF.
    ENDLOOP.
  ENDIF.

以上~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值