Opening Stock and Closing Stock

Hi,
  I have one requirement to get a opening stock and closing stock of all materials,  based on the plant date and mat type.
Could u tell me the flow of tables one by one
Its is possible to get the opening stock and closing stock of all materials.
Please Guide Me.
Thanks & Regards,
    Dhanush.S.T

go through this....
*& Report  Z_OPEN_CLOSE                                                *
REPORT  Z_OPEN_CLOSE MESSAGE-ID YW2 LINE-SIZE 231 LINE-COUNT 45
NO STANDARD PAGE HEADING.
Type Declaration *
TYPE-POOLS SLIS.
Tables *
TABLES: MKPF, " Material Document: Header Data
        MSEG, " Material Document: Item Data
        MARA,
        MARD,
        S031,
        EKKO,
        EKPO,
        LIKP,
        MAKT,
        J_1IWRKCUS,
        T001W,
        WB2_V_MKPF_MSEG2,
        MMIM_REP_PRINT,
        YW2_STKMOVEMENTS,
        YPLNT,
        MARDH.
Internal Tables *
DATA: I_WERKS LIKE J_1IWRKCUS OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF I_YPLNT OCCURS 0,
         PPLNT LIKE YPLNT-PPLNT,
         WPLNT LIKE YPLNT-WPLNT,
      END OF I_YPLNT.
DATA: BEGIN OF I_MKPF OCCURS 0,
        MBLNR LIKE MKPF-MBLNR,
        MJAHR LIKE MKPF-MJAHR,
        BUDAT LIKE MKPF-BUDAT,
        VGART LIKE MKPF-VGART,
        BWART LIKE MSEG-BWART,
        MATNR LIKE MSEG-MATNR,
        WERKS LIKE MSEG-WERKS,
        LGORT LIKE MSEG-LGORT,
        MENGE LIKE MSEG-MENGE,
        MEINS LIKE MSEG-MEINS,
        KUNNR LIKE MSEG-KUNNR,
        ZEILE LIKE MSEG-ZEILE,
        XAUTO LIKE MSEG-XAUTO,
        SHKZG LIKE MSEG-SHKZG,
        MATNR1 LIKE MSEG-MATNR,
      END OF I_MKPF.
DATA: BEGIN OF I_MARDH OCCURS 0,
       WERKS LIKE MARDH-WERKS,
       MEINS LIKE MARA-MEINS,
       MATNR LIKE MARDH-MATNR,
       LGORT LIKE MARDH-LGORT,
       LABST LIKE MARDH-LABST,
       LFGJA LIKE MARDH-LFGJA, "Added -MB
       LFMON LIKE MARDH-LFMON, "Added -MB
       PERIO(6),
       INSME LIKE MARDH-LABST,
       EINME LIKE MARDH-LABST,
       SPEME LIKE MARDH-LABST,
       RETME LIKE MARDH-LABST,
       O_STK LIKE MARDH-LABST, " Opening Stock
       C_STK LIKE MARDH-LABST, " Closing Stock
      END OF I_MARDH.
DATA: BEGIN OF I_MARD OCCURS 0,
       WERKS LIKE MARD-WERKS,
       MATNR LIKE MARD-MATNR,
       LGORT LIKE MARD-LGORT,
       LABST LIKE MARD-LABST,
       INSME LIKE MARD-LABST,
       MEINS LIKE MARA-MEINS,
       EINME LIKE MARD-LABST,
       SPEME LIKE MARD-LABST,
       RETME LIKE MARD-LABST,
      END OF I_MARD.
DATA: I_MARD1 LIKE I_MARD OCCURS 0 WITH HEADER LINE.
DATA: I_MARDH1 LIKE I_MARDH OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF I_MKPF1 OCCURS 0,
        MBLNR LIKE MKPF-MBLNR,
        WERKS LIKE MSEG-WERKS,
        MATNR LIKE MSEG-MATNR,
        BUDAT LIKE MKPF-BUDAT,
        BWART LIKE MSEG-BWART,
        MJAHR LIKE MKPF-MJAHR,
        VGART LIKE MKPF-VGART,
        LGORT LIKE MSEG-LGORT,
        MENGE LIKE MSEG-MENGE,
        MEINS LIKE MSEG-MEINS,
        XAUTO LIKE MSEG-XAUTO,
        SHKZG LIKE MSEG-SHKZG,
      END OF I_MKPF1.
DATA: BEGIN OF I_MKPF2 OCCURS 0,
       WERKS LIKE MSEG-WERKS,
       MATNR LIKE MSEG-MATNR,
       BUDAT LIKE MKPF-BUDAT,
       BWART LIKE MSEG-BWART,
       MJAHR LIKE MKPF-MJAHR,
       VGART LIKE MKPF-VGART,
       LGORT LIKE MSEG-LGORT,
       MENGE LIKE MSEG-MENGE,
       MEINS LIKE MSEG-MEINS,
       XAUTO LIKE MSEG-XAUTO,
     END OF I_MKPF2.
DATA: BEGIN OF I_FINAL5 OCCURS 0,
       WERKS LIKE MSEG-WERKS, " Plant
       MATNR LIKE MSEG-MATNR, " Material
       LGORT LIKE MSEG-LGORT, " Storage Location
       BUDAT LIKE MKPF-BUDAT, " Posting Date
       MTART LIKE MARA-MTART, " Material Type
       SPMON LIKE S031-SPMON, " Month
       MAKTX LIKE MAKT-MAKTX, " Description
meins(3), " UOM
        MEINS LIKE MSEG-MEINS,
        O_STK LIKE MARDH-LABST, " opening stock
        TRECEP LIKE MARDH-LABST, " total receipts
        PRODU LIKE MARDH-LABST, " Net Receipts - Production
        RECEP LIKE MARDH-LABST, " Net Receipts - Receipts
        SAL_RET LIKE MARDH-LABST, " Net Receipts - Sales Return
        TDISP LIKE MARDH-LABST, " total dispatches
        CUSTMR LIKE MARDH-LABST, " Net Dispatches - Customers
        OPLANT LIKE MARDH-LABST, " Net Dispatches - To Other Plant
        TLOSS LIKE MARDH-LABST, " Total Loss
        TRLOSS LIKE MARDH-LABST, " Transit Loss
        WHLOSS LIKE MARDH-LABST, " Warehouse Loss
        C_STK LIKE MARDH-LABST, " Closing Stock
        TRFSTK LIKE MARDH-LABST, "Transfer stock
        MENGE LIKE MSEG-MENGE,
        OTHADJ LIKE MARDH-LABST,
      END OF I_FINAL5.
DATA: BEGIN OF I_FINAL OCCURS 0,
        WERKS LIKE MSEG-WERKS, " Plant
        MATNR LIKE MSEG-MATNR, " Material
        BUDAT LIKE MKPF-BUDAT, " Posting Date
        MTART LIKE MARA-MTART, " Material Type
        SPMON LIKE S031-SPMON, " Month
        MAKTX LIKE MAKT-MAKTX, " Description
meins(3), " UOM
        MEINS LIKE MSEG-MEINS,
        O_STK LIKE MARDH-LABST, " opening stock
        TRECEP LIKE MARDH-LABST, " total receipts
        PRODU LIKE MARDH-LABST, " Net Receipts - Production
        RECEP LIKE MARDH-LABST, " Net Receipts - Receipts
        SAL_RET LIKE MARDH-LABST, " Net Receipts - Sales Return
        TDISP LIKE MARDH-LABST, " total dispatches
        CUSTMR LIKE MARDH-LABST, " Net Dispatches - Customers
        OPLANT LIKE MARDH-LABST, " Net Dispatches - To Other Plant
        TRFSTK LIKE MARDH-LABST, "Material Transfer stock
        TRLOSS LIKE MARDH-LABST, " Transit Loss
        WHLOSS LIKE MARDH-LABST, " Warehouse Loss
        TLOSS LIKE MARDH-LABST, " Total Loss
        C_STK LIKE MARDH-LABST, " Closing Stock
        OTHADJ LIKE MARDH-LABST,
       END OF I_FINAL.
DATA: I_FINAL1 LIKE I_FINAL OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF I_FINAL_TEMP OCCURS 0,
        WERKS LIKE MSEG-WERKS, " Plant
        MATNR LIKE MSEG-MATNR, " Material
        MTART LIKE MARA-MTART, " Material Type
        MAKTX LIKE MAKT-MAKTX, " Description
        MEINS LIKE MSEG-MEINS,
        O_STK LIKE MARDH-LABST, " opening stock
        TRECEP LIKE MARDH-LABST, " total receipts
        PRODU LIKE MARDH-LABST, " Net Receipts - Production
        RECEP LIKE MARDH-LABST, " Net Receipts - Receipts
        SAL_RET LIKE MARDH-LABST, " Net Receipts - Sales Return
        TDISP LIKE MARDH-LABST, " total dispatches
        CUSTMR LIKE MARDH-LABST, " Net Dispatches - Customers
        OPLANT LIKE MARDH-LABST, " Net Dispatches - To Other Plant
        TRFSTK LIKE MARDH-LABST, "Material Transfer stock
        TRLOSS LIKE MARDH-LABST, " Transit Loss
        WHLOSS LIKE MARDH-LABST, " Warehouse Loss
        TLOSS LIKE MARDH-LABST, " Total Loss
        C_STK LIKE MARDH-LABST, " Closing Stock
        OTHADJ LIKE MARDH-LABST,
      END OF I_FINAL_TEMP.
