先使用如下程序对已出错订单进行修正,然后再实施Note 1094999 - Goods receipt quantity is updated incorrectly
---------------分割线-----------------------------------------
REPORT Z_PPCON_076 .

TABLES: AFKO, AFPO, MSEG, MKPF.

PARAMETERS: TEST_? TYPE C DEFAULT 'X'.

SELECT-OPTIONS: PAORDER FOR AFPO-AUFNR.

DATA: BEGIN OF UPOS_TAB OCCURS 500.
        INCLUDE STRUCTURE AFPO.
DATA: END OF UPOS_TAB.

DATA: BEGIN OF POS_TAB OCCURS 500.
        INCLUDE STRUCTURE AFPO.
DATA: END OF POS_TAB.

DATA: BEGIN OF A_TAB OCCURS 500,
        AUFNR LIKE AFKO-AUFNR,
      END OF A_TAB.

DATA: BEGIN OF M_TAB OCCURS 500.
        INCLUDE STRUCTURE MSEG.
DATA: END OF M_TAB.

DATA: NO_WEMNG LIKE AFPO-WEMNG VALUE '0',
      NO_LTRMI LIKE AFPO-LTRMI VALUE '00000000',
      KUM_WEMNG LIKE AFPO-WEMNG,
      KUM_WEWRT LIKE AFPO-WEWRT,
      DIF_QUAN LIKE AFPO-IAMNG,
      DIF_WERT LIKE AFPO-WEWRT,
      U_FLAG TYPE C.

IF NOT TEST_? IS INITIAL.
  WRITE: '        !!!!!    TEST    !!!!!!'.
  SKIP 1.
ENDIF.

SELECT * FROM AFPO INTO TABLE POS_TAB
         WHERE AUFNR IN PAORDER.

* read material documents per order
LOOP AT POS_TAB.
  REFRESH M_TAB.
  CLEAR: U_FLAG.
  CLEAR: KUM_WEMNG.
  CLEAR: KUM_WEWRT.

SELECT * FROM MSEG INTO TABLE M_TAB
              WHERE MATNR EQ POS_TAB-MATNR
              AND   AUFNR EQ POS_TAB-AUFNR
              AND   AUFPS EQ POS_TAB-POSNR.

LOOP AT M_TAB.
    CHECK M_TAB-BWART EQ '101' OR M_TAB-BWART EQ '102'
                               OR M_TAB-BWART EQ '122'.
*..inward movement
    IF M_TAB-SHKZG EQ 'S'.
      IF NOT M_TAB-DMBTR IS INITIAL.
        KUM_WEWRT = KUM_WEWRT + M_TAB-DMBTR.
      ENDIF.
      IF NOT M_TAB-BSTMG IS INITIAL.
        KUM_WEMNG = KUM_WEMNG + M_TAB-BSTMG.
      ELSE.
        IF M_TAB-ERFME EQ POS_TAB-AMEIN.
          KUM_WEWRT = KUM_WEWRT + M_TAB-DMBTR.
        ELSE.
          IF M_TAB-MEINS EQ POS_TAB-AMEIN.
            KUM_WEMNG = KUM_WEMNG + M_TAB-MENGE.
          ELSE.
            WRITE: 'ERROR - Order:', POS_TAB-AUFNR.
            CLEAR U_FLAG.
            EXIT.
          ENDIF.
        ENDIF.
      ENDIF.
    ELSE.
