zoukankan      html  css  js  c++  java
  • MIR7预制发票扣除已经预制的数量(每月多次预制,未即时过账)

    业务场景见抬头,有没有标准的解决方案就不说了,也没去考虑。。。

    这个增强还是SAP老表提供的,感谢,省了不少时间。

    INCLUDE:LMR1MF6S

    最后的位置

    ENHANCEMENT 1  ZMIR7_01.    "active version
    DATA:LS_YDRSEG LIKE LINE OF YDRSEG.
    DATA:L_T_QTY LIKE EKBE-MENGE.
    DATA:LY_PRUEFLOS TYPE QPLOS.
    DATA:LY_ART TYPE QPART.
    DATA:LV_INSMK TYPE MSEG-INSMK.
    DATA:lv_BSART TYPE ESART.
    DATA:lv_KNTTP TYPE KNTTP.
    
    CHECK RM08M-VORGANG = '1'.
    
    LOOP AT YDRSEG INTO LS_YDRSEG.
      L_T_QTY = 0.
      CLEAR:LY_PRUEFLOS,LV_INSMK,lv_bSART,lv_KNTTP."排除没做出使用决策的物料凭证
    
      SELECT SINGLE KNTTP INTO LV_KNTTP FROM EKPO WHERE EBELN = LS_YDRSEG-EBELN AND EBELP = LS_YDRSEG-EBELP..
        IF LV_KNTTP = 'A' OR LV_KNTTP = 'K' OR LV_KNTTP = 'Z' OR LV_KNTTP = 'F'.
          ELSE.
            SELECT SINGLE INSMK INTO LV_INSMK FROM MSEG WHERE MJAHR = LS_YDRSEG-LFGJA
             AND MBLNR = LS_YDRSEG-LFBNR  AND ZEILE = LS_YDRSEG-LFPOS.
            IF LV_INSMK = 'X'.
                SELECT SINGLE ART INTO lY_ART FROM QMAT WHERE ART = '01' AND MATNR = LS_YDRSEG-matnr AND WERKS = LS_YDRSEG-werks.
                  IF sy-subrc = 0.
                      SELECT SINGLE PRUEFLOS INTO LY_PRUEFLOS
                        FROM QALS WHERE MJAHR = LS_YDRSEG-LFGJA
                       AND  MBLNR = LS_YDRSEG-LFBNR  AND ZEILE = LS_YDRSEG-LFPOS AND STAT34 = 'X'.
                     IF LY_PRUEFLOS IS INITIAL.
                        DELETE YDRSEG.
                        CONTINUE.
                     ENDIF.
            ENDIF.
        ENDIF.
        ENDIF.
    
    
    
    
      SELECT SUM( CASE SHKZG WHEN 'S' THEN MENGE ELSE -1 * MENGE END )
                  INTO @L_T_QTY
                  FROM EKBE
      WHERE EBELN = @LS_YDRSEG-EBELN
      AND   EBELP = @LS_YDRSEG-EBELP
      AND   BEWTP IN ('T','Q')
      AND   LFGJA = @LS_YDRSEG-LFGJA
      AND   LFBNR = @LS_YDRSEG-LFBNR
      AND   LFPOS = @LS_YDRSEG-LFPOS.
    
      SELECT SINGLE bsart INTO lv_bsart FROM ekko WHERE ebeln = LS_YDRSEG-EBELN.
        IF lv_bsart = '915'.
          LS_YDRSEG-MENGE = LS_YDRSEG-WEMNG + L_T_QTY.
          ELSE.
            LS_YDRSEG-MENGE = LS_YDRSEG-WEMNG - L_T_QTY.
        ENDIF.
    
    
      "DELETE 没有使用决策的物料凭证
      LS_YDRSEG-BPMNG = LS_YDRSEG-MENGE.
    
      IF LS_YDRSEG-MENGE <= 0.
        DELETE YDRSEG.
        CONTINUE.
        ELSE.
          MODIFY YDRSEG FROM LS_YDRSEG.
      ENDIF.
    
    ENDLOOP.
    ENDENHANCEMENT.

    中间有一大串IF ELSE的可以忽略,特殊业务处理

  • 相关阅读:
    office 365 sharepoint online 学习资料
    NPOI 导入 导出 Excel
    800703fa Illegal operation attempted on a registry key that has been marked for deletion
    js 获取身份证号码出生日期,籍贯等信息
    直接在浏览器中修改网页内容
    asp.net 按指定模板导出word,pdf
    StackPanel在增加控件的问题
    解决iOS工程被Xcode识别成Mac工程的问题
    Swift之异常处理
    Swift中的协议和闭包
  • 原文地址:https://www.cnblogs.com/sapSB/p/6628789.html
Copyright © 2011-2022 走看看