Önceki Sayfa

SAP ABAP Programming, Functional and Basis Component Reference Books

Production Order Quantity Change Daily Checklist

*

* Production Order Quantity Change Daily Checklist

*

* An 'Err' flag will be assigned to the 'Rmks' column if the Required

* components quantity does not equal to the calculated BOM components

* quantity.

*

REPORT ZPPORDER LINE-SIZE 180 NO STANDARD PAGE HEADING

LINE-COUNT 058(001).

TABLES: AUFK,  "Order master data

AFKO,  "Order header data PP orders

RESB,  "Reservation/dependent requirements

MAST,  "Material to BOM Link

STKO,  "BOM Header

STPO.  "BOM item

DATA: BEGIN OF WA,

AUART      TYPE AUFK-AUART,

AUFNR      TYPE AUFK-AUFNR,

AEDAT      TYPE AUFK-AEDAT,

AENAM      TYPE AUFK-AENAM,

WERKS      TYPE AUFK-WERKS,

PLNBEZ     TYPE AFKO-PLNBEZ,

GAMNG      TYPE AFKO-GAMNG,

GASMG      TYPE AFKO-GASMG,

MATNR      TYPE RESB-MATNR,

POSNR      TYPE RESB-POSNR,

BDMNG      TYPE RESB-BDMNG,

BMENG      TYPE STKO-BMENG,

MENGE      TYPE STPO-MENGE,

END OF WA,

ITAB  LIKE SORTED   TABLE OF WA WITH NON-UNIQUE KEY AUFNR POSNR.

DATA: BEGIN OF ITAB2 OCCURS 0.

INCLUDE STRUCTURE WA.

DATA: END OF ITAB2.

DATA: BEGIN OF ITAB-AUFK OCCURS 0,

AUART  LIKE AUFK-AUART,

AUFNR  LIKE AUFK-AUFNR,

POSNR  LIKE RESB-POSNR,

AEDAT  LIKE AUFK-AEDAT,

AENAM  LIKE AUFK-AENAM,

WERKS  LIKE AUFK-WERKS,

PLNBEZ LIKE AFKO-PLNBEZ,

GAMNG(7) TYPE P DECIMALS 0,

GASMG(7) TYPE P DECIMALS 0,

MATNR  LIKE RESB-MATNR,

BDMNG(7) TYPE P DECIMALS 0,

BMENG(7) TYPE P DECIMALS 0,

MENGE(7) TYPE P DECIMALS 3.

DATA: END OF ITAB-AUFK.

DATA: FDATE LIKE SY-DATUM,

LDATE LIKE SY-DATUM.

DATA: X_AUFNR LIKE AFKO-AUFNR,

X_MENGE(7) TYPE P DECIMALS 0,

X_ERR(3).

DATA: W_DATASET1(500) VALUE '/usr/sap/trans/data/'.

SELECT-OPTIONS T_WERKS  FOR  AUFK-WERKS OBLIGATORY.

SELECT-OPTIONS T_AUFNR  FOR  AUFK-AUFNR.

SELECT-OPTIONS T_AEDAT  FOR  AUFK-AEDAT.

PARAMETERS     PDATA    LIKE W_DATASET1.

CONCATENATE W_DATASET1 PDATA INTO W_DATASET1.

PERFORM F_COLLECT_DATA.

FORM F_COLLECT_DATA.

OPEN DATASET W_DATASET1 FOR INPUT IN TEXT MODE.

DO.

IF sy-subrc <> 0.

EXIT.

ENDIF.

READ DATASET W_DATASET1 INTO WA.

APPEND WA TO ITAB2.

ENDDO.

CLOSE DATASET W_DATASET1.

SELECT  A~AUFNR  A~AUART A~AEDAT A~AENAM A~WERKS

B~PLNBEZ B~GAMNG B~GASMG

C~MATNR  C~BDMNG C~POSNR

INTO CORRESPONDING FIELDS OF TABLE ITAB

FROM          ( AUFK AS A

INNER JOIN AFKO AS B ON B~AUFNR  = A~AUFNR

INNER JOIN RESB AS C ON C~AUFNR  = A~AUFNR )

WHERE A~AEDAT IN T_AEDAT

AND A~WERKS IN T_WERKS.

LOOP AT ITAB INTO WA.

CLEAR MAST.

SELECT SINGLE * FROM MAST WHERE MATNR = WA-PLNBEZ

AND WERKS = WA-WERKS.

CLEAR STKO.

SELECT SINGLE * FROM STKO WHERE STLNR = MAST-STLNR

AND STLAL = MAST-STLAL.

CLEAR STPO.

SELECT SINGLE * FROM STPO WHERE STLNR = MAST-STLNR

AND POSNR = WA-POSNR.

WA-BMENG = STKO-BMENG.

WA-MENGE = STPO-MENGE.

MODIFY ITAB FROM WA.

AT NEW AUFNR.

SKIP.

ENDAT.

LOOP AT ITAB2 WHERE AUFNR = WA-AUFNR

AND POSNR = WA-POSNR.

IF ITAB2-GAMNG <> WA-GAMNG OR

