生产订单收货数量与物料凭证计算总数量不一致
先使用如下程序对已出错订单进行修正,然后再实施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
生产订单收货数量与物料凭证计算总数量不一致相关推荐
- SAP 生产订单收货入库Goods Receipt
Goods Receipt: 收货这块比较简单,当我们做完报工之后,成品就可以入库了. 那么收货完了,到底会有什么样的影响呢? 会产生物料凭证以及会计凭证,但是若订单中勾选"GR非股价的&q ...
- SAP 创建销售订单和生产订单收货如何冲减独立需求
今天用户问我,这两张销售订单为什么没有让下面这个45的独立需求变成 43 之前我都不知道会有这个业务,于是百度了一下 首先, 在创建销售订单的时候会 根据销售订单类型+物料主数据中的项目类别组 --- ...
- 【ABAP】生产订单收货增强控制
[ABAP]生产订单收货增强控制 [需求] 生产订单需控制先有投入方有产出,禁止直接收货. [实现] 根据Debug调试找到"功能模块出口"(它允许客户通过功能模块在SAP应用程序 ...
- SAP中MIGO收货时分清采购订单和订单收货的区别
在应用中偶然会遇到用户反映在做收货处理时,输入采购订单号后,无法代出采购订单中对应的收货项目:检查发现用户在操作MIGO时的选择了不正确造成的(如下图).这里的R08在MIGO界面中没有非常明确的指向 ...
- SAP WM 针对采购订单收货时候不能自动获取物料主数据里的Special Movement Indicator?
SAP WM 针对采购订单收货时候不能自动获取物料主数据里的Special Movement Indicator? SAP WM模块里有一个标记叫做Special Movement Indicator ...
- 采购订单历史表EKBE和物料凭证表MSEG的关系
熟悉SAP的同仁,都知道在采购订单中可以查看到采购订单历史.里面包括收货行.发票预置.发票检验.交货成本(我们对应的是服务费).我作为ABAP人员,对此理解 EKBE表(采购凭证历史).当然作为物料凭 ...
- 【Demo】采购订单收货Bapi
基于SAP采购订单的收货可使用物料移动中常用的Bapi函数"BAPI_GOODSMVT_CREATE"来处理,其中GOODSMVT_CODE采用"01",也就是 ...
- 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 ...
- 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, ...
最新文章
- python raw_input 与 input 的区别
- 你知道吗?你可以在异常中解退调用栈
- 自动驾驶车辆何时实现?近期不会实现的五大原因
- 基于 EntityFramework 的数据库主从读写分离架构(2)- 改进配置和添加事务支持...
- NVIDIA Jetson Xavier NX设备上使用jtop监控GPU、CPU、内存等的使用
- OpenCV向Facemark API添加新算法
- 【JS面试向】深入原型链之class的继承
- idea新建springboot后端到前端_基于SpringBoot+AntDesign的快速开发平台
- 使用zabbix监控MongoDB
- sed学习[参考转载]
- c语言中清屏的作用是什么,清屏函数的使用
- 2021CSP-J题解整合
- jsp:setProperty的用法
- 操作系统(一)——绪论
- android dialog设置背景图片,如何为Dialog设置背景图片?
- 实战项目——智能农业沙盘
- Eclipse调试python
- javaScript的时间操作
- html感叹号图形代码,canvas3:绘制感叹号
- 《短线交易秘诀》读后感