*..outward movement
      IF NOT M_TAB-DMBTR IS INITIAL.
        IF M_TAB-DMBTR NE M_TAB-BUALT AND
           NOT M_TAB-BUALT IS INITIAL.
          KUM_WEWRT = KUM_WEWRT - M_TAB-BUALT.
        ELSE.
          KUM_WEWRT = KUM_WEWRT - M_TAB-DMBTR.
        ENDIF.
      ENDIF.
      IF NOT M_TAB-BSTMG IS INITIAL.
        KUM_WEMNG = KUM_WEMNG - M_TAB-BSTMG.
      ELSE.
        IF M_TAB-ERFME EQ POS_TAB-AMEIN.
          KUM_WEMNG = KUM_WEMNG - M_TAB-ERFMG.
        ELSE.
          IF M_TAB-MEINS EQ POS_TAB-AMEIN.
            KUM_WEMNG = KUM_WEMNG - M_TAB-MENGE.
          ELSE.
            WRITE: 'ERROR - Order:', POS_TAB-AUFNR.
            CLEAR U_FLAG.
            EXIT.
          ENDIF.
        ENDIF.
      ENDIF.
    ENDIF.

U_FLAG = 'X'.
  ENDLOOP.
*..update necessary ?
  IF NOT U_FLAG IS INITIAL AND ( NOT KUM_WEMNG IS INITIAL
                           AND KUM_WEMNG NE POS_TAB-WEMNG )
                           OR  ( NOT KUM_WEWRT IS INITIAL
                           AND KUM_WEWRT NE POS_TAB-WEWRT ).
    SELECT SINGLE * FROM MKPF WHERE MBLNR EQ M_TAB-MBLNR
                               AND MJAHR  EQ M_TAB-MJAHR.
    IF SY-SUBRC IS INITIAL.
      MOVE MKPF-BUDAT TO POS_TAB-LTRMI.
    ENDIF.
    IF KUM_WEMNG = POS_TAB-WEMNG  OR
       KUM_WEWRT = POS_TAB-WEWRT.
      WRITE: / 'No update for the following order - check the order !'.
    ELSE.
      MOVE-CORRESPONDING POS_TAB TO UPOS_TAB.
      MOVE KUM_WEMNG TO UPOS_TAB-WEMNG.
      MOVE KUM_WEWRT TO UPOS_TAB-WEWRT.
      APPEND UPOS_TAB.
    ENDIF.
    WRITE: / 'Order:', POS_TAB-AUFNR, 'Material:', POS_TAB-MATNR,
          'Delivered Quantity:', POS_TAB-WEMNG, POS_TAB-AMEIN,
          'Value:', POS_TAB-WEWRT.
    WRITE: / 'Document   Item   Move-type Stock-Quantity  Unit',
                         'Entry-Quantity   Unit       Value'.
    LOOP AT M_TAB.
      WRITE: / M_TAB-MBLNR, M_TAB-ZEILE, 21 M_TAB-BWART, 27 M_TAB-MENGE,
                 M_TAB-MEINS, M_TAB-BSTMG, M_TAB-BSTME, 71 M_TAB-DMBTR,
                 M_TAB-WAERS.
    ENDLOOP.
    ULINE.
    DIF_QUAN = KUM_WEMNG - POS_TAB-WEMNG.
    DIF_WERT = KUM_WEWRT - POS_TAB-WEWRT.
    WRITE: /22 'Sum:', KUM_WEMNG, POS_TAB-AMEIN, 71 KUM_WEWRT,
        / 'Balance Quantity Document - Order:',
          'Quantity:', DIF_QUAN, 'Value:', DIF_WERT.
    SKIP 1.
  ENDIF.
ENDLOOP.

CLEAR SY-DBCNT.
*...change order items.
IF TEST_? IS INITIAL AND NOT UPOS_TAB[] IS INITIAL.
  UPDATE AFPO FROM TABLE UPOS_TAB.
ENDIF.
SKIP 1.
WRITE: / 'Changed Orders:', SY-DBCNT.

******** End of    Report