ITAB2-GASMG <> WA-GASMG OR

ITAB2-BDMNG <> WA-BDMNG.

CLEAR X_MENGE.

IF ITAB2-BMENG <> 0.

X_MENGE = ITAB2-GAMNG / ITAB2-BMENG * ITAB2-MENGE.

ENDIF.

CLEAR X_ERR.

IF ITAB2-BDMNG <> X_MENGE.

X_ERR = 'Err'.

ENDIF.

FORMAT COLOR COL_TOTAL.

WRITE: / ITAB2-AUART  UNDER 'Type',

ITAB2-AUFNR  UNDER 'Prod Order',

ITAB2-AEDAT  UNDER 'Last Chg Dt',

ITAB2-AENAM  UNDER 'Last Chg by',

ITAB2-WERKS  UNDER 'Plant',

ITAB2-PLNBEZ UNDER 'Material',

(10) ITAB2-GAMNG  UNDER 'Order Qty' DECIMALS 0,

(10) ITAB2-GASMG  UNDER 'Scrap Qty' DECIMALS 0,

ITAB2-POSNR  UNDER 'Item',

ITAB2-MATNR  UNDER 'Component Req',

(10) ITAB2-BDMNG  UNDER 'Req Qty' DECIMALS 0,

X_MENGE      UNDER 'BOM Qty' COLOR COL_TOTAL,

ITAB2-BMENG  UNDER 'BOM Base',

ITAB2-MENGE  UNDER 'BOM Comp',

X_ERR        UNDER 'Rmks' COLOR COL_TOTAL.

CLEAR X_MENGE.

IF WA-BMENG <> 0.

X_MENGE = WA-GAMNG / WA-BMENG * WA-MENGE.

ENDIF.

CLEAR X_ERR.

IF WA-BDMNG <> X_MENGE.

X_ERR = 'Err'.

ENDIF.

FORMAT COLOR OFF.

WRITE: / WA-AUART  UNDER 'Type',

WA-AUFNR  UNDER 'Prod Order',

WA-AEDAT  UNDER 'Last Chg Dt',

WA-AENAM  UNDER 'Last Chg by',

WA-WERKS  UNDER 'Plant',

WA-PLNBEZ UNDER 'Material',

(10) WA-GAMNG  UNDER 'Order Qty' DECIMALS 0,

(10) WA-GASMG  UNDER 'Scrap Qty' DECIMALS 0,

WA-POSNR  UNDER 'Item',

WA-MATNR  UNDER 'Component Req',

(10) WA-BDMNG  UNDER 'Req Qty' DECIMALS 0,

X_MENGE   UNDER 'BOM Qty' COLOR COL_TOTAL,

WA-BMENG  UNDER 'BOM Base',

WA-MENGE  UNDER 'BOM Comp',

X_ERR     UNDER 'Rmks' COLOR COL_TOTAL.

ENDIF.

ENDLOOP.

ENDLOOP.

LOOP AT ITAB2.

LOOP AT ITAB INTO WA WHERE AUFNR = ITAB2-AUFNR

AND POSNR = ITAB2-POSNR.

DELETE ITAB2.

ENDLOOP.

SELECT SINGLE * FROM AUFK WHERE AUFNR = ITAB2-AUFNR.

IF SY-SUBRC <> 0.

DELETE ITAB2.

ENDIF.

ENDLOOP.

OPEN DATASET W_DATASET1 FOR OUTPUT IN TEXT MODE.

LOOP AT ITAB  INTO WA.

TRANSFER WA TO W_DATASET1.

ENDLOOP.

LOOP AT ITAB2 INTO WA.

TRANSFER WA TO W_DATASET1.

ENDLOOP.

CLOSE DATASET W_DATASET1.

ENDFORM.

TOP-OF-PAGE.

FORMAT COLOR COL_TOTAL.

WRITE: / SY-DATUM, SY-UZEIT, SY-REPID, SY-UNAME,

50 'Daily Qty Changed Checklist for Production Order',

120 SY-PAGNO.

SKIP.

WRITE: / 'Plant ', T_WERKS-LOW.

WRITE:   ' Last Change Date ', T_AEDAT-LOW, ' to ', T_AEDAT-HIGH.

SKIP.

WRITE: /1  'Type',

6  'Prod Order',

17 'Last Chg Dt',

29 'Last Chg by',

42 'Plant',

49 'Material',

69 'Order Qty',

83 'Scrap Qty',

99 'Item',

105 'Component Req',

121 'Req Qty',

135 'BOM Qty',

149 'BOM Base',

163 'BOM Comp',

178 'Rmks'.

ULINE.

WRITE: / 'Previous data :- '.

FORMAT COLOR OFF.

WRITE: / 'Current data :- '.

INITIALIZATION.

LDATE = SY-DATUM.

LDATE  = LDATE - 1.

FDATE = LDATE.

MOVE:   FDATE         TO  T_AEDAT-LOW.

APPEND T_AEDAT.

PDATA = 'AE001'.

*--- End of Program

Copyright © 2010. KM Group. All Rights Reserved.