For Materials
DATA: BEGIN OF I_MARA OCCURS 0,
       MATNR TYPE MARA-MATNR,
       MTART TYPE MARA-MTART,
       MEINS LIKE MARA-MEINS,
       LABST TYPE MARD-LABST,
       MAKTX LIKE MAKT-MAKTX,
      END OF I_MARA.
DATA: BEGIN OF I_STKMVMNTS OCCURS 0,
       BWART LIKE MSEG-BWART,
       SHKZG LIKE MSEG-SHKZG,
       VZBEW LIKE YW2_STKMOVEMENTS-VZBEW,
      END OF I_STKMVMNTS.
DATA: BEGIN OF I_FINALT OCCURS 0,
       WERKS LIKE MSEG-WERKS, " Plant
       MATNR LIKE MSEG-MATNR, " Material
       BUDAT LIKE MKPF-BUDAT, " Posting Date
       MTART LIKE MARA-MTART, " Material Type
       SPMON LIKE S031-SPMON, " Month
       MAKTX LIKE MAKT-MAKTX, " Description
meins(3), " UOM
       MEINS LIKE MSEG-MEINS,
       O_STK LIKE MARDH-LABST, " opening stock
       TRECEP LIKE MARDH-LABST, " total receipts
       PRODU LIKE MARDH-LABST, " Net Receipts - Production
       RECEP LIKE MARDH-LABST, " Net Receipts - Receipts
       SAL_RET LIKE MARDH-LABST, " Net Receipts - Sales Return
       TDISP LIKE MARDH-LABST, " total dispatches
       CUSTMR LIKE MARDH-LABST, " Net Dispatches - Customers
       OPLANT LIKE MARDH-LABST, " Net Dispatches - To Other Plant
       TRFSTK LIKE MARDH-LABST, "Material Transfer stock
       TRLOSS LIKE MARDH-LABST, " Transit Loss
       WHLOSS LIKE MARDH-LABST, " Warehouse Loss
       TLOSS LIKE MARDH-LABST, " Total Loss
       C_STK LIKE MARDH-LABST, " Closing Stock
       OTHADJ LIKE MARDH-LABST,
       MONTH(8) ,
      END OF I_FINALT.
DATA: IMKPFT LIKE I_MKPF OCCURS 0 WITH HEADER LINE.
DATA: IMKPFT1 LIKE I_MKPF1 OCCURS 0 WITH HEADER LINE.
DATA: IMARDT LIKE I_MARD OCCURS 0 WITH HEADER LINE.
DATA: IMARDHT LIKE I_MARDH OCCURS 0 WITH HEADER LINE.
DATA: T_FINAL LIKE I_MKPF OCCURS 0 WITH HEADER LINE.
DATA: IMKPFT2 LIKE I_MKPF OCCURS 0 WITH HEADER LINE.
FCAT is used for the field catalog
DATA: FCAT TYPE TABLE OF SLIS_FIELDCAT_ALV WITH NON-UNIQUE DEFAULT KEY
                  WITH HEADER LINE INITIAL SIZE 0,
for excluding the ICONs from the application toolbar
      FEXC TYPE TABLE OF SLIS_EXTAB WITH NON-UNIQUE DEFAULT KEY
                 WITH HEADER LINE INITIAL SIZE 0,
FS_LAYO is used for Grid Layout
      FS_LAYO TYPE SLIS_LAYOUT_ALV,
FEVENTS to handle the events TOP OF PAGE & USER_COMMAND
      FEVENTS TYPE TABLE OF SLIS_ALV_EVENT WITH NON-UNIQUE DEFAULT KEY
                 WITH HEADER LINE INITIAL SIZE 0,
FHEADER is used for List header
      FHEADER TYPE TABLE OF SLIS_LISTHEADER WITH NON-UNIQUE DEFAULT KEY
                 WITH HEADER LINE INITIAL SIZE 0,
sort is used for sorting
      FSORT TYPE TABLE OF SLIS_SORTINFO_ALV WITH NON-UNIQUE DEFAULT KEY
                 WITH HEADER LINE INITIAL SIZE 0,
      FCAT1 TYPE TABLE OF SLIS_FIELDCAT_ALV WITH NON-UNIQUE DEFAULT KEY
                WITH HEADER LINE INITIAL SIZE 0,
      FS_LAYO1 TYPE SLIS_LAYOUT_ALV,
      GT_LIST_TOP_OF_PAGE1 TYPE SLIS_T_LISTHEADER,
      FEVENTS1 TYPE TABLE OF SLIS_ALV_EVENT WITH NON-UNIQUE DEFAULT KEY
             WITH HEADER LINE INITIAL SIZE 0,
       FHEADER1 TYPE TABLE OF SLIS_LISTHEADER WITH NON-UNIQUE DEFAULT  
              KEY WITH HEADER LINE INITIAL SIZE 0,
       G_STATU_071 TYPE SLIS_FORMNAME VALUE 'Z_PFSTATUS',
       ALV_VARIANT1 LIKE DISVARIANT.
Variable Declaration *
TYPES: TRFF_TYPE_DEC_6_5(6) TYPE P DECIMALS 5.
DATA: FYEAR(4),
      MON(2),
      FYEAR1(4),
      MON1(2),
      OBAL LIKE MARD-LABST,
      CBAL LIKE MARD-LABST,
      INDEX TYPE I,
      COUNT,
      COUNT1 TYPE I,
      O_STK TYPE P DECIMALS 3,
      C_STK TYPE P DECIMALS 3,
      V_MJAHR LIKE MKPF-MJAHR,
      MONTHS TYPE TRFF_TYPE_DEC_6_5,
      MONTH TYPE I.
Global variables for handling ALV functionality
DATA: ALV_KEYINFO TYPE SLIS_KEYINFO_ALV,
      ALV_VARIANT LIKE DISVARIANT,
      ALV_LAYOUT TYPE SLIS_LAYOUT_ALV,
      ALV_REPID LIKE SY-REPID,
      ALV_PRINT TYPE SLIS_PRINT_ALV,
      ALV_DETAIL_FUNC(30),
      ALV_DEFAULT_VARIANT LIKE DISVARIANT-VARIANT,
      ALV_COLOURIZE_FIELDS LIKE MMIM_REP_PRINT-COLOR.
RANGES: R_BUDAT FOR MKPF-BUDAT.
*Added by Prabhu for year on 26.4.05.
DATA: IDATE LIKE R_BUDAT OCCURS 0 WITH HEADER LINE.
Selection Screen Elements *
SELECTION-SCREEN BEGIN OF BLOCK BLK WITH FRAME TITLE TEXT-001.
  SELECT-OPTIONS: S_WERKS FOR MARD-WERKS OBLIGATORY NO INTERVALS.
  PARAMETER: P_SPMON LIKE S031-SPMON NO-DISPLAY .
  SELECT-OPTIONS: S_MATNR FOR MARA-MATNR OBLIGATORY,
                  S_LGORT FOR MSEG-LGORT NO-EXTENSION NO INTERVALS,
                  S_MBLNR FOR MKPF-MBLNR,
                  S_BUDAT FOR MKPF-BUDAT OBLIGATORY .
SELECTION-SCREEN END OF BLOCK BLK.
SELECTION-SCREEN BEGIN OF BLOCK BLK3 WITH FRAME TITLE TEXT-004.
      PARAMETER : MTART LIKE MARA-MTART DEFAULT 'FERT' NO-DISPLAY.
SELECTION-SCREEN END OF BLOCK BLK3.
SELECTION-SCREEN BEGIN OF BLOCK BLK2 WITH FRAME TITLE TEXT-003.
SELECTION-SCREEN END OF BLOCK BLK2.
ADDED BY PRABHU FOR DAY-WISE REPORT.
SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-007.
  PARAMETERS: D1 RADIOBUTTON GROUP P1 DEFAULT 'X',
              M1 RADIOBUTTON GROUP P1,
              Y1 RADIOBUTTON GROUP P1.