生产订单收货数量与物料凭证计算总数量不一致相关推荐

  1. SAP 生产订单收货入库Goods Receipt

    Goods Receipt: 收货这块比较简单,当我们做完报工之后,成品就可以入库了. 那么收货完了,到底会有什么样的影响呢? 会产生物料凭证以及会计凭证,但是若订单中勾选"GR非股价的&q ...

  2. SAP 创建销售订单和生产订单收货如何冲减独立需求

    今天用户问我,这两张销售订单为什么没有让下面这个45的独立需求变成 43 之前我都不知道会有这个业务,于是百度了一下 首先, 在创建销售订单的时候会 根据销售订单类型+物料主数据中的项目类别组 --- ...

  3. 【ABAP】生产订单收货增强控制

    [ABAP]生产订单收货增强控制 [需求] 生产订单需控制先有投入方有产出,禁止直接收货. [实现] 根据Debug调试找到"功能模块出口"(它允许客户通过功能模块在SAP应用程序 ...

  4. SAP中MIGO收货时分清采购订单和订单收货的区别

    在应用中偶然会遇到用户反映在做收货处理时,输入采购订单号后,无法代出采购订单中对应的收货项目:检查发现用户在操作MIGO时的选择了不正确造成的(如下图).这里的R08在MIGO界面中没有非常明确的指向 ...

  5. SAP WM 针对采购订单收货时候不能自动获取物料主数据里的Special Movement Indicator?

    SAP WM 针对采购订单收货时候不能自动获取物料主数据里的Special Movement Indicator? SAP WM模块里有一个标记叫做Special Movement Indicator ...

  6. 采购订单历史表EKBE和物料凭证表MSEG的关系

    熟悉SAP的同仁,都知道在采购订单中可以查看到采购订单历史.里面包括收货行.发票预置.发票检验.交货成本(我们对应的是服务费).我作为ABAP人员,对此理解 EKBE表(采购凭证历史).当然作为物料凭 ...

  7. 【Demo】采购订单收货Bapi

    基于SAP采购订单的收货可使用物料移动中常用的Bapi函数"BAPI_GOODSMVT_CREATE"来处理,其中GOODSMVT_CODE采用"01",也就是 ...

  8. SAP WM 采购订单收货后LT06报错-Allowed storage unit types not defined for storage type Z03-

    SAP WM 采购订单收货后LT06报错-Allowed storage unit types not defined for storage type Z03- 1,如下的storage type ...

  9. SAP WM 采购订单收货后LT06报错-No bin types have been assigned to storage unit type IP-

    SAP WM 采购订单收货后LT06报错-No bin types have been assigned to storage unit type IP- 1,如下的storage type Z03, ...

最新文章

  1. python raw_input 与 input 的区别
  2. 你知道吗?你可以在异常中解退调用栈
  3. 自动驾驶车辆何时实现?近期不会实现的五大原因
  4. 基于 EntityFramework 的数据库主从读写分离架构(2)- 改进配置和添加事务支持...
  5. NVIDIA Jetson Xavier NX设备上使用jtop监控GPU、CPU、内存等的使用
  6. OpenCV向Facemark API添加新算法
  7. 【JS面试向】深入原型链之class的继承
  8. idea新建springboot后端到前端_基于SpringBoot+AntDesign的快速开发平台
  9. 使用zabbix监控MongoDB
  10. sed学习[参考转载]
  11. c语言中清屏的作用是什么,清屏函数的使用
  12. 2021CSP-J题解整合
  13. jsp:setProperty的用法
  14. 操作系统(一)——绪论
  15. android dialog设置背景图片,如何为Dialog设置背景图片?
  16. 实战项目——智能农业沙盘
  17. Eclipse调试python
  18. javaScript的时间操作
  19. html感叹号图形代码,canvas3:绘制感叹号
  20. 《短线交易秘诀》读后感

热门文章

  1. “你要是有这个功能就好了!”
  2. 捞人宝估值数亿,已捞出数位大佬,商业模式已验证!
  3. Windows Server 2003 IIS 使用 Excel.Application
  4. Python语言规范
  5. MVC4 下DropDownList使用方法(转)
  6. 查询Linux系统最后重启时间的三个方法
  7. 关于Spring 中的PortletModeHandlerMapping
  8. 为GridView添加表头thead
  9. 在res/xml中的文件
  10. 3.产品成本在完工和在制产品间分配