SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

Production Order Quantity Change Daily Checklist



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> PP
View previous topic :: View next topic  
Author Message
admin
Администратор
Администратор



Joined: 01 Sep 2007
Posts: 1639

PostPosted: Tue Sep 11, 2007 6:38 pm    Post subject: Production Order Quantity Change Daily Checklist Reply with quote

Code:
*
* 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'.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> PP All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You cannot download files in this forum


All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG.
SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG.
Every effort is made to ensure content integrity. Use information on this site at your own risk.