SELECTION-SCREEN END OF BLOCK B3.
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-006.
PARAMETERS: ALV_DEF LIKE DISVARIANT-VARIANT.
SELECTION-SCREEN END OF BLOCK B2.
DATA: S_BUDAT1 LIKE S_BUDAT OCCURS 0 WITH HEADER LINE."prabhu
Initialization *
INITIALIZATION.
  PERFORM ALV_INIT.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR ALV_DEF.
  PERFORM ALV_F4.
At Selection Screen
*AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_spmon.
PERFORM monat_f4.
At Selection Screen *
AT SELECTION-SCREEN.
checking for the layout
  PERFORM ALV_CHECK.
authorisation check for the Plant
PERFORM auth_check.
Validation for the Plant
  PERFORM VALIDITY_CHECK.
  IF MTART NE 'FERT'.
    MESSAGE E041 WITH 'Material Type must be FERT Only...'.
  ENDIF.
  IF D1 = 'X'." On 26.4.05.
    P_SPMON0(4) = S_BUDAT-LOW0(4).
    P_SPMON4(2) = S_BUDAT-LOW4(2).
  ELSE.
    P_SPMON0(4) = S_BUDAT-LOW0(4).
    P_SPMON4(2) = S_BUDAT-LOW4(2).
  ENDIF.
  LOOP AT S_BUDAT.
    IF S_BUDAT-HIGH IS INITIAL.
      S_BUDAT-HIGH = S_BUDAT-LOW.
      MODIFY S_BUDAT.
    ENDIF.
  ENDLOOP.
  IDATE-LOW = S_BUDAT-LOW.
  IDATE-HIGH = S_BUDAT-HIGH.
  CALL FUNCTION 'FIMA_DAYS_AND_MONTHS_AND_YEARS'
    EXPORTING
       I_DATE_FROM = IDATE-LOW
       I_DATE_TO = IDATE-HIGH
   IMPORTING
E_DAYS =
      E_MONTHS = MONTH
E_YEARS =
  DATA: I(3) TYPE C.
  I = S_BUDAT-LOW+4(2).
  CLEAR: R_BUDAT.
  REFRESH: R_BUDAT.
*added by Prabhu for Only for Oneday.on 18.5.5
  IF MONTH EQ '0'.
    MONTH = MONTH + 1.
  ENDIF.
*added by Prabhu for Only for Oneday.on 18.5.5
  DO MONTH TIMES.
    R_BUDAT-LOW = S_BUDAT-LOW.
    APPEND R_BUDAT.
  ENDDO.
  I = 0.
  LOOP AT R_BUDAT.
    R_BUDAT-LOW4(2) = S_BUDAT-LOW4(2) + I.
    I = I + 1.
    R_BUDAT-LOW+6(2) = '01'.
    MODIFY R_BUDAT.
  ENDLOOP.
  LOOP AT R_BUDAT.
    CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS'
       EXPORTING
         DAY_IN = R_BUDAT-LOW
       IMPORTING
         LAST_DAY_OF_MONTH = R_BUDAT-HIGH
      EXCEPTIONS
        DAY_IN_NO_DATE = 1
        OTHERS = 2
    MODIFY R_BUDAT.
  ENDLOOP.
  LOOP AT R_BUDAT.
    IF R_BUDAT-LOW4(2) = S_BUDAT-LOW4(2).
      R_BUDAT-LOW = S_BUDAT-LOW.
      MODIFY R_BUDAT.
    ENDIF.
    IF R_BUDAT-HIGH4(2) = S_BUDAT-HIGH4(2).
      R_BUDAT-HIGH = S_BUDAT-HIGH.
      MODIFY R_BUDAT.
    ENDIF.
For Summary on 26.4.05.
    IF Y1 = 'X'.
      CLEAR R_BUDAT.
      REFRESH R_BUDAT.
      R_BUDAT-LOW = S_BUDAT-LOW.
      R_BUDAT-HIGH = S_BUDAT-HIGH.
      APPEND R_BUDAT.
      CLEAR R_BUDAT.
    ENDIF.
  ENDLOOP.
At Selection Screen *
AT SELECTION-SCREEN OUTPUT.
Start of Selection *
START-OF-SELECTION.
  V_MJAHR = P_SPMON+0(4).
Get plant distinction warehouse/production
  PERFORM GET_PLANT_DISTINCTION.
Collect the data from various tables
  PERFORM GETDATA_FG_STOCK.
here the number of rows in the output table is found
  PERFORM OUTPUT_TABLE_CHECK.
here the top of the page code is written, that is to be displayed
in the output
  PERFORM Z_TOP_OF_PAGE.
here ALV layout properties are set
  PERFORM Z_LAYOUT_SETTINGS.
ALV EVENTS for TOP OF PAGE and for USER COMMAND
  PERFORM Z_ALV_EVENTS.
The field catalog is defined for the Primary List is defined in
the subroutine CREATE_FIELD_CATALOG include program ZPRRDOCR_FCAT
  PERFORM Z_CREATE_FIELD_CATALOG.
This is for displaying the output
  PERFORM Z_REUSE_ALV_GRID_DISPLAY.
*& Form getdata_fg_stock
Getting data from standard tables
FORM GETDATA_FG_STOCK.
For getting the Start date & end date of the month
PERFORM get_month_dates.
Getting the Opening Stock from MARDH table
  IF MON EQ '01'.
    MON1 = MON.
    FYEAR1 = FYEAR.
    MON = '12'.
    FYEAR = FYEAR - 1.
  ELSE.
    MON1 = MON.
    FYEAR1 = FYEAR.
    MON = MON - 1.
    FYEAR = FYEAR.
  ENDIF.
  PERFORM GET_RECORDS_FROM_DB.
*added for Month Summary on 26.4.05.
  LOOP AT R_BUDAT.
    S_BUDAT-LOW = R_BUDAT-LOW.
    S_BUDAT-HIGH = R_BUDAT-HIGH.
*for Month
    P_SPMON0(4) = S_BUDAT-LOW0(4).
    P_SPMON4(2) = S_BUDAT-LOW4(2).
*for summary.
    IF Y1 = 'X'.
      LOOP AT S_BUDAT.
        S_BUDAT1-SIGN = 'I'.
        S_BUDAT1-OPTION = 'NB'.
        S_BUDAT1-LOW = S_BUDAT-LOW.
        S_BUDAT1-HIGH = S_BUDAT-HIGH.
        APPEND S_BUDAT1.
        CLEAR S_BUDAT1.
      ENDLOOP.
    ENDIF.
    IMKPFT[] = I_MKPF[].
    IMKPFT2[] = I_MKPF[].
    IMARDT[] = I_MARD[].
    IMARDHT[] = I_MARDH[].
    PERFORM MONTH_WISE.
    PERFORM PROCESS_MOVEMENTS.
    PERFORM CALCULATE_OPENING_STOCK.
    PERFORM UPDATE_NON_TRANSACTION_ITMS.
    PERFORM DELETE_EMPTY_RECORDS.
    CLEAR: IMARDHT,IMARDT,IMKPFT1,IMKPFT,I_FINAL,I_FINAL5.
    REFRESH: IMARDHT,IMARDT,IMKPFT1,I_FINAL,I_FINAL5,IMKPFT.
  ENDLOOP.
  CLEAR: R_BUDAT.
  REFRESH: R_BUDAT.
*end of changes for month.
ENDFORM. " getdata_fg_stock
FORM MONAT_F4 *
F4-Hilfe für Monat *
FORM MONAT_F4.
  DATA: BEGIN OF MF_DYNPFIELDS OCCURS 1.
          INCLUDE STRUCTURE DYNPREAD.
  DATA: END OF MF_DYNPFIELDS.
  DATA: MF_RETURNCODE LIKE SY-SUBRC,
         MF_MONAT LIKE ISELLIST-MONTH,
         MF_HLP_REPID LIKE SY-REPID.
  FIELD-SYMBOLS: .
Wert von Dynpro lesen
  GET CURSOR FIELD MF_DYNPFIELDS-FIELDNAME.
  APPEND MF_DYNPFIELDS.
  MF_HLP_REPID = SY-REPID.
  DO 2 TIMES.
    CALL FUNCTION 'DYNP_VALUES_READ'
      EXPORTING
        DYNAME               = MF_HLP_REPID
        DYNUMB               = SY-DYNNR
      TABLES
        DYNPFIELDS           = MF_DYNPFIELDS
      EXCEPTIONS
        INVALID_ABAPWORKAREA = 01
        INVALID_DYNPROFIELD  = 02
        INVALID_DYNPRONAME   = 03
        INVALID_DYNPRONUMMER = 04
        INVALID_REQUEST      = 05
        NO_FIELDDESCRIPTION  = 06
        UNDEFIND_ERROR       = 07.
    IF SY-SUBRC = 3.
Aktuelles Dynpro ist Wertemengenbild
      MF_HLP_REPID = 'SAPLALDB'.
    ELSE.
      READ TABLE MF_DYNPFIELDS INDEX 1.
