Stock qty on past date (yesterday)

Hi,i would like to see the qty of the stock on previous day (or past date).is there any option in sap?

YS,
You can use T code MB5B for this purpose.
Input has to be given like material, Plant (if required), storage location (if required) & date 'under selection date' on which you want to see the stock.
Under 'Settings' mark 'Total only- Non hierarchical representation layout' & execute.
You will data  of opening stock, receipt, issue & closing stock.
Hope this helps you.
SmanS

Similar Messages

  • Stock as on past dates

    Hi all,
    I have a requirement to audit stock differences that had happened few months back between SAP and BI.
    The stock in BI has a cumulative figure of all stock categories viz. unrestricted, in transit, blocked and QI.
    In SAP, I can get the unrestricted stock on a particular day using MB5B but I don't know how to find the blocked stock/QI stock/in-transit stock on a past date say as on 15/Jan/2009.
    Could you please help me out?
    Thanks
    Rana

    Hi,
    MB5OA doesn't serve my purpose. I need to find what was the stock break-up for all the stock categories (blocked, UR, QI, In-transit) for a material on a past date. For example, I need to know what was the stock of material ABC in QI, in Blocked and in unrestricted stock on 15th of Jan 2009.
    Could you please help me?
    Thanks,
    Rana.

  • Stock Report on Past date

    Hi All,
    Can a stock report for any Past date with respect to qty and value be developed which gives the split of unrestricted, Quality and Blocked stock.
    MB5B gives stock report on any past date which is the total of all the stocks but not the split.
    Need ur assistance.

    Hi,
    MB52 tcode gives the current stock status. In my case stock status of any past date with the split up is needed.
    Regards

  • CLOSING STOCK QTY FOR THE DATE

    Hi
    Can any body tell, In which table i can find the closing stock qty for the particular date and for the particular material without including intransit stock qty.
    Regards
    Mani.

    Dear Santhosh,
    Yes, we tried to take the last MBLNR(Value) of the date from MKPF and Try to use the LBKUM Field from MSEG table. But the LBKUM value is with intransit stock.
    So , we failed in that logic to bring the warehouse stock for the date.
    Any other suggestions pls.
    Regards
    Mani.

  • Consignment stock as on past date

    Hi friends,
    Is there a way to view the consignment stock per customer location as on a previous date?
    MB51 does not help and MB5B gives the total stock but not by customer (apart from its layout being hardly friendly). We need to reconcile stocks of same MATNR which lies in various ship to locations but can't when the customer provides us the statement from their end and we ourselves don't have ready numbers as on those dates. Appreciate any guidance.
    Many thanks.

    Yogesh,
    In MB58 Double click on customer and it gives u break up stock at customers place..
    Try to explore that....
    REWARD IF U FINDS THIS AS USEFUL....
    Regds
    MM

  • Sales order stock and storage location stock on past date with value

    Hi everyone.
    I m looking for a report which can give sales order stock with value as it is shown in mb5b and storage location stock with value as in mc.5 is there any report which can give the combination of both the things on past date with values.

    can you tell me what shall be the fields and table for special stock on past date with value and sloc stock on past date with value

  • Table to get "stock of material on a past date "

    Hi Guru's,
    Can anyone tell me "how to get stock of material on a past date".
    Pls tell me from which Table you can fetch these values and in what logic.
    Any Input is highly appreciated.
    Thanks and Regards,
    Selva

    Hello,
    You can get the stock from the table MARDH, MCHBH period wise.
    this table is use for history stocks.
    Regards
    Bhima

  • Stock qty/value on specifiec date

    Hi All
    Can anybody explain how  can we find the Stock qty and value on paricular date period through the table instead of transaction MB5B.I am waiting for your valid inputs.
    Thanx

    This is not possible as SAP only captures stock data at month level. Transaction MB5B actually uses posting date in material document to provide stock for a particular posting date; it does not read a table that provides stock data by posting date. Now if you need to view stock data at a particular month, this should be possible by viewing a combination of regular stock tables (e.g., MARD for regular storage location stock, MBEW for valuated stock at plant level, MKOL for consignment stock), and their historical data tables (e.g., MARDH, MBEWH, MKOLH).
    Please keep in mind that the period data in these tables does not get updated every month. They are updated only if there is a stock posting affecting these tables on that particular month. As such, you will need to come up with the logic to project data for a particular month based on these tables, which should be possible using data from these tables.
    Revi

  • Last Date on which stock Qty was zero

    Dear Gurus,
    LIS structure S032 can tell us the date of last GR,Cons., Iss. & movement date. is there any field which tell us the last date on which stock qty was zero ?
    Regards,
    FR

    Dear Bijay Pradhan,
    Thank you so much for your response, actualy we are using MCBA to desing a report by which we are determining the data since then the nmaterial has not consumed but we are facing the problem when consuption made and after consumption stock was zero and after 4 or 5 month only GR made  but no consumption made so when we generate report then system shows that the material has not consumed since last 4 or 5 months whcih is wrong because if no consumption made after the stock was zero then system should consider GR date for our report.
    can you plz guide me how to resolve the issue?
    Thanks & regards,
    FR

  • Delivery in past date

    Dear all,
    i update the stock by today with posting date 01.10.2010 for 10 qty. When i created the sale order for 10 qty and do availability check . system confirm the delivery for current date but i need to deliver in 01.10.2010.
    i checked for delivery in vl01n and system throu no schedule line .
    how we can do delivery in past date.
    Thnaks..
    Edited by: raj on Dec 16, 2010 5:45 AM

    hi,
    there are number of paratmeters to check:
    check MMBE - in unrestricted use or scheduled for delivery.
    check the schedule line date.
    check the delivery scheduling and transportation scheduling in SPRO.
    check in MMR in MRP views - RLT.
    how we can do delivery in past date - please explain this in brief
    confirm the forum
    balajia

  • Closing stock of a particular date

    how to get plant wise material closing stock on any particular date. say previous months end date. I am calculating that from MSEG table with the help of MSEGINSMK and MSEGSHKZG field. (with date filtaration by joining MBLNR of MKPF table) But stock is showing different with the closing stock showing in MB5B report for that date. I don't know which BWART of MSEG table to be excluded. My email id is [email protected]

    Hi,
    This is a stock aging report, you can use this for reference.
    Logic: Based on current stock and value from MBEW table. The latest receipt dates were taken till the qty tallies off.Rejections and reversals are considered.
    The movement types considered are ('101','102','105','106','122','123','131','132','301','302','309','310','501','502','531','532','561','562','701','702').
    *& Report  ZMM03_TRY                                                 *
    REPORT  ZMM03 LINE-SIZE 226
                   LINE-COUNT 35(2)
                    NO STANDARD PAGE HEADING..
    TABLES : S032,  "Current Stock And Grouping Terms
             MBEW,  "Material Valuation
             T023T, "Material Group Desc.
             MAKT,  "Material Description
             EKPO.  "Purchasing Document Item.
    DATA : BEGIN OF T_HEADER OCCURS 0,
           MTART LIKE MARA-MTART,
           MATNR LIKE MBEW-MATNR,
           BWKEY LIKE MBEW-BWKEY,
           MATKL LIKE MARA-MATKL,
           MAKTX LIKE MAKT-MAKTX,
           MEINS LIKE MARA-MEINS,
           LBKUM LIKE MBEW-LBKUM,
           SALK3 LIKE MBEW-SALK3,
           VERPR LIKE MBEW-VERPR,
           CLSTK LIKE MBEW-LBKUM,
           CLVAL LIKE CKMLCR-SALK3,
           UNIT LIKE CKMLCR-PVPRS,
           END OF T_HEADER.
    DATA : BEGIN OF T_MSEG OCCURS 0,
           MATNR LIKE MSEG-MATNR,
           WERKS LIKE MSEG-WERKS,
           BUDAT LIKE MKPF-BUDAT,
           MBLNR LIKE MKPF-MBLNR,
           MJAHR LIKE MKPF-MJAHR,
           ZEILE LIKE MSEG-ZEILE,
           LFBNR LIKE MSEG-LFBNR,
           LFBJA LIKE MSEG-LFBJA,
           LFPOS LIKE MSEG-LFPOS,
           BWART LIKE MSEG-BWART,
           MENGE LIKE MSEG-MENGE,
           EBELN LIKE MSEG-EBELN,
           EBELP LIKE MSEG-EBELP,
           XAUTO LIKE MSEG-XAUTO,
           UMMAT LIKE MSEG-UMMAT,
           UMWRK LIKE MSEG-UMWRK,
           MARK(1),
           END OF T_MSEG.
    TYPE-POOLS : SLIS.
    DATA : L_STOCK TYPE MSEG-MENGE.
    DATA : WA_MSEG LIKE T_MSEG.
    DATA : WA_MSEG1 LIKE T_MSEG.
    DATA : T_ITEMS LIKE T_MSEG OCCURS 0 WITH HEADER LINE.
    DATA : T_CUR_STOCK LIKE T_MSEG OCCURS 0 WITH HEADER LINE.
    DATA : L_LBKUM TYPE MBEW-LBKUM.
    DATA : BEGIN OF T_OUTPUT OCCURS 0,
             WERKS LIKE MSEG-WERKS,
             MATNR LIKE MSEG-MATNR,
             BUDAT LIKE MKPF-BUDAT,
             MENGE LIKE MSEG-MENGE,
             PDAYS TYPE I,
             PVAL  TYPE MSEG-MENGE,
             MAKTX LIKE MAKT-MAKTX,
             CQTY  LIKE MSEG-MENGE,
             CPRC  LIKE MBEW-SALK3,
           END OF T_OUTPUT.
    DATA: GRID_TAB TYPE SLIS_T_FIELDCAT_ALV  WITH HEADER LINE.
    DATA : T_SORT TYPE SLIS_T_SORTINFO_ALV,
           WA_SORT TYPE SLIS_SORTINFO_ALV.
    *AT SELECTION-SCREEN.
    SELECTION-SCREEN BEGIN OF BLOCK 1 WITH FRAME TITLE TEXT-014.
    SELECTION-SCREEN SKIP 1.
    PARAMETERS : P_DATE LIKE S032-LETZTABG OBLIGATORY DEFAULT SY-DATUM.
    SELECTION-SCREEN SKIP 1.
    SELECTION-SCREEN END OF BLOCK 1.
    SELECTION-SCREEN BEGIN OF BLOCK 2 WITH FRAME TITLE TEXT-015.
    PARAMETERS     : P_WERKS    TYPE S032-WERKS OBLIGATORY.
    SELECT-OPTIONS : S_LGORT    FOR S032-LGORT,
                     S_MATNR    FOR S032-MATNR.
    SELECTION-SCREEN END OF BLOCK 2.
    SELECTION-SCREEN BEGIN OF BLOCK 3 WITH FRAME TITLE TEXT-016.
    SELECT-OPTIONS : S_MTART    FOR S032-MTART,
                     S_MATKL    FOR S032-MATKL.
    SELECTION-SCREEN END OF BLOCK 3.
    IF  P_DATE IS INITIAL AND
        P_WERKS IS INITIAL AND
        S_LGORT IS INITIAL AND
        S_MATNR IS INITIAL AND
        S_MTART IS INITIAL AND
        S_MATKL  IS INITIAL.
      MESSAGE I398(00) WITH 'Enter Selection Critirea'(019).
      SY-SUBRC = '1'.
    ELSE.
      SELECT AMATNR ABWKEY BMATKL BMTART CMAKTX BMEINS A~LBKUM
             A~SALK3
           INTO CORRESPONDING FIELDS OF TABLE T_HEADER
           FROM MBEW AS A INNER JOIN MARA AS B ON AMATNR = BMATNR
                          INNER JOIN MAKT AS C ON AMATNR = CMATNR
                                            WHERE A~MATNR IN S_MATNR
                                              AND A~BWKEY EQ P_WERKS
                                              AND MATKL IN S_MATKL
                                              AND MTART IN S_MTART
                                              AND BWTAR EQ ' '
                                              AND C~SPRAS = SY-LANGU.
      IF SY-SUBRC EQ 0.
        SELECT ABUDAT AMBLNR AMJAHR BZEILE BMATNR BWERKS B~BWART
               BMENGE BLFBNR BLFBJA BLFPOS BEBELN BEBELP B~XAUTO
               BUMMAT BUMWRK
            INTO CORRESPONDING FIELDS OF TABLE T_MSEG
            FROM MKPF AS A INNER JOIN MSEG AS B ON AMBLNR = BMBLNR
                                               AND AMJAHR = BMJAHR
             FOR ALL ENTRIES IN T_HEADER
                                             WHERE A~BUDAT <= P_DATE
                                               AND B~MATNR = T_HEADER-MATNR
                                               AND B~WERKS = T_HEADER-BWKEY
                                               AND B~BWART IN ('101',
                                                               '102',
                                                               '105',
                                                               '106',
                                                               '122',
                                                               '123',
                                                               '301',
                                                               '302',
                                                               '701',
                                                               '702',
                                                               '131',
                                                               '132',
                                                               '309',
                                                               '310',
                                                               '501',
                                                               '502',
                                                               '531',
                                                               '532',
                                                               '561',
                                                               '562').
        PERFORM GET_DEAD_STOCK.
        PERFORM DISPLAY_OUTPUT.
      ELSE.
        MESSAGE S398(00) WITH 'No Data found for'(013)
        'Given Selection Critirea'(017).
        LEAVE LIST-PROCESSING.
      ENDIF.
    ENDIF.
    *&      Form  get_dead_stock
          text
    FORM GET_DEAD_STOCK .
      LOOP AT T_HEADER.
        SORT T_MSEG BY MATNR WERKS BUDAT DESCENDING MBLNR DESCENDING.
        LOOP AT T_MSEG WHERE MATNR = T_HEADER-MATNR
                         AND WERKS = T_HEADER-BWKEY
                         AND ( BWART = '101' OR
                               BWART = '105' OR
                               BWART = '501' OR
                               BWART = '531' OR
                               BWART = '561' OR
                               BWART = '701' OR
                               BWART = '309' OR
                               BWART = '301' OR
                               BWART = '131' ).
          IF T_MSEG-BWART = 101.
            READ TABLE T_MSEG WITH KEY LFBNR = T_MSEG-MBLNR
                                       LFBJA = T_MSEG-MJAHR
                                       LFPOS = T_MSEG-ZEILE
                                       BWART = 102.
            IF SY-SUBRC = 0.
              T_MSEG-MARK = 'X'.
              MODIFY T_MSEG.
              CONTINUE.
            ENDIF.
            READ TABLE T_MSEG INTO WA_MSEG WITH KEY LFBNR = T_MSEG-MBLNR
                                       LFBJA = T_MSEG-MJAHR
                                       LFPOS = T_MSEG-ZEILE
                                       BWART = 122.
            IF SY-SUBRC = 0.
              READ TABLE T_MSEG INTO WA_MSEG1 WITH KEY LFBNR = WA_MSEG-MBLNR
                                         LFBJA = WA_MSEG-MJAHR
                                         LFPOS = WA_MSEG-ZEILE
                                         BWART = 123.
              IF SY-SUBRC EQ 0.
                WA_MSEG-MARK = 'X'.
                MODIFY T_MSEG FROM WA_MSEG.
                CONTINUE.
              ELSE.
                IF T_MSEG-MENGE EQ WA_MSEG-MENGE.
                  T_MSEG-MARK = 'X'.
                  MODIFY T_MSEG.
                  CONTINUE.
                ELSE.
                  T_MSEG-MENGE = T_MSEG-MENGE - WA_MSEG-MENGE.
                  MODIFY T_MSEG.
                ENDIF.
              ENDIF.
            ENDIF.
          ELSEIF T_MSEG-BWART = 105.
            READ TABLE T_MSEG INTO WA_MSEG WITH KEY LFBNR = T_MSEG-MBLNR
                                       LFBJA = T_MSEG-MJAHR
                                       LFPOS = T_MSEG-ZEILE
                                       BWART = 106.
            IF SY-SUBRC = 0.
              T_MSEG-MARK = 'X'.
              MODIFY T_MSEG.
              CONTINUE.
            ENDIF.
          ELSEIF T_MSEG-BWART = 131.
            READ TABLE T_MSEG INTO WA_MSEG WITH KEY LFBNR = T_MSEG-MBLNR
                                       LFBJA = T_MSEG-MJAHR
                                       LFPOS = T_MSEG-ZEILE
                                       BWART = 132.
            IF SY-SUBRC = 0.
              T_MSEG-MARK = 'X'.
              MODIFY T_MSEG.
              CONTINUE.
            ENDIF.
          ELSEIF T_MSEG-BWART = 501.
            READ TABLE T_MSEG WITH KEY LFBNR = T_MSEG-MBLNR
                                       LFBJA = T_MSEG-MJAHR
                                       LFPOS = T_MSEG-ZEILE
                                       BWART = 502.
            IF SY-SUBRC = 0.
              T_MSEG-MARK = 'X'.
              MODIFY T_MSEG.
              CONTINUE.
            ENDIF.
          ELSEIF T_MSEG-BWART = 301.
            READ TABLE T_MSEG WITH KEY LFBNR = T_MSEG-MBLNR
                                       LFBJA = T_MSEG-MJAHR
                                       LFPOS = T_MSEG-ZEILE
                                       BWART = 302.
            IF SY-SUBRC = 0.
              T_MSEG-MARK = 'X'.
              MODIFY T_MSEG.
              CONTINUE.
            ENDIF.
          ELSEIF T_MSEG-BWART = 531.
            READ TABLE T_MSEG WITH KEY LFBNR = T_MSEG-MBLNR
                                       LFBJA = T_MSEG-MJAHR
                                       LFPOS = T_MSEG-ZEILE
                                       BWART = 532.
            IF SY-SUBRC = 0.
              T_MSEG-MARK = 'X'.
              MODIFY T_MSEG.
              CONTINUE.
            ENDIF.
          ELSEIF T_MSEG-BWART = 561.
            READ TABLE T_MSEG WITH KEY LFBNR = T_MSEG-MBLNR
                                       LFBJA = T_MSEG-MJAHR
                                       LFPOS = T_MSEG-ZEILE
                                       BWART = 562.
            IF SY-SUBRC = 0.
              T_MSEG-MARK = 'X'.
              MODIFY T_MSEG.
              CONTINUE.
            ENDIF.
          ELSEIF T_MSEG-BWART = 701.
            READ TABLE T_MSEG WITH KEY LFBNR = T_MSEG-MBLNR
                                       LFBJA = T_MSEG-MJAHR
                                       LFPOS = T_MSEG-ZEILE
                                       BWART = 702.
            IF SY-SUBRC = 0.
              T_MSEG-MARK = 'X'.
              MODIFY T_MSEG.
              CONTINUE.
            ENDIF.
          ELSEIF T_MSEG-BWART = 309.
            READ TABLE T_MSEG WITH KEY LFBNR = T_MSEG-MBLNR
                                       LFBJA = T_MSEG-MJAHR
                                       LFPOS = T_MSEG-ZEILE
                                       BWART = 310.
            IF SY-SUBRC = 0.
              T_MSEG-MARK = 'X'.
              MODIFY T_MSEG.
              CONTINUE.
            ELSEIF T_MSEG-XAUTO = ' '.
              T_MSEG-MARK = 'X'.
              MODIFY T_MSEG.
              CONTINUE.
            ELSEIF T_MSEG-MATNR EQ T_MSEG-UMMAT.
              T_MSEG-MARK = 'X'.
              MODIFY T_MSEG.
              CONTINUE.
            ENDIF.
          ENDIF.
          SELECT SINGLE EBELN INTO EKPO-EBELN FROM EKPO
                             WHERE EBELN = T_MSEG-EBELN
                               AND EBELP = T_MSEG-EBELP
                               AND KNTTP = 'K'.
          IF SY-SUBRC = 0.
            T_MSEG-MARK = 'X'.
            MODIFY T_MSEG.
            CONTINUE.
          ENDIF.
         TMENGE = TMENGE - t_mseg-MENGE.
        ENDLOOP.
      ENDLOOP.
      DELETE T_MSEG WHERE MARK = 'X'.
      DELETE T_MSEG WHERE ( BWART = '102' OR
                            BWART = '106' OR
                            BWART = '502' OR
                            BWART = '532' OR
                            BWART = '562' OR
                            BWART = '702' OR
                            BWART = '310' OR
                            BWART = '302' OR
                            BWART = '123' OR
                            BWART = '122' OR
                            BWART = '132' ).
      SORT T_HEADER BY MATNR BWKEY.
      DELETE ADJACENT DUPLICATES FROM T_HEADER COMPARING MATNR BWKEY.
      T_CUR_STOCK[] = T_MSEG[].
      SORT T_CUR_STOCK BY MATNR WERKS.
      LOOP AT T_CUR_STOCK.
        WA_MSEG = T_CUR_STOCK.
        AT END OF WERKS.
        ENDAT.
      ENDLOOP.
      LOOP AT T_HEADER.
        CLEAR L_LBKUM.
        L_LBKUM = T_HEADER-LBKUM.
        REFRESH T_ITEMS.
        CLEAR T_ITEMS.
        LOOP AT T_MSEG WHERE MATNR EQ T_HEADER-MATNR
                         AND WERKS EQ T_HEADER-BWKEY.
          T_ITEMS = T_MSEG.
          APPEND T_ITEMS.
          CLEAR T_ITEMS.
        ENDLOOP.
        SORT T_ITEMS BY BUDAT DESCENDING
                        MBLNR DESCENDING.
        CLEAR L_LBKUM.
        LOOP AT T_ITEMS.
          L_LBKUM = T_ITEMS-MENGE - T_HEADER-LBKUM.
          IF L_LBKUM GE 0.
            T_OUTPUT-MATNR = T_HEADER-MATNR.
            T_OUTPUT-WERKS = T_HEADER-BWKEY.
            T_OUTPUT-BUDAT = T_ITEMS-BUDAT.
            T_OUTPUT-MENGE = T_HEADER-LBKUM.
            APPEND T_OUTPUT.
            CLEAR T_OUTPUT.
            EXIT.
          ELSE.
            T_HEADER-LBKUM = T_HEADER-LBKUM - T_ITEMS-MENGE.
            T_OUTPUT-MATNR = T_HEADER-MATNR.
            T_OUTPUT-WERKS = T_HEADER-BWKEY.
            T_OUTPUT-BUDAT = T_ITEMS-BUDAT.
            T_OUTPUT-MENGE = T_ITEMS-MENGE.
            APPEND T_OUTPUT.
            CLEAR T_OUTPUT.
            CONTINUE.
          ENDIF.
        ENDLOOP.
      ENDLOOP.
    ENDFORM.                    " get_dead_stock
    *&      Form  DISPLAY_OUTPUT
          text
    FORM DISPLAY_OUTPUT .
      DATA: L_DAYS TYPE I.
      DATA : WA_OUTPUT LIKE T_OUTPUT.
      DATA : T_FINAL LIKE T_OUTPUT OCCURS 0 WITH HEADER LINE.
      DATA : WA_FINAL LIKE T_OUTPUT.
      DATA : L_CQTY TYPE MSEG-MENGE,
             L_CPRC TYPE MBEW-SALK3.
      DATA : L_TITLE TYPE LVC_TITLE.
      DATA : L_NAME1 TYPE T001W-NAME1.
    *C-- Not to output when the quantity is zero.
      DELETE T_OUTPUT WHERE MENGE EQ 0.
      SORT T_OUTPUT BY WERKS MATNR BUDAT.
      LOOP AT T_OUTPUT.
        T_FINAL = T_OUTPUT.
        AT NEW MATNR.
          CLEAR T_HEADER.
          READ TABLE T_HEADER WITH KEY MATNR = T_OUTPUT-MATNR
                                       BWKEY = T_OUTPUT-WERKS.
        ENDAT.
        T_FINAL-MAKTX = T_HEADER-MAKTX.
        IF T_HEADER-LBKUM GT 0.
          T_FINAL-PVAL = ( T_OUTPUT-MENGE * T_HEADER-SALK3 / T_HEADER-LBKUM ).
        ELSE.
          CLEAR T_FINAL-PVAL.
        ENDIF.
        L_CQTY = L_CQTY + T_OUTPUT-MENGE.
        IF T_HEADER-LBKUM GT 0.
          L_CPRC = L_CPRC + ( T_OUTPUT-MENGE * T_HEADER-SALK3 / T_HEADER-LBKUM ).
        ENDIF.
        CALL FUNCTION 'HR_SGPBS_YRS_MTHS_DAYS'
          EXPORTING
            BEG_DA        = T_OUTPUT-BUDAT
            END_DA        = P_DATE
          IMPORTING
            NO_CAL_DAY    = L_DAYS
          EXCEPTIONS
            DATEINT_ERROR = 1
            OTHERS        = 2.
        IF SY-SUBRC <> 0.
          WRITE : 70 'Error While Calculating days'(018) .
        ELSE.
          T_FINAL-PDAYS = L_DAYS.
        ENDIF.
        T_FINAL-CQTY = L_CQTY.
        T_FINAL-CPRC = L_CPRC.
        APPEND T_FINAL.
        AT END OF MATNR.
          CLEAR : L_CPRC, L_CQTY.
        ENDAT.
      ENDLOOP.
      PERFORM BUILD_FIELD_CATALOG.
      WA_SORT-FIELDNAME = 'MATNR'.
      WA_SORT-SPOS = '1'.
      APPEND WA_SORT TO T_SORT.
      SELECT SINGLE NAME1 FROM T001W INTO L_NAME1
      WHERE WERKS = P_WERKS.
      CONCATENATE 'Plant: ' P_WERKS ',' L_NAME1 INTO L_TITLE.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          I_CALLBACK_PROGRAM = SY-CPROG
          I_GRID_TITLE       = L_TITLE
          IT_FIELDCAT        = GRID_TAB[]
          IT_SORT            = T_SORT
          I_SAVE             = 'A'
        TABLES
          T_OUTTAB           = T_FINAL[].
    SORT T_FINAL BY WERKS MATNR BUDAT.
    LOOP AT T_FINAL.
       WRITE : /10 T_FINAL-MATNR.
       WRITE : 30 T_FINAL-WERKS.
       WRITE : 40 T_FINAL-BUDAT.
       WRITE : 50 T_FINAL-MENGE.
    **C-- FM to find the number of days between
    **C-- todays date and the posting date
       CALL FUNCTION 'HR_SGPBS_YRS_MTHS_DAYS'
         EXPORTING
           BEG_DA        = T_FINAL-BUDAT
           END_DA        = P_DATE
         IMPORTING
           NO_CAL_DAY    = L_DAYS
         EXCEPTIONS
           DATEINT_ERROR = 1
           OTHERS        = 2.
       IF SY-SUBRC <> 0.
         WRITE : 70 'Error While Calculating days'(018) .
       ELSE.
         WRITE : 70 L_DAYS.
       ENDIF.
       AT END OF MATNR.
         ULINE.
         READ TABLE T_HEADER WITH KEY MATNR = T_FINAL-MATNR
                                      BWKEY = T_FINAL-WERKS.
         IF SY-SUBRC EQ 0.
           WRITE : /1 'Total Valuated Stock', T_HEADER-LBKUM.
           WRITE : /1 'Value of total valuated Stock', T_HEADER-SALK3.
           ULINE.
         ENDIF.
       ENDAT.
    ENDLOOP.
    ENDFORM.                    " DISPLAY_OUTPUT
    *&      Form  BUILD_FIELD_CATALOG
          text
    -->  p1        text
    <--  p2        text
    FORM BUILD_FIELD_CATALOG .
      DATA : CNT1 TYPE I.
      CNT1 = CNT1 + 1.
      GRID_TAB-COL_POS = CNT1.
      GRID_TAB-SELTEXT_L = 'Material'.
      GRID_TAB-FIELDNAME = 'MATNR'.
      GRID_TAB-KEY = 'X'.
      GRID_TAB-NO_ZERO = 'X'.
      GRID_TAB-TABNAME = 'T_FINAL'.
      APPEND GRID_TAB.
      CLEAR GRID_TAB.
      CNT1 = CNT1 + 1.
      GRID_TAB-COL_POS = CNT1.
      GRID_TAB-SELTEXT_L = 'Material Description'.
      GRID_TAB-FIELDNAME = 'MAKTX'.
      GRID_TAB-OUTPUTLEN = '30'.
    GRID_TAB-KEY = 'X'.
    GRID_TAB-NO_ZERO = 'X'.
      GRID_TAB-TABNAME = 'T_FINAL'.
      APPEND GRID_TAB.
      CLEAR GRID_TAB.
      CNT1 = CNT1 + 1.
      GRID_TAB-COL_POS = CNT1.
      GRID_TAB-SELTEXT_L = 'Date of Reciept'.
      GRID_TAB-FIELDNAME = 'BUDAT'.
    GRID_TAB-KEY = 'X'.
    GRID_TAB-NO_ZERO = 'X'.
      GRID_TAB-TABNAME = 'T_FINAL'.
      APPEND GRID_TAB.
      CLEAR GRID_TAB.
      CNT1 = CNT1 + 1.
      GRID_TAB-COL_POS = CNT1.
      GRID_TAB-SELTEXT_L = 'Quantity'.
      GRID_TAB-FIELDNAME = 'MENGE'.
    GRID_TAB-KEY = 'X'.
    GRID_TAB-NO_ZERO = 'X'.
      GRID_TAB-TABNAME = 'T_FINAL'.
      APPEND GRID_TAB.
      CLEAR GRID_TAB.
      CNT1 = CNT1 + 1.
      GRID_TAB-COL_POS = CNT1.
      GRID_TAB-SELTEXT_L = 'Pending Days'.
      GRID_TAB-FIELDNAME = 'PDAYS'.
    GRID_TAB-KEY = 'X'.
    GRID_TAB-NO_ZERO = 'X'.
      GRID_TAB-TABNAME = 'T_FINAL'.
      APPEND GRID_TAB.
      CLEAR GRID_TAB.
      CNT1 = CNT1 + 1.
      GRID_TAB-COL_POS = CNT1.
      GRID_TAB-SELTEXT_L = 'Value'.
      GRID_TAB-FIELDNAME = 'PVAL'.
    GRID_TAB-KEY = 'X'.
    GRID_TAB-NO_ZERO = 'X'.
      GRID_TAB-TABNAME = 'T_FINAL'.
      APPEND GRID_TAB.
      CLEAR GRID_TAB.
      CNT1 = CNT1 + 1.
      GRID_TAB-COL_POS = CNT1.
      GRID_TAB-SELTEXT_L = 'Cumulative Quantity'.
      GRID_TAB-FIELDNAME = 'CQTY'.
    GRID_TAB-KEY = 'X'.
    GRID_TAB-NO_ZERO = 'X'.
      GRID_TAB-TABNAME = 'T_FINAL'.
      APPEND GRID_TAB.
      CLEAR GRID_TAB.
      CNT1 = CNT1 + 1.
      GRID_TAB-COL_POS = CNT1.
      GRID_TAB-SELTEXT_L = 'Value of Cumulative Quantity'.
      GRID_TAB-OUTPUTLEN = '30'.
      GRID_TAB-FIELDNAME = 'CPRC'.
    GRID_TAB-KEY = 'X'.
    GRID_TAB-NO_ZERO = 'X'.
      GRID_TAB-TABNAME = 'T_FINAL'.
      APPEND GRID_TAB.
    ENDFORM.                    " BUILD_FIELD_CATALOG

  • Delivery QTY is more than Stock qty in Stock transfer order

    Dear Sir
    i created one STO with Qty 100,i got the stock of 10 in my hand when i create delivery with ref to STO through VL10B, delivery created for whole STO qty
    is there is any specific setting to control this
    my requirement is like delivery qty should not be exceed the available stock qty.
    please help in this.
    Thanks
    Maruthi S

    Hi Maruthi,
    I don't think so it would be possible as because you can control this check in your availability check by assinging the Document type and Supplying Plant to a checking rule.
    But  unfortunately the check will  you a different date ( when the stock is starved ) rather than controlling the quantity of delivery to be made as per the available stock.
    The Underdelivery setting is only to close a STO in case if the supplying plant supplies less quantity when compared to the delivery quantity.
    But tell me why  you want to restrict the qty of delivery, instead you can keep the Delivery document quantity as per the Stock transport order and doing PGI as per the available stock and closing the STO with the under delivery setting.
    T&R

  • Stock on a particulare date

    Hi,
    i am developing a STOCk-in-transit report, wherein , i need to display stock on a date entered by the user on selection screen. The stock includes all stock type (unrestricted, quality and blocked stock). How do we calculate the stock on a particular date?

    check out the logic in this program if it helps...
    TABLES : MARA,MAKT,MARD,t001w,stpo,stas.
    data : begin of t_mara occurs 0,
           matnr like mara-matnr,
           end of t_mara.
    data : begin of t_mard occurs 0,
           matnr like mara-matnr,
           werks like mard-werks,
           labst like mard-labst,
           insme like mard-insme,
           speme like mard-speme,
           end of t_mard.
    data : l_stk1 like mard-labst,
           l_stk2 like mard-insme,
           l_stk3 like mard-speme.
    ----   BOM -
    DATA : BEGIN OF it_mast OCCURS 0,
            matnr LIKE mast-matnr,
            werks LIKE mast-werks,
            stlan LIKE mast-stlan,
            stlnr LIKE mast-stlnr,
            stlal LIKE mast-stlal,
           END OF it_mast.
    DATA : BEGIN OF wa_mast OCCURS 0,
           matnr LIKE mast-matnr,
           werks LIKE mast-werks,
           stlan LIKE mast-stlan,
           stlnr LIKE mast-stlnr,
           stlal LIKE mast-stlal,
          END OF wa_mast.
    DATA : BEGIN OF it_mast1 OCCURS 0,
            matnr LIKE mast-matnr,
            werks LIKE mast-werks,
            stlan LIKE mast-stlan,
            stlnr LIKE mast-stlnr,
            stlal LIKE mast-stlal,
           END OF it_mast1.
    DATA : BEGIN OF it_stas OCCURS 0,
            stlty LIKE stas-stlty,
            stlnr LIKE stas-stlnr,
            stlal LIKE stas-stlal,
            stlkn LIKE stas-stlkn,
            stasz LIKE stas-stasz,
            datuv LIKE stas-datuv,
            stvkn LIKE stas-stvkn,
           END OF it_stas.
    DATA : BEGIN OF it_stpo OCCURS 0,
            stlty LIKE stpo-stlty,
            stlnr LIKE stpo-stlnr,
            stlkn LIKE stpo-stlkn,
            stpoz LIKE stpo-stpoz,
            idnrk LIKE stpo-idnrk,
            meins LIKE stpo-meins,
            menge LIKE stpo-menge,
           END OF it_stpo.
    DATA : BEGIN OF t_stpo OCCURS 0,
            stlty LIKE stpo-stlty,
            stlnr LIKE stpo-stlnr,
            stlkn LIKE stpo-stlkn,
            stpoz LIKE stpo-stpoz,
            idnrk LIKE stpo-idnrk,
            meins LIKE stpo-meins,
            menge LIKE stpo-menge,
           END OF t_stpo.
    DATA : BEGIN OF wa_stpo1 OCCURS 0,
            stlty LIKE stpo-stlty,
            stlnr LIKE stpo-stlnr,
            stlkn LIKE stpo-stlkn,
            stpoz LIKE stpo-stpoz,
            idnrk LIKE stpo-idnrk,
            meins LIKE stpo-meins,
            menge LIKE stpo-menge,
           END OF wa_stpo1.
    data: begin of it_final occurs 0,
          stlnr like stpo-stlnr,
          matnr like mast-matnr,
          menge like stpo-menge,
    end of it_final.
    data: begin of it_final1 occurs 0,
          stlnr like stpo-stlnr,
          matnr like mast-matnr,
          menge like stpo-menge,
    end of it_final1.
    data mult_par type c.
    -- END OF BOM--
    data: WA_TOTSTK like mard-speme.
    data G_Matno like mara-matnr.
    data bom_req_qty like mard-speme.
    data WA_AVLSTUS like mard-speme.
    select-options: S_Matno FOR mara-matnr.
    parameterS     : P_plant like t001w-werks,
                     P_BOM like mara-matnr.
    perform validation.
    perform Inputdata.
    perform Calcdata.
    form validation.
    if S_Matno is initial.
    message e001 with text-001.
    ENDIF.
    if P_plant is initial.
    message e001 with text-002.
    endif.
    if P_BOM is initial.
    message e001 with text-003.
    endif.
    select matnr from mara INTO table t_mara
                      where matnr in S_Matno.
    if sy-subrc <> 0.
    message e001 with text-004.
    endif.
    select single * from t001w where werks = P_plant.
    if sy-subrc <> 0.
    message e001 with text-005.
    endif.
    select single * from mara where matnr = P_BOM.
    if sy-subrc <> 0.
    message e001 with text-004.
    endif.
    endform.
    form Inputdata.
    select matnr from mara into table t_mara
                    where matnr in S_Matno.
    if sy-subrc = 0.
    select matnr werks labst insme speme from
                          mard into table t_mard
                          for all entries in t_mara
                          where matnr = t_mara-matnr and
                                werks = P_plant.
    endif.
    endform.
    form Calcdata.
    loop at t_mara.
    select single * from makt where matnr = t_mara-matnr.
    if sy-subrc = 0.
    G_Matno = t_mara-matnr.
    *WRITE:/ SY-ULINE(164).
    WRITE:1 sy-vline.
    write:2 t_mara-matnr.
    write:19 sy-vline.
    write:20 makt-maktx.
    write:56 sy-vline.
    endif.
    loop at t_mard.
    if t_mard-matnr = t_mara-matnr.
    l_stk1 = l_stk1 + t_mard-labst.
    l_stk2 = l_stk2 + t_mard-insme.
    l_stk3 = l_stk3 + t_mard-speme.
    endif.
    endloop.
    write:57 l_stk1.
    write:74 sy-vline.
    write:75 l_stk2.
    write:92 sy-vline.
    write:93 l_stk3.
    write:110 sy-vline.
    WA_TOTSTK = l_stk1 + l_stk2 + l_stk3.
    write:111 WA_TOTSTK.
    WRITE:128 SY-VLINE.
    perform BOMDATA.
    write:129 bom_req_qty.
    write:146 sy-vline.
    if bom_req_qty >= 1.
    WA_AVLSTUS = ( ( 1 / bom_req_qty ) * WA_TOTSTK ).
    else.
    WA_AVLSTUS = '0.00'.
    ENDIF.
    write:147 WA_AVLSTUS.
    write:164 sy-vline.
    write:sy-uline(164).
    clear l_stk1.
    clear l_stk2.
    clear l_stk3.
    clear bom_req_qty.
    clear WA_TOTSTK.
    endloop.
    endform.
    FORM BOMDATA.
    select matnr werks stlan stlnr stlal from mast into
                                    table it_mast
                             where matnr = P_BOM and stlal = '01' and stlan = '1'
                                   and werks = P_plant.
    if sy-subrc = 0.
      select stlty stlnr stlal stlkn stasz datuv stvkn from stas
                                   into table it_stas
                                 for all entries in it_mast
                                 where stlnr = it_mast-stlnr and
                                       stlal = it_mast-stlal and
                                       stlty = 'M'.
      if sy-subrc = 0.
        SELECT stlty stlnr stlkn stpoz idnrk meins menge from stpo into table it_stpo
                                  for all entries in it_stas
                                  where stlty = 'M' and
                                        stlnr = it_stas-stlnr and
                                        stlkn = it_stas-stlkn.
    endif.
    endif.
    perform get_data.
    perform process_data.
    perform display_data.
    ENDFORM.
    form process_data.
      if mult_par = 'Y'.
        refresh it_stpo.
        loop at wa_mast.
          select matnr werks stlan stlnr stlal from mast into table it_mast
                                      where matnr = wa_mast-matnr
                                      and stlal = '01' and stlan = '1'.
          if sy-subrc = 0.
            loop at it_mast.
              SELECT stlty stlnr stlkn stpoz idnrk meins menge from stpo into table wa_stpo1
                                               where stlnr = it_mast-stlnr.
              if sy-subrc = 0.
              clear wa_stpo1.
                loop at wa_stpo1.
                  read table t_stpo with key idnrk = wa_mast-matnr.
                  if t_stpo-menge > 1.
                  it_stpo-stlty = wa_stpo1-stlty.
                  it_stpo-stlnr = wa_stpo1-stlnr.
                  it_stpo-stlkn = wa_stpo1-stlkn.
                  it_stpo-idnrk = wa_stpo1-idnrk.
                  it_stpo-meins = wa_stpo1-meins.
                  it_stpo-menge = wa_stpo1-menge * 2.
                  else.
                  move-corresponding wa_stpo1 to it_stpo.
                  endif.
                  append it_stpo.
                  clear wa_stpo1.
                  clear it_stpo.
                endloop.
                refresh wa_stpo1.
                clear wa_mast.
              endif.
            endloop.
          endif.
        endloop.
        refresh wa_mast.
        perform get_data.
      ELSE.
        perform display_data.
      endif.
    endform.                    "process_data
    form get_data.
      loop at it_stpo.
        select matnr werks stlan stlnr stlal from mast into
                                      table it_mast
                               where matnr = it_stpo-idnrk
                                     and stlal = '01' and stlan = '1'.
        if not it_mast[] is initial.
          loop at it_mast.
            move-corresponding it_mast to wa_mast.
            append wa_mast.
            move-corresponding it_stpo to t_stpo.
            append t_stpo.
          endloop.
          clear t_stpo.
        else.
          it_final-stlnr = it_stpo-stlnr.
          it_final-matnr = it_stpo-idnrk.
          it_final-menge = it_stpo-menge.
          append it_final.
        endif.
      endloop.
      if not wa_mast[] is initial.
        mult_par = 'Y'.
        clear it_stpo.
      else.
        mult_par = ''.
      endif.
      loop at it_final.
        move-corresponding it_final to it_final1.
        append it_final1.
      endloop.
      refresh it_final.
      refresh it_mast.
      perform process_data.
    endform.                    "get_data
    form display_data.
      sort it_final1 by matnr.
      loop at it_final1.
        if it_final1-matnr = G_Matno.
          bom_req_qty = bom_req_qty + it_final1-menge.
        endif.
      endloop.
      refresh it_stpo.
      refresh it_mast.
      clear it_final1.
      REFRESH it_final1.
    endform.                    "display_data
    TOP-OF-PAGE.
    WRITE:/ SY-ULINE(164).
    WRITE:/1 SY-VLINE,
           2 'Part Number',
           19 sy-vline,
           20 'Description',
           56 sy-vline,
           57 'Unrestricted Qty',
           74 sy-vline,
           75 'Quality Qty',
           92 sy-vline,
           93 'Blocked Qty',
           110 sy-vline,
           111 'Tot. Avl. Stk',
           128 sy-vline,
           129 '   Q/E   ',
           146 SY-VLINE,
           147 'Avl Status',
           164 sy-vline.
    WRITE:SY-ULINE(164).
    Regards,
    Bikash

  • Stock upload - Goods receipt date, FIFO

    We are doing our initial stock upload using LSMW based on goods movements.
    When posting a goods movement the posting date will be used for FIFO considerations.
    That's fine when your system is operative, but during the initial stock upload the posting date will be the same for all movements, which is not what we want.
    Is there a way to transfer a GR date from the legacy system?
    (Opening the posting periods to any date in the past is not an option).
    Any ideas?
    Thanks
    Andreas

    If you had a GR on May 2nd of 1000 and another GR on Oct. 1st for 500  and your currect stock is 800, then you just know that the last GR date was Oct. 1st. But this is not the truth for all stock on hand. So FIFO cannot work. So the field has just information caracter.
    SAP will capture such info at batch level. Different software, different concepts. so each batch can have its own last GR date, and you distinguish the stock by batches, and can use batch search strategy to find the oldest one.
    Without batch managment, SAP has this information about last goods receipt at quant level in warehouse managment.  Do you use WM module?
    (even then I have no standard solution to manipulate this field while doing the stock load)

  • Goods issue in past date

    Hello,
    I notice that i can issue more than the available quantity of a material in past date. The material i issued had 15 PCS at 5/6/2010 and 30 PCS at 11/6/2010. I issued 18 PCS with posting date 6/6/2010. Then i issued the rest but i couldn't issue more than 30 PCS.
    Is this standard SAP functionality or it can be customized  ?
    Thanks in advance.

    Hi,
    Go to MB5B stock on date and check for the available stock on that particular date & same stock you can issue in back date which is restricated to only one month as SAP standard in MM and if you ahve set allow in back date tick then only it will allow.
    If you wish to issue more then the available stock then you ahve to set negative stock tick in configuration which will allow to issue more then the availabe stock.

Maybe you are looking for