日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2025/3/20 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 生产订单收货数量与物料凭证计算总数量不一致 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?先使用如下程序對已出錯訂單進行修正,然后再實施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????????

總結

以上是生活随笔為你收集整理的生产订单收货数量与物料凭证计算总数量不一致的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。