Unterstriche durch Blanks ersetzen
      TRANSLATE MF_DYNPFIELDS-FIELDVALUE USING '_ '.
      EXIT.
    ENDIF.
  ENDDO.
  IF SY-SUBRC = 0.
Konvertierung ins interne Format
    CALL FUNCTION 'CONVERSION_EXIT_PERI_INPUT'
      EXPORTING
        INPUT         = MF_DYNPFIELDS-FIELDVALUE
      IMPORTING
        OUTPUT        = MF_MONAT
      EXCEPTIONS
        ERROR_MESSAGE = 1.
    IF MF_MONAT IS INITIAL.
Monat ist initial => Vorschlagswert aus akt. Datum ableiten
      MF_MONAT = SY-DATLO(6).
    ENDIF.
    CALL FUNCTION 'POPUP_TO_SELECT_MONTH'
      EXPORTING
        ACTUAL_MONTH               = MF_MONAT
      IMPORTING
        SELECTED_MONTH             = MF_MONAT
        RETURN_CODE                = MF_RETURNCODE
      EXCEPTIONS
        FACTORY_CALENDAR_NOT_FOUND = 01
        HOLIDAY_CALENDAR_NOT_FOUND = 02
        MONTH_NOT_FOUND            = 03.
    IF SY-SUBRC = 0 AND MF_RETURNCODE = 0.
ASSIGN (MF_DYNPFIELDS-FIELDNAME) TO <MF_FELD>. " ==>> note 148804
<MF_FELD> = MF_MONAT.
      CALL FUNCTION 'CONVERSION_EXIT_PERI_OUTPUT'
        EXPORTING
          INPUT  = MF_MONAT
        IMPORTING
          OUTPUT = MF_DYNPFIELDS-FIELDVALUE.
      COLLECT MF_DYNPFIELDS.
      CALL FUNCTION 'DYNP_VALUES_UPDATE'
        EXPORTING
          DYNAME               = MF_HLP_REPID
          DYNUMB               = SY-DYNNR
        TABLES
          DYNPFIELDS           = MF_DYNPFIELDS
        EXCEPTIONS
          INVALID_ABAPWORKAREA = 01
          INVALID_DYNPROFIELD  = 02
          INVALID_DYNPRONAME   = 03
          INVALID_DYNPRONUMMER = 04
          INVALID_REQUEST      = 05
          NO_FIELDDESCRIPTION  = 06
          UNDEFIND_ERROR       = 07. "<<== note 148804
    ENDIF.
  ENDIF.
ENDFORM.                                                    "MONAT_F4
*& Form get_month_dates
Calculating the Month Start & End Date
FORM GET_MONTH_DATES.
  IF M1 = 'X'.
    FYEAR = P_SPMON+0(4).
    MON = P_SPMON+4(2).
    CONCATENATE FYEAR MON '01' INTO R_BUDAT-LOW.
    R_BUDAT-SIGN = 'I'.
    R_BUDAT-OPTION = 'BT'.
    CALL FUNCTION 'BKK_GET_MONTH_LASTDAY'
      EXPORTING
        I_DATE = R_BUDAT-LOW
      IMPORTING
        E_DATE = R_BUDAT-HIGH.
    APPEND R_BUDAT.
    CLEAR S_BUDAT.
    REFRESH S_BUDAT.
    S_BUDAT-SIGN = 'I'.
    S_BUDAT-OPTION = 'BT'.
    S_BUDAT-LOW = R_BUDAT-LOW.
    S_BUDAT-HIGH = R_BUDAT-HIGH.
    APPEND S_BUDAT.
  ELSE.
    FYEAR = P_SPMON+0(4).
    MON = P_SPMON+4(2).
    CONCATENATE FYEAR MON '01' INTO R_BUDAT-LOW.
    R_BUDAT-SIGN = 'I'.
    R_BUDAT-OPTION = 'BT'.
    CALL FUNCTION 'BKK_GET_MONTH_LASTDAY'
      EXPORTING
        I_DATE = R_BUDAT-LOW
      IMPORTING
        E_DATE = R_BUDAT-HIGH.
    APPEND R_BUDAT.
  ENDIF.
ENDFORM. " get_month_dates
*& Form output_table_Check
checking for records for output
FORM OUTPUT_TABLE_CHECK .
  DESCRIBE TABLE I_FINALT LINES INDEX.
  IF INDEX EQ 0.
    MESSAGE I041 WITH TEXT-005.
    LEAVE LIST-PROCESSING.
  ENDIF.
ENDFORM. "OUTPUT_TABLE_CHECK
*& Form Z_TOP_OF_PAGE
for setting the details in the top of page *
has no formal paramters *
FORM Z_TOP_OF_PAGE.
  DATA: V_MON(2),
  V_YR(40),
  V_FIN(18),
  V_FIN1(48),
  LOW(10),
  HIGH(10).
  V_MON = P_SPMON+4(2).
  V_YR = P_SPMON+0(4).
  FHEADER-TYP = 'H'.
  FHEADER-INFO = 'Stock Register Report (FG Stock)'.
  APPEND FHEADER.
  CLEAR FHEADER.
*if m1 = 'X'.
CONCATENATE 'Month = ' v_mon '.' v_yr INTO v_fin.
fheader-typ = 'H'.
fheader-info = v_fin.
APPEND fheader.
CLEAR fheader.
*endif."prabhu on 18.5.5
  IF D1 = 'X'.
    CLEAR S_BUDAT.
    LOOP AT S_BUDAT.
      CONCATENATE S_BUDAT-LOW6(2) '/' S_BUDAT-LOW4(2) '/'
      S_BUDAT-LOW+0(4) INTO LOW.
      CONCATENATE S_BUDAT-HIGH6(2) '/' S_BUDAT-HIGH4(2) '/'
      S_BUDAT-HIGH+0(4) INTO HIGH.
      CONCATENATE 'Date = ' LOW ' - ' HIGH INTO V_FIN1.
      FHEADER-TYP = 'H'.
      FHEADER-INFO = V_FIN1.
      APPEND FHEADER.
      CLEAR FHEADER.
    ENDLOOP.
  ENDIF.
ENDFORM. " Z_TOP_OF_PAGE
*& Form Z_LAYOUT_SETTINGS
this is done for setting the properties for the layout of the *
grid *
has no formal paramters *
FORM Z_LAYOUT_SETTINGS.
  FS_LAYO-ZEBRA = 'X'. " Output in Zebra pattern
  FS_LAYO-DETAIL_POPUP = 'X'. " A popup window appears to give
  FS_LAYO-DETAIL_TITLEBAR = TEXT-022.
  FS_LAYO-COLWIDTH_OPTIMIZE = 'X'.
ENDFORM. " Z_LAYOUT_SETTINGS
*& Form Z_ALV_EVENTS
This is used for handling the events TOP OF PAGE and the USER *
COMMAND event *
has no formal paramters *
FORM Z_ALV_EVENTS.
  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
      I_LIST_TYPE = 0
    IMPORTING
      ET_EVENTS   = FEVENTS[].
  READ TABLE FEVENTS WITH KEY NAME = 'TOP_OF_PAGE'.
  IF SY-SUBRC = 0.
    FEVENTS-FORM = 'Z_TOPOFPAGE'.
    MODIFY FEVENTS INDEX SY-TABIX.
    CLEAR FEVENTS.
  ENDIF.
  READ TABLE FEVENTS WITH KEY NAME = 'USER_COMMAND'.
  IF SY-SUBRC = 0.
    FEVENTS-FORM = 'Z_USER_COMMAND'.
    MODIFY FEVENTS INDEX SY-TABIX.
    CLEAR FEVENTS.
  ENDIF.
ENDFORM. "Z_ALV_EVENTS
*& Form Z_CREATE_FIELD_CATALOG
here the field catalog is created for the primary list *
no formal parameters *
FORM Z_CREATE_FIELD_CATALOG.
for the Plant
  FCAT-FIELDNAME = 'WERKS'.
  FCAT-KEY = 'X'.
  FCAT-OUTPUTLEN = '000005'.
  FCAT-JUST = 'L'.
  FCAT-SELTEXT_M = 'Plant'.
  FCAT-DDICTXT = 'M'.
  FCAT-INTTYPE = 'C'.
  FCAT-DATATYPE = 'CHAR'.
  APPEND FCAT.
  CLEAR FCAT.
for the Material Type
  FCAT-FIELDNAME = 'MTART'.
  FCAT-KEY = 'X'.
  FCAT-OUTPUTLEN = '000006'.
  FCAT-JUST = 'L'.
  FCAT-SELTEXT_M = 'MatTyp'.
  FCAT-DDICTXT = 'M'.
  FCAT-INTTYPE = 'C'.
  FCAT-DATATYPE = 'CHAR'.
  APPEND FCAT.
  CLEAR FCAT.
for the Material No.
  FCAT-FIELDNAME = 'MATNR'.
  FCAT-KEY = 'X'.
fcat-hotspot = 'X'.
  FCAT-OUTPUTLEN = '000018'.
  FCAT-JUST = 'L'.
  FCAT-SELTEXT_M = 'Material'.
  FCAT-DDICTXT = 'M'.
  FCAT-INTTYPE = 'C'.
  FCAT-DATATYPE = 'CHAR'.
  APPEND FCAT.
  CLEAR FCAT.
for the Material Description
  FCAT-FIELDNAME = 'MAKTX'.
  FCAT-KEY = ''.
  FCAT-OUTPUTLEN = '000040'.
  FCAT-JUST = 'L'.
  FCAT-SELTEXT_M = 'Description'.
  FCAT-DDICTXT = 'M'.
  FCAT-INTTYPE = 'C'.
  FCAT-DATATYPE = 'CHAR'.
  APPEND FCAT.
  CLEAR FCAT.
for the Unit of Measure
  FCAT-FIELDNAME = 'MEINS'.
  FCAT-KEY = ''.
  FCAT-OUTPUTLEN = '03'.
  FCAT-JUST = 'C'.
  FCAT-SELTEXT_M = 'UOM'.
  FCAT-DDICTXT = 'M'.
  FCAT-INTTYPE = 'C'.
  FCAT-DATATYPE = 'UNIT'.
  APPEND FCAT.
  CLEAR FCAT.
for the Plant
  FCAT-FIELDNAME = 'MONTH'.
  FCAT-KEY = 'X'.
  FCAT-OUTPUTLEN = '08'.
  FCAT-JUST = 'L'.
  FCAT-SELTEXT_M = 'MONTH'.
  FCAT-DDICTXT = 'M'.
  FCAT-INTTYPE = 'C'.
  FCAT-DATATYPE = 'CHAR'.
  APPEND FCAT.
  CLEAR FCAT.
for the Opening Stock
  FCAT-FIELDNAME = 'C_STK'.
  FCAT-HOTSPOT = ' '.
  FCAT-OUTPUTLEN = '000016'.
  FCAT-JUST = 'L'.
  FCAT-SELTEXT_M = 'Opening Stock'.
  FCAT-DDICTXT = 'M'.
  FCAT-INTTYPE = 'Q'.
  FCAT-DATATYPE = 'QUAN'.
fcat-do_sum = 'X'.
  FCAT-JUST = 'R'.
  FCAT-NO_ZERO = 'X'.
  APPEND FCAT.
  CLEAR FCAT.
for the Total Receipts
  FCAT-FIELDNAME = 'TRECEP'.
  FCAT-HOTSPOT = ' '.
  FCAT-OUTPUTLEN = '000016'.
  FCAT-JUST = 'L'.
  FCAT-SELTEXT_M = 'Total Receipts'.
  FCAT-DDICTXT = 'M'.
  FCAT-INTTYPE = 'Q'.
  FCAT-DATATYPE = 'QUAN'.
  FCAT-DO_SUM = 'X'.
  FCAT-JUST = 'R'.
  FCAT-NO_ZERO = 'X'.
  APPEND FCAT.
  CLEAR FCAT.
for the Production
  FCAT-FIELDNAME = 'PRODU'.
  FCAT-HOTSPOT = ' '.
  FCAT-OUTPUTLEN = '000016'.
  FCAT-JUST = 'L'.
  FCAT-SELTEXT_M = 'Production'.
  FCAT-DDICTXT = 'M'.
  FCAT-INTTYPE = 'Q'.
  FCAT-DATATYPE = 'QUAN'.
  FCAT-DO_SUM = 'X'.
  FCAT-JUST = 'R'.
  FCAT-NO_ZERO = 'X'.
  APPEND FCAT.
  CLEAR FCAT.
for the Other Plant Receipts
  FCAT-FIELDNAME = 'RECEP'.
  FCAT-HOTSPOT = ' '.
  FCAT-OUTPUTLEN = '000016'.
  FCAT-JUST = 'L'.
  FCAT-SELTEXT_M = 'Othr Plnt Recpts'.
  FCAT-DDICTXT = 'M'.
  FCAT-INTTYPE = 'Q'.
  FCAT-DATATYPE = 'QUAN'.
  FCAT-DO_SUM = 'X'.
  FCAT-JUST = 'R'.
  FCAT-NO_ZERO = 'X'.
  APPEND FCAT.
  CLEAR FCAT.
Sales Return
  FCAT-FIELDNAME = 'SAL_RET'.
  FCAT-HOTSPOT = ' '.
  FCAT-OUTPUTLEN = '000016'.
  FCAT-JUST = 'L'.
  FCAT-SELTEXT_M = 'Sales Return'.
  FCAT-DDICTXT = 'M'.
  FCAT-INTTYPE = 'Q'.
  FCAT-DATATYPE = 'QUAN'.
  FCAT-DO_SUM = 'X'.
  FCAT-JUST = 'R'.
  FCAT-NO_ZERO = 'X'.
  APPEND FCAT.
  CLEAR FCAT.
Total Dispatches
  FCAT-FIELDNAME = 'TDISP'.
  FCAT-HOTSPOT = ' '.
  FCAT-OUTPUTLEN = '000016'.
  FCAT-JUST = 'L'.
  FCAT-SELTEXT_M = 'Total Dispatches'.
  FCAT-DDICTXT = 'M'.
  FCAT-INTTYPE = 'Q'.
  FCAT-DATATYPE = 'QUAN'.
  FCAT-DO_SUM = 'X'.
  FCAT-JUST = 'R'.
  FCAT-NO_ZERO = 'X'.
  APPEND FCAT.
  CLEAR FCAT.

Similar Messages

  • Opening Stock and Closing Stock Calculation

    Hi,
         My report requirement is to display the material, opening stock for the lower date, closing stock for the higher date and the in between all stock operations..how to fetch the opening stock and closing stock for a particular  material ???.. what are the tables and fields for calculating them??..
    Thanks,
    Sri
    Edited by: Sri on Feb 13, 2009 8:33 AM

    Hi
    We have done a similar reports. One showing opening stock/Closing stock and another one showing all the transactions for a particular day. What we did was we developed a program to fetch data from MARD table for unrestricted, blocked & Qulaity stock(Our requirement talks only about these 3 stocks). And we scheduled the program exactly at system time 00.00 hrs with A class job.(today's closing day stock is nothing but tomorrow's opening stock)
      And for the second report which needs to pick all the transaction for a particular day, we picked it from MB51 entries. It is nothing but query between MKPF and MSEG.
    I hope this helps.

  • Opening balance and closing stock balance

    Hi,
    What is the way to calculate opening balance and closing stock balance.
    Thanks
    krishna

    have a look Calculate Opening and Closing Stock
    Opening and closing balance
    Opening Stock and Closing Stock fields and Calculation

  • Opening Stock and Closing Stock fields and Calculation

    Hi,
    My report requirement is to display the material, opening stock for the lower date, closing stock for the higher date and the in between all stock operations..how to fetch the opening stock and closing stock for a particular material ???.. what are the tables and fields for calculating them??..
    Thanks,
    Sri

    this is the code i wrote..
    I had selected the data for the date entered and the previous date(l_date) also..
    previous date for the opening stock.
    now i am getting only receipts and issues correctly.. opening stock and the remaining
    balance fields are not coming properly..please help me..
    here rmenge for receipts,imenge for issues.
    REPORT  ZSTOCK no standard page heading line-size 180.
    types: begin of ty_date,
           budat type budat,
           end of ty_date,
           begin of ty_mard,
            matnr type matnr,
            lgort type lgort_d,
            labst type labst,
            UMLME TYPE UMLMD,
            INSME TYPE INSME,
            EINME TYPE EINME,
            SPEME TYPE SPEME,
            RETME TYPE RETME,
           end of ty_mard,
           begin of ty_makt,
            matnr type matnr,
            maktx type maktx,
           end of ty_makt,
           begin of ty_mbew,
           matnr type matnr,
           bwkey type bwkey,
           lbkum type lbkum,
           salk3 type salk3,
           end of ty_mbew,
           begin of ty_mkpfmseg,
            mblnr type mblnr,
            budat type budat,
            bwart type bwart,
            matnr type matnr,
            lgort type lgort_d,
            shkzg type shkzg,
            dmbtr type dmbtr,
            menge type mseg-menge,
           end of ty_mkpfmseg,
           begin of ty_opstock,
           matnr type matnr,
           rdmbtr type dmbtr,
           idmbtr type dmbtr,
           bdmbtr type dmbtr,
           bmenge type menge_d,
           end of ty_opstock,
           begin of ty_output,
            mblnr type mblnr,
            budat type budat,
            matnr type matnr,
            maktx type maktx,
            bwart type bwart,
            lgort type lgort_d,
            shkzg type shkzg,
            rmenge type mseg-menge,
            rdmbtr type dmbtr,
            imenge type mseg-menge,
            idmbtr type dmbtr,
            dmbtr type dmbtr,
            bdmbtr type dmbtr,
            bmenge type menge_d,
           end of ty_output.
    data: t_date type standard table of ty_date initial size 0,
          t_mard type standard table of ty_mard initial size 0,
          t_makt type standard table of ty_makt initial size 0,
          t_mkpfmseg type standard table of ty_mkpfmseg initial size 0,
          t_opstock type standard table of ty_opstock initial size 0,
          t_out type standard table of ty_output initial size 0,
          w_date type ty_date,
          w_mard type ty_mard,
          w_makt type ty_makt,
          w_mkpfmseg type ty_mkpfmseg,
          w_opstock type ty_opstock,
          w_out type ty_output,
          g_matnr type mara-matnr,
          g_lgort type t001l-lgort.
    selection-screen begin of block b1 with frame.
    parameters:p_werks type t001l-werks obligatory memory id pw.
    select-options:s_lgort for g_lgort no-extension no intervals.
    select-options: s_matnr for g_matnr.
    parameters:p_date type mkpf-budat obligatory.
    selection-screen end of block b1.
    at selection-screen.
    perform sub_validate_date.
    start-of-selection.
    data: l_date type sy-datum,
          l_row type i.
    refresh t_date.
    select budat from mkpf into table t_date.
    sort t_date.
    delete adjacent duplicates from t_date.
    clear w_date.
    read table t_date into w_date with key budat = p_date.
    l_row = sy-tabix.
    l_row = l_row - 1.
    clear w_date.
    read table t_date into w_date index l_row.
    l_date = w_date-budat.
    select    k~mblnr
              k~budat
              s~bwart
              s~matnr
              s~lgort
              s~shkzg
              s~dmbtr
              s~menge
              into table t_mkpfmseg
              from mkpf as k inner join mseg as s
              on kmblnr = smblnr and
                 kmjahr = smjahr
              where k~budat between l_date and p_date and
                    s~matnr in s_matnr and
                    s~werks = p_werks and
                    s~lgort in s_lgort.
    if t_mkpfmseg is not initial.
    sort t_mkpfmseg by budat ascending
                       matnr ascending.
    select     matnr
               lgort
               labst
               umlme
               insme
               einme
               speme
               retme
               from mard
               into table t_mard
               for all entries in t_mkpfmseg
               where matnr = t_mkpfmseg-matnr and
                     werks = p_werks and
                     lgort in s_lgort.
    select    matnr
              maktx
              from makt
              into table t_makt
              for all entries in t_mkpfmseg
              where matnr = t_mkpfmseg-matnr.
    endif.
    loop at t_mkpfmseg into w_mkpfmseg where budat = l_date.
       loop at t_mard into w_mard where matnr = w_mkpfmseg-matnr.
          w_opstock-matnr = w_mkpfmseg-matnr.
          if w_mkpfmseg-shkzg = 'S'.             " Receive
               w_opstock-rdmbtr = w_mkpfmseg-dmbtr.
               w_opstock-bmenge = w_mard-labst + w_mard-insme + w_mard-speme
                                    + w_mard-einme +               w_mard-retme
                                    - w_mkpfmseg-menge.
          elseif w_mkpfmseg-shkzg = 'H'.         " Issue
               w_opstock-idmbtr = w_mkpfmseg-dmbtr.
               w_opstock-bmenge = w_out-bmenge + w_mkpfmseg-menge.
          endif.
              w_opstock-bdmbtr = w_out-rdmbtr - w_out-idmbtr.
                   append w_opstock to t_opstock.
                  clear w_opstock.
       endloop.
    endloop.
    loop at t_mkpfmseg into w_mkpfmseg where budat = p_date.
       loop at t_mard into w_mard where matnr = w_mkpfmseg-matnr.
         clear w_makt.
         read table t_makt into w_makt with key matnr = w_mkpfmseg-matnr.
         if sy-subrc = 0.
          w_out-budat = w_mkpfmseg-budat.
          w_out-matnr = w_mard-matnr.
          w_out-maktx = w_makt-maktx.
          w_out-lgort = w_mard-lgort.
          w_out-mblnr = w_mkpfmseg-mblnr.
          w_out-bwart = w_mkpfmseg-bwart.
          w_out-shkzg = w_mkpfmseg-shkzg.
            if w_mkpfmseg-shkzg = 'S'.             " Receive
               w_out-rmenge = w_mkpfmseg-menge.
               w_out-rdmbtr = w_mkpfmseg-dmbtr.
               w_out-imenge = 0.
               w_out-bmenge = w_mard-labst + w_mard-insme + w_mard-speme
                                    + w_mard-einme + w_mard-retme
                                    - w_mkpfmseg-menge.
            elseif w_mkpfmseg-shkzg = 'H'.         " Issue
               w_out-imenge = w_mkpfmseg-menge.
               w_out-idmbtr = w_mkpfmseg-dmbtr.
               w_out-rmenge = 0.
               w_out-bmenge = w_out-bmenge + w_mkpfmseg-menge.
            endif.
               w_out-bdmbtr = w_out-rdmbtr - w_out-idmbtr.
                   append w_out to t_out.
                  clear w_out.
    endif.
       endloop.
    endloop.
    write: / 'Material' , 12 'Description' ,40 'Location', 50 'Opening stock',70 'MvT',
              83 'Receipts' , 102 'Issues', 118 'Amount',135 'Balance Quan', 155 'Balance Amount'.
    loop at t_out into w_out.
       write: / w_out-matnr, 12 w_out-maktx, 40 w_out-lgort.
       clear w_opstock.
       read table t_opstock into w_opstock with key matnr = w_out-matnr.
       if sy-subrc = 0.
         write: 45 w_out-bmenge.
        endif.
       write: 70 w_out-bwart,75 w_out-rmenge,92  w_out-imenge,
             110 w_out-bdmbtr, 130 w_out-bmenge, 150 w_out-bdmbtr.
    endloop.
    *&      Form  SUB_VALIDATE_DATE
    FORM SUB_VALIDATE_DATE.
        select budat
               from mkpf
               into table t_date
               where budat = p_date.
        if t_date is initial.
           message e001(zks) with 'select another date range'.
        endif.
    ENDFORM.                    " SUB_VALIDATE_DATE
    Edited by: Sri on Feb 18, 2009 8:31 AM

  • How to create a query to see Opening stock and closing stock as on particul

    Hi All,
    How to create a query to see Opening stock and closing stock as on particul.
    Regards
    Albaik

    Hi,
    In BI 0IC_C03 will provide u the  required information and also having standard queries provided by the SAP.
    Plz find the list of Queries provided by the SAP.
    =======================================================================================================
    Inventory turnover      0IC_C01_Q0001
    Range of coverage - quantity      0IC_C01_Q0002
    Range of Coverage - Value      0IC_C01_Q0003
    Range of coverage of finished goods - quantity      0IC_C01_Q0004
    Range of Coverage of Finished Goods - Value      0IC_C01_Q0005
    Range of coverage of raw materials - quantity      0IC_C01_Q0006
    Range of Coverage of Raw Materials - Value      0IC_C01_Q0007
    Obsolete Stock on Hand      0IC_C01_Q0008
    Period-dependent requirement coverage      0IC_C01_Q0009
    Value of stock on hand      0IC_C01_Q0010
    Quantity of stock on hand      0IC_C01_Q0011
    Material consumption      0IC_C01_Q0012
    Material Movements      0IC_C01_Q0013
    Consignment stock: receipts and issues      0IC_C01_Q0014
    Valuated stock: receipts and issues      0IC_C01_Q0015
    Material stock and movements      0IC_C01_Q0016
    Material Movements (Healthcare)      0IC_C01_Q0020
    Material Consumption (Healthcare)      0IC_C01_Q0021
    Material Availability      0IC_C01_Q0022
    Inventory Turnover Frequency (Value)      0IC_C01_Q0023
    Consignment Stock Received and Issued per Unit      0IC_C01_Q0024
    Material Consumption (Quantity)      0IC_C02_Q0001
    Valuated Stock Receipts and Issues (Quantity)      0IC_C02_Q0002
    Range of Valuated Stock (Quantity)      0IC_C02_Q0003
    Inventory Turnover      0IC_C02_Q0004
    Receipt and Issue Consignment Stock at Customer      0IC_C03_Q0001
    Receipt and Issue Quality Inspection Stock      0IC_C03_Q0002
    Vendor Consignment Stock Receipt and Issue      0IC_C03_Q0003
    Receipt and Issue Stock in Transit      0IC_C03_Q0004
    Receipt and Issue of Blocked Stock      0IC_C03_Q0005
    Valuated Stock      0IC_C03_Q0006
    Stock in Quality Inspection      0IC_C03_Q0007
    Stock in Transit      0IC_C03_Q0008
    Blocked Stock      0IC_C03_Q0009
    Vendor Consignment Stock      0IC_C03_Q0010
    Consignment Stock at Customer      0IC_C03_Q0011
    Stock Overview      0IC_C03_Q0012
    Stock Overview (as of 3.1 Content)      0IC_C03_Q0013
    Quantities of Valuated Project Stock (as of 3.1 Content)      0IC_C03_Q0014
    Valuated Stock (as of 3.1 Content)      0IC_C03_Q0015
    Quantities of Valuated Sales Order Stock (as of 2.1 Cont.)      0IC_C03_Q0016
    Inventory Turnover      0IC_C03_Q0017
    Days' Supply      0IC_C03_Q0018
    SUS: Vendor Consignment Stock      0IC_C03_Q0019
    Scrap      0IC_C03_Q0020
    Inventory Aging      0IC_C03_Q0021
    Stock Overview - extended      0IC_C03_Q0022
    Demand Supply Match      0IC_C03_Q0023
    Warehouse Stock Analytics – Inventory Turnover      0IC_C03_Q0024
    Warehouse Analytics - Obsolescence and Variance      0IC_C03_Q0025
    Stock Overview: Materials      0IC_C03_Q0030
    Average Stock Value Over Time      0IC_C03_Q0031
    Stock Overview Over Time      0IC_C03_Q0032
    Range of Coverage Over Time      0IC_C03_Q0033
    ==================================================================================================
    Regards
    Ram.
    Edited by: Ramakanth Deepak Gandepalli on Jan 18, 2010 8:06 AM

  • Report on pending order qty,opening stock, and closing stock

    Any standard Report available on pending order qty against opening stock, and closing stock.
    Points assured
    Mohan

    Hi Mohan
    There is no report in standard SAP for stock in transit that is what you are refering to Pending order Qty & opening stock.
    You can get report in ME2M, ME2L for pending PO's.
    In MD04 you will get all these stock, PO Qty, & Closing stock but this is for individual material this has to be made customized report in reporting format same thing we have done in one of our project.
    Regards

  • MB5B -- Opening stock and closing stock

    Hi experts ,
    What is mean for opening stock adn closing stock ?
    In case of I input the same data of selection dHow they are calculated in MB5B ?
    For some material , the closing stock is 0, but why the closing value is not 0 ?
    BR , shubin
    Edited by: Shubin Tan on Nov 20, 2009 4:46 AM

    Opening stock:-stock at the beginning of the day
    Closing Stock:- Stock at the end of GI and GRs
    Reports like MB5B (Stock on posting date) can offer negative results              
    when executed for dates previous to the goods receipt, but this is only           
    a reporting issue: if the program is correctly executed for the complete          
    period (month/year), it should never show negative values.                                                                               
    The reason for the system behaviour you describe is that at the time of           
    a goods issue, the system only validates whether sufficient stock is              
    available in the posting period and not on that specific posting date.            
    So as described, if you specify a previous date, the stock for that               
    date may be negative, but actually your stock value is always correct.                                                                               
    If you are posting the goods issue in the previous period, the system             
    will issue an error message. But if the postings occur in the same                
    period with different dates, the system will not issue any error and              
    the stocks will be shown in negative.                                             
    Regards
    V V

  • Open stock and closing stock

    Hi
    how to findout open stock for the date and closing stock .

    hi
    good
    DATA : it_mard LIKE mard OCCURS 0 WITH HEADER LINE.
    DATA : BEGIN OF t_mard OCCURS 0 ,
    matnr LIKE mseg-matnr,
    labst LIKE mard-labst,
    END OF t_mard.
    DATA : it_mardh TYPE mardh.
    DATA : buper LIKE t009b-poper,
    gjahr LIKE t009b-bdatj.
    DATA : p_buper LIKE t009b-poper,
    p_gjahr LIKE t009b-bdatj.
    DATA : dt LIKE sy-datum.
    *CLOSING STOCK OF PREVIOUS PERIOD
    dt = sy-datum.
    *get current period
    CALL FUNCTION 'DATE_TO_PERIOD_CONVERT'
    EXPORTING
    i_date = dt
    i_periv = 'M3' "apr to march 4 spl periods
    IMPORTING
    e_buper = buper
    e_gjahr = gjahr
    EXCEPTIONS
    input_false = 1
    t009_notfound = 2
    t009b_notfound = 3
    OTHERS = 4.
    *fetch previous period
    CALL FUNCTION 'CKML_F_GET_PREVIOUS_PERIOD'
    EXPORTING
    input_period = buper
    input_year = gjahr
    input_periv = 'M3'
    IMPORTING
    previous_period = p_buper
    previous_year = p_gjahr.
    SELECT SINGLE * FROM mardh
    WHERE matnr = p_matnr
    AND werks = p_werks
    AND lfmon = p_buper
    AND lfgja = p_gjahr.
    IF sy-subrc = 0.
    CLOSING STOCK = mardh-labst.
    ENDIF.
    *to calculate current stock-----
    SELECT * FROM mard
    INTO CORRESPONDING FIELDS OF TABLE it_mard
    WHERE matnr = it_marc-matnr
    AND werks = p_werks.
    IF NOT it_mard[] IS INITIAL.
    LOOP AT it_mard.
    t_mard-matnr = it_mard-matnr.
    t_mard-labst = it_mard-labst.
    COLLECT t_mard.
    ENDLOOP.
    READ TABLE t_mard INDEX 1.
    CURRENT STOCK= t_mard-labst.
    ENDIF.
    thanks
    mrutyun^

  • Opening stock and closing stock required

    hi experts,
                  i am preparing daily report for material consumption .where i am getting BOM consumption for each material .
    material    opening-stock      issues      closing-stock
    material1
    item1       1000                    1                    999
    item2        10                       2                      8
    material2
    item1        999                   2                    997
    item2        20                     3                     17
    material3
    item1       997                   2                     995
    item3       30                    5                        25
    this is a report for daily consumption of material.
    but i want report for each material like this
    item1             1000           5ie(221)         995
    item2               20              3                         17
    item3              30                5                      25
    what is the logic for getting thsi output.
    thanks
    mani

    check this sample code.
    https://wiki.sdn.sap.com/wiki/pages/viewpage.action?pageId=15856
    Regards
    Peram

  • Regaring opening stock and closing stock in MM

    hi guys,
    can any body plzz tell me what exactly do u mean by
    1) opening stock (OS)
    2) closing stock (CS)
    3) credit indicator
    4) debit indicator
    in MM, i actually checked bseg table for documentation of these fields but could not understand can any one plzz help me.
    thanks very much
        pavan

    Hello Pavan
    What exactly do you wish to know the definitions or calculation.
    Opening stock : It is the initial stock available for a particular material at a particular plant/sloc (when the sku was created).
    Closing stock : It is the current stock available, basically Opening stock + receipts - issue.
    Credit/Debit indicator : Basically, they indicate whether the stock was received at the location or issued from the location.
    Regards
    Anurag

  • MB5B Report table for Open and Closing stock on date wise

    Hi Frds,
    I am trying get values of Open and Closing stock on date wise form the Table MARD and MBEW -Material Valuation but it does not match with MB5B reports,
    Could anyone suggest correct table to fetch the values Open and Closing stock on date wise for MB5B reports.
    Thanks
    Mohan M

    Hi,
    Please check the below links...
    Query for Opening And  Closing Stock
    Inventory Opening and Closing Stock
    open stock and closing stock
    Kuber

  • Reg:Opening and Closing Stock For Plant

    Hi All,
      i want to calculate the opening stock and closing stock for plant wise for the given Posting Period Date.
    Am having the opening balance and closing balance for all months but i need it as month wise.
    considering this example,
    the date is from 15.01.2010 to 15.03.2010 and for one plant
    considering this example,
    am having the opening stock from as 15.01.2010  to 15.03.2010 as 10,000 and the closing stock as 15,000.
    but i need in month wise like below,
    from 15.01.2010 to 31.01.2010 what is the opening stock and closing stock?
    from 01.02.2010 to 28.02.2010 what is the opening stock and closing stock?
    from 01.03.2010 to 15.03.2010 what is the opening stock and closing stock?
    this is purely based on plant wise and not material wise?
    could anybody say clearly how can i acheive this scenario?
    i have referred MB5b,mc.9 transaction programs but still confused how to go with plant wise for a particular period?
    Thanks & Regards,
    Suresh
    Edited by: suresh suresh on Mar 24, 2010 10:15 AM

    Hi,
    Refer to link below:
    http://help.sap.com/erp2005_ehp_04/helpdata/EN/c1/3766e7449a11d188fe0000e8322f96/frameset.htm
    Regards,
    Venkat.

  • Valuation class wise stock report for opening and closing stock

    Dear all,
       My Clint is asking the report for the opening stock and closing stock with respect to valuation class is there any standard report is available please guide me
    regards
    pramod

    Dear sir,
    in my case matarial is split valuated matarial, matarial is maintained with two valuation classes
    when  seeing the report  MB5B its not showing the price valuation class vise, its showing combined together only, again i am using the MC.9 there also same problem its not showing both the valuation class vise price its showing only one valuation class price, if we check for another valuation class price for that particular matarial its telling no data is availabel for the valuation class
    regards
    pramod

  • Opening and closing stock with sales order and with out sales order

    hello,
    any body please help me my client want to check opening stock and and closing stock in areport.
    material contains batch and some material with sales order and some are with out sales order. my client is asking this in a single layout. please tell me isthere any teport or bapi or function module to get this report.
    this is very uregent. and layout is requesting like opening stock, production stock, sales stock and closing stock.
    please guide me to get this report.
    Thanks & Regads
    Bhakta

    Transaction MB5B
    For sales order related use specila stock as E and use radio button indicator in stock type
    For stock w/o sales order, use special stock indiactor as "space' and stock type valuated stock.
    to get a perticular month,opening stock/closing stock enter the start date/end date as month start and end date.
    See the o/p which will give the stock as required by you

  • Calculate Opening and Closing Stock

    Hi all,
          Plz tell me logic how to calculate Opening Stock and Closing Stock of material of any particular date of month...........
    Thanks in Advance.
    Pradip Pawar

    Hi Pradeep
    for a particular month for calculating opening stock is
    use this logic
            SELECT MBLNR BWART ZEILE MATNR WERKS LGORT SHKZG ERFMG ERFME
           FROM MSEG INTO CORRESPONDING FIELDS OF TABLE IT_QUAN FOR
              ALL ENTRIES IN IT_FINAL WHERE MATNR = IT_FINAL-MATNR.
      IF IT_QUAN[] IS NOT INITIAL.
    GETTING THE MATERIAL DOCUMENTS FOR SPECIFIED PERIOD
          SELECT MBLNR BUDAT FROM MKPF
                     INTO CORRESPONDING FIELDS OF TABLE IT_BUDAT
                     FOR ALL ENTRIES IN IT_QUAN
                     WHERE ( BUDAT GE DATE1 AND BUDAT LT DATE2 )
                     AND MBLNR = IT_QUAN-MBLNR.
          SELECT MBLNR BUDAT FROM MKPF
                     INTO CORRESPONDING FIELDS OF TABLE IT_BUDAT1
                     FOR ALL ENTRIES IN IT_QUAN
                     WHERE MBLNR = IT_QUAN-MBLNR
                     AND BUDAT LT DATE1.
        ENDIF.
        CLEAR INDEX.
    IF THE MATERIAL DOCUMENT NUMBER IS NOT FOUND IN THE SPECIFIED PERIOD
    *REMOVE IT
        IT_QUAN1[] = IT_QUAN[].
        LOOP AT IT_QUAN.
          INDEX = SY-TABIX.
          READ TABLE IT_BUDAT WITH KEY MBLNR = IT_QUAN-MBLNR.
          IF SY-SUBRC NE 0.
            DELETE IT_QUAN INDEX INDEX.
          ENDIF.
          CLEAR IT_QUAN.
          CLEAR IT_BUDAT.
        ENDLOOP.
        SORT IT_QUAN BY MATNR.
        LOOP AT IT_FINAL.
          INDEX = SY-TABIX.
          LOOP AT IT_QUAN WHERE MATNR = IT_FINAL-MATNR
                            AND WERKS = IT_FINAL-WERKS
                            AND LGORT = IT_FINAL-LGORT.
            IF SY-SUBRC = 0.
    IF IT IS IN CALCULATE QUANTITY
              IF IT_QUAN-SHKZG = 'S'.
    check the unit if it is gram then devide by 1000.
                IF IT_QUAN-ERFME = 'G'.
                  IT_QUAN-ERFMG = IT_QUAN-ERFMG / 1000.
                ENDIF.
                IN_QTY = IN_QTY + IT_QUAN-ERFMG.
              ENDIF.
    IF IT IS OUT CALCULATE QUANTITY
              IF IT_QUAN-SHKZG = 'H'.
                IF IT_QUAN-ERFME = 'G'.
                  IT_QUAN-ERFMG = IT_QUAN-ERFMG / 1000.
                ENDIF.
                OUT_QTY = OUT_QTY + IT_QUAN-ERFMG.
              ENDIF.
            ENDIF.
          ENDLOOP.
          IT_FINAL-IN = IN_QTY.
          IT_FINAL-OUT = OUT_QTY.
          MODIFY IT_FINAL INDEX INDEX.
          CLEAR: IN_QTY,OUT_QTY.
          CLEAR IT_FINAL.
          CLEAR IT_QUAN.
          CLEAR INDEX.
        ENDLOOP.
        CLEAR: IN_QTY,OUT_QTY.
        CLEAR IT_FINAL.
        CLEAR IT_QUAN.
        CLEAR INDEX.
    FOR OPENING BALANCE
        CLEAR INDEX.
        LOOP AT IT_QUAN1.
          INDEX = SY-TABIX.
          READ TABLE IT_BUDAT1 WITH KEY MBLNR = IT_QUAN1-MBLNR.
          IF SY-SUBRC NE 0.
            DELETE IT_QUAN1 INDEX INDEX.
          ENDIF.
          CLEAR IT_QUAN1.
          CLEAR IT_BUDAT1.
        ENDLOOP.
        SORT IT_QUAN1 BY MATNR.
        LOOP AT IT_FINAL.
          INDEX = SY-TABIX.
          LOOP AT IT_QUAN1 WHERE MATNR = IT_FINAL-MATNR
                            AND WERKS = IT_FINAL-WERKS
                            AND LGORT = IT_FINAL-LGORT.
            IF SY-SUBRC = 0.
    IF IT IS IN CALCULATE QUANTITY
              IF IT_QUAN1-SHKZG = 'S'.
                IF IT_QUAN1-ERFME = 'G'.
                  IT_QUAN1-ERFMG = IT_QUAN1-ERFMG / 1000.
                ENDIF.
                IN_QTY = IN_QTY + IT_QUAN1-ERFMG.
              ENDIF.
    IF IT IS OUT CALCULATE QUANTITY
              IF IT_QUAN1-SHKZG = 'H'.
                IF IT_QUAN1-ERFME = 'G'.
                  IT_QUAN1-ERFMG = IT_QUAN1-ERFMG / 1000.
                ENDIF.
                OUT_QTY = OUT_QTY + IT_QUAN1-ERFMG.
              ENDIF.
            ENDIF.
          ENDLOOP.
          OPEN_QUAN = IN_QTY - OUT_QTY.
          IT_FINAL-OPEN_QUAN = OPEN_QUAN.
          MODIFY IT_FINAL INDEX INDEX.
          CLEAR: IN_QTY,OUT_QTY.
          CLEAR IT_FINAL.
          CLEAR IT_QUAN1.
          CLEAR OPEN_QUAN.
          CLEAR INDEX.
        ENDLOOP.
        LOOP AT IT_FINAL.
          IT_FINAL-CLOS_QUAN = IT_FINAL-OPEN_QUAN +
                                       IT_FINAL-IN - IT_FINAL-OUT.
          MODIFY IT_FINAL INDEX SY-TABIX.
          CLEAR IT_FINAL.
        ENDLOOP.
    reward points to all helpful answers
    kiran.M

Maybe you are looking for

  • How to download adobe digital editions to my iPad?

    How do I download books in adobe digital editions from my computer to my iPad? 

  • Confused about command line syntax

    Why does (at the command prompt) java com.sisconet.mpeapi.MpeApiwork properly, and java -D . -classpath . com.sisconet.mpeapi.MpeApireturn the error: Exception in thread "main" java.lang.NoClassDefFoundError: /I would think they would basically be eq

  • Where does the iPad store passwords?

    If I need to log into a site on my Mac I can find the password in keychain access. I need to know how to access stored passwords on my iPad. My iPad is currently connected to my daughter's wifi but I need to go online with my laptop. She is not avail

  • Quark could copy and paste a para style

    Way back in Quark ±3 you could select some text, copy that para style and paste it to another paragraph. You could also select a load of paras then function click on another style and it would change the selection. Can ID do this? It was so useful! L

  • [svn] 4475: Add colorCorrection property to FxApplication.

    Revision: 4475 Author: [email protected] Date: 2009-01-09 10:47:20 -0800 (Fri, 09 Jan 2009) Log Message: Add colorCorrection property to FxApplication. Since the colorCorrection property on FxApplication is just a proxy for the Flash Player's Stage.c