Find material Stock to given date

I have been asked to customize the standard report transaction MB5L. I have created ZPROGRAM for the report. I have an input field for date to get material stock till that date.How can i calculate material stock till the given date ?

Basically you will have to use
An "historical" table with stock at end of periods
- MBEWH     Material Valuation: History
- MARDH     Material Master Storage Location Segment: History
etc.
A "flow" table for movement before last period recorded and date asked for
- MSEG/MKPF Document Segment: Material
- BSIM Secondary Index, Documents for Material
<i>(Use MSEG/MKPF for quantities and BSIM for valuations its easier than matching the two files, valuation can vary without movement in MSEG and some movement in MSEG don't reflect in accounting)</i>
Regards

Similar Messages

  • Stock of a material as on given date

    Hi all,
        Is there any function module or any BAPI to calculate the opening and closing stock of a material as on the given date, based on which a customizing report is to be developed.. There was a Transaction MB5B to know the as on date stock, but it's taking longer time to use it in customizing report.Please let me know if any BAPI or any F.module is there to find the stock of a material as on given date.
    Thanks in advance.
    Edited by: Jaya on Apr 23, 2009 9:15 AM

    Hi,
    Try to develop a report using the logic of MB5B report and minimize the selection criteria
    Regards,
    Vikas

  • Any function module to get Stock and value of material on a given date?

    Hi Friends
    Is there any function module available to get Stock/and  value of material on a given date?
    Thanks
    Harish

    Sorry I didn't elaborate the requirement.
    I am asked to develop a custom report for inventory management. For range of materials it is required to display stock and value on particular date and GRs GIs for the range.
    I need function module to use in Zreport.
    Thanks
    Harish

  • Any Standard FM  for material stocks on posting date  using  Tcode  MB5B

    Hi,
    I  need   Standard  FM  to get  material stocks on posting date  using   Tcode   :   MB5B
    Stock type  i am using  is  : Storage Location/Batch Stock
    the  Input   i am  providing  is    Material, Plant , Storage Location, selection  date From , selecDate To.
    Then   i need  to get  data  that it  provides   header  and  document  item level.
    Can u please tel me  how do i get  that  material stock data  on posting date and in which tables
    it will be populated in the database.
    ITs required  can u take view and post info
    Thanks & Regards
    sivakumar kasa
    Edited by: siva kumar kasa on Dec 21, 2010 2:30 PM
    Edited by: siva kumar kasa on Dec 22, 2010 7:15 AM

    hi Rehan,
    I have checked all settings also enhancement  but there is no as such control to restrict backposting within current period
    I think its self disipline action not to post backdated GI when GR is done on later date
    Vishal...

  • Reg :  Z report for Stock on given date

    Dear ABAP Guru's,
                                   Iam in need of urgent report inorder to find Stock on given(particular) single date but not SAP standard report.That Stock Value should match the MC.9 value.Pls help me

    Hi,
    This code may help you.
    *& Report  ZDH_ITC_STOREP
    REPORT  ZDH_ITC_STOREP.
    TABLES: T001L.
    type-pools slis.
    DATA: GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
    DATA: GT_HEADER TYPE SLIS_T_LISTHEADER.
    DATA: GS_LAYOUT TYPE SLIS_LAYOUT_ALV.
    DATA: GT_EVENTS TYPE SLIS_T_EVENT.
    TYPES: BEGIN OF TY_FINAL,
           MATNR TYPE MCHB-MATNR,
           MATDES TYPE MAKT-MAKTX,
           BATNO TYPE MCHB-CHARG,
           UMIL TYPE MCHB-CLABS,
           UCFC TYPE MCHB-CLABS,
           BMIL TYPE MCHB-CSPEM,
           BCFC TYPE MCHB-CLABS,
           TMIL TYPE MCHB-CLABS,
           TCFC TYPE MCHB-CLABS,
           END OF TY_FINAL.
    TYPES: BEGIN OF TY_MCHB,
          MATNR TYPE MCHB-MATNR,      " Material Number
          CHARG TYPE MCHB-CHARG,      " Batch Number
          CLABS TYPE MCHB-CLABS,      " Valuated Unrestricted-Use Stock
          CSPEM TYPE MCHB-CSPEM,      " Blocked Stock
          UCFC TYPE MCHB-CLABS,
          bcfc TYPE MCHB-CLABS,
          END OF TY_MCHB.
    *TYPES: BEGIN OF TY_MARA,
    *     MATNR TYPE MARA-MATNR,
    *     END OF TY_MARA.
    TYPES: BEGIN OF TY_MAKT,
         MATNR TYPE MAKT-MATNR,       " Material Number
         MAKTX TYPE MAKT-MAKTX,       " MATERIAL DESCRIPTION
         END OF TY_MAKT.
    TYPES:BEGIN OF TY_MARM,
         MATNR TYPE MARM-MATNR,       "MATERIAL NUMBER
         UMREN TYPE MARM-UMREN,       "Denominator for conversion to base units of measure
         UMREZ TYPE MARM-UMREZ,       "Numerator for Conversion to Base Units of Measure
       END OF TY_MARM.
    DATA: IT_FINAL TYPE STANDARD TABLE OF TY_FINAL,
          WA_FINAL TYPE TY_FINAL.
    DATA: IT_MCHB TYPE STANDARD TABLE OF TY_MCHB,
          WA_MCHB TYPE TY_MCHB.
    *DATA: IT_MARA TYPE STANDARD TABLE OF TY_MARA,
    *      WA_MARA TYPE TY_MARA.
    DATA: IT_MAKT TYPE STANDARD TABLE OF TY_MAKT,
          WA_MAKT TYPE TY_MAKT.
    DATA: IT_MARM TYPE STANDARD TABLE OF TY_MARM,
          WA_MARM TYPE TY_MARM.
    data: atot, btot type MCHB-CLABS.
    PARAMETERS: PA_FACT TYPE T001W-WERKS OBLIGATORY,                  "FACTORY
                PA_DATE TYPE SY-DATUM OBLIGATORY.                     "DATE
    SELECT-OPTIONS: SO_STLO FOR T001L-LGORT OBLIGATORY.               " STORAGE LOCATION
    * GETTING THE MATERIALS
    SELECT MATNR CHARG CLABS CSPEM
      FROM MCHB
      INTO TABLE IT_MCHB
      WHERE WERKS = PA_FACT
      AND LGORT IN SO_STLO.
    * GETTING THE BRAND DESCRIPTION FROM THE ABOVE SELECTED MATERIAL
    SELECT MATNR MAKTX
      FROM MAKT
      INTO TABLE IT_MAKT
      FOR ALL ENTRIES IN IT_MCHB
      WHERE MATNR = IT_MCHB-MATNR
      AND SPRAS = 'EN'.
    * GETTING THE BATCH CODE FOR THE ABOVE MATERIAL AND BRAND
    SELECT MATNR UMREN UMREZ
      FROM MARM
      INTO TABLE IT_MARM
      FOR ALL ENTRIES IN IT_MCHB
      WHERE MATNR = IT_MCHB-MATNR.
    * CALCULATING THE TOTALS OF BLOCKED AND UNRESTRICTED QTY
    LOOP AT IT_MCHB INTO WA_MCHB.
      READ TABLE IT_MARM INTO WA_MARM WITH KEY MATNR = WA_MCHB-MATNR.
      WA_MCHB-ucfc  = ( ( WA_MARM-UMREN / WA_MARM-umrez ) * wa_mchb-clabs ).
        WA_MCHB-bcfc = ( ( wa_marm-umren / wa_marm-umrez ) * wa_mchb-cspem ).
    *  WA_MCHB-ucfc = atot.
    *  WA_MCHB-bcfc = btot.
      modify IT_MCHB from WA_MCHB TRANSPORTING ucfc bcfc WHERE MATNR = WA_MCHB-MATNR.
      READ TABLE it_makt into wa_makt with key MATNR = WA_MCHB-matnr.
      WA_FINAL-matnr = WA_MCHB-MATNR.
      WA_FINAL-MATDES = wa_makt-maktx.
      WA_FINAL-BATNO = wa_mchb-CHARG.
      WA_FINAL-UMIL = wa_MCHB-CLABS.
      wa_final-UCFC = WA_MCHB-ucfc.
      wa_final-bcfc = WA_MCHB-bcfc.
      wa_final-bmil = WA_MCHB-CSPEM.
      WA_FINAL-tmil = WA_MCHB-clabs + WA_MCHB-CSPEM.
      WA_FINAL-tcfc = WA_MCHB-ucfc + WA_MCHB-bcfc.
    append wa_final to IT_FINAL.
    ENDLOOP.
    perform buildheader USING GT_HEADER[].
    PERFORM FIELDCATINIT USING GT_FIELDCAT[].
    perform alvdisplay.
    PERFORM build_layout USING GS_LAYOUT.
    *&      Form  buildheader
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM buildheader USING RT_HEADER TYPE SLIS_T_LISTHEADER..
    DATA: TP TYPE SLIS_LISTHEADER.
      DATA: TEXT(20) TYPE C,
            DT TYPE SY-DATUM.
      TP-TYP = 'H'.
      TP-INFO = 'STOCK REPORT '.
      APPEND TP TO RT_HEADER.
      CLEAR TP.
      WRITE SY-DATUM TO DT DD/MM/YYYY.
      CONCATENATE 'DATE :' DT INTO TEXT.
      TP-TYP = 'S'.
      TP-INFO = TEXT.
      APPEND TP TO RT_HEADER.
      CLEAR TP.
    ENDFORM.                    " buildheader
    *&      Form  alvdisplay
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM alvdisplay .
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
    *   I_INTERFACE_CHECK                 = ' '
    *   I_BYPASSING_BUFFER                = ' '
    *   I_BUFFER_ACTIVE                   = ' '
       I_CALLBACK_PROGRAM                 = 'ZDH_ITC_STOREP'
    *   I_CALLBACK_PF_STATUS_SET          = ' '
    *   I_CALLBACK_USER_COMMAND           = ' '
    *   I_CALLBACK_TOP_OF_PAGE            = ' '
    *   I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
    *   I_CALLBACK_HTML_END_OF_LIST       = ' '
    *   I_STRUCTURE_NAME                  =
    *   I_BACKGROUND_ID                   = ' '
    *   I_GRID_TITLE                      =
    *   I_GRID_SETTINGS                   =
       IS_LAYOUT                          = GS_LAYOUT
       IT_FIELDCAT                        = GT_FIELDCAT[]
    *   IT_EXCLUDING                      =
    *   IT_SPECIAL_GROUPS                 =
    *   IT_SORT                           =
    *   IT_FILTER                         =
    *   IS_SEL_HIDE                       =
    *   I_DEFAULT                         = 'X'
    *   I_SAVE                            = ' '
    *   IS_VARIANT                        =
    *   IT_EVENTS                         =
    *   IT_EVENT_EXIT                     =
    *   IS_PRINT                          =
    *   IS_REPREP_ID                      =
    *   I_SCREEN_START_COLUMN             = 0
    *   I_SCREEN_START_LINE               = 0
    *   I_SCREEN_END_COLUMN               = 0
    *   I_SCREEN_END_LINE                 = 0
    *   I_HTML_HEIGHT_TOP                 = 0
    *   I_HTML_HEIGHT_END                 = 0
    *   IT_ALV_GRAPHICS                   =
    *   IT_HYPERLINK                      =
    *   IT_ADD_FIELDCAT                   =
    *   IT_EXCEPT_QINFO                   =
    *   IR_SALV_FULLSCREEN_ADAPTER        =
    * IMPORTING
    *   E_EXIT_CAUSED_BY_CALLER           =
    *   ES_EXIT_CAUSED_BY_USER            =
      TABLES
        T_OUTTAB                          = IT_FINAL
    EXCEPTIONS
       PROGRAM_ERROR                     = 1
       OTHERS                            = 2
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    ENDFORM.                    " alvdisplay
    *&      Form  FIELDCATINIT
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM FIELDCATINIT USING FINIT TYPE SLIS_T_FIELDCAT_ALV.
      DATA: LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
      LS_FIELDCAT-FIELDNAME       =  'MATNR'.
      LS_FIELDCAT-SELTEXT_L       =  'MATERIAL NO'.
      LS_FIELDCAT-KEY        =  'X'.
      LS_FIELDCAT-JUST = 'L'.
      APPEND LS_FIELDCAT TO FINIT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME       =  'MATDES'.
      LS_FIELDCAT-SELTEXT_L       =  'BRAND'.
      LS_FIELDCAT-KEY        =  'X'.
      LS_FIELDCAT-JUST = 'L'.
      APPEND LS_FIELDCAT TO FINIT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME       =  'BATNO'.
      LS_FIELDCAT-SELTEXT_L       =  'BATCH NO'.
      APPEND LS_FIELDCAT TO FINIT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME       =  'UMIL'.
      LS_FIELDCAT-SELTEXT_L       =  'RESTRICTED'.
      APPEND LS_FIELDCAT TO FINIT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME       =  'UCFC'.
      LS_FIELDCAT-SELTEXT_L       =  'UCFC'.
      APPEND LS_FIELDCAT TO FINIT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME       =  'BMIL'.
      LS_FIELDCAT-SELTEXT_L       =  'BLOCKED'.
      APPEND LS_FIELDCAT TO FINIT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME       =  'BCFC'.
      LS_FIELDCAT-SELTEXT_L       =  'BCFC'.
      APPEND LS_FIELDCAT TO FINIT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME       =  'TMIL'.
      LS_FIELDCAT-SELTEXT_L       =  'TOTAL MIL'.
      APPEND LS_FIELDCAT TO FINIT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME       =  'TCFC'.
      LS_FIELDCAT-SELTEXT_L       =  'TCFC'.
      APPEND LS_FIELDCAT TO FINIT.
      CLEAR LS_FIELDCAT.
    ENDFORM.                    " FIELDCATINIT
    *&      Form  BUILDLAYOUT
    *       text
    *      -->P_GS_LAYOUT[]  text
    FORM BUILD_LAYOUT USING RS_LAYOUT TYPE SLIS_LAYOUT_ALV.
      RS_LAYOUT-NO_INPUT = 'X'.
      RS_LAYOUT-ZEBRA = 'X'.
      RS_LAYOUT-COLWIDTH_OPTIMIZE = ' '.
      RS_LAYOUT-NO_COLHEAD = ' '.
      RS_LAYOUT-NO_VLINE = ' '.
      RS_LAYOUT-INFO_FIELDNAME = 'WS_COLOR'.
    ENDFORM.
                        " BUILDLAYOUT
    HTH
    Regards,
    Dhruv Shah

  • Modification in MB5B prg...material stock between a date range

    Hi experts
    I have to modify mb5b tranx prg . presently we are using date as selection criteria..but now onwards user wants G/L account along with date as selection criteria. I created one selec-option for field HKONT type hkont-bseg. Now in select queries i need ur help ..Kindly tell me where i need to use this field in my select queries to fetch RELEVANT data.
    Regards
    Anu
    CODE:
    REPORT ZRM07MLBD NO STANDARD PAGE HEADING MESSAGE-ID M7 LINE-SIZE 280.
    ********my change*******
    tables : BSEG.
    TYPE-POOLS:  IMREP,                   " Typen Bestandsführungsreporting
                 SLIS.                    " Typen Listviewer
    INCLUDE ZRM07MLDD.
    DATA FLAG(1) TYPE C VALUE ' '.
    DATA BAL_QTY TYPE P DECIMALS 2.
    DATA BAL_AMT TYPE P DECIMALS 2.
    *include:  rm07mldd.     " reportspezifische Datendefinitionen
    "n571473
    define the selection screen here                          "n571473
    "n571473
    SELECTION-SCREEN BEGIN OF BLOCK DATABASE-SELECTION
              WITH FRAME TITLE TEXT-001.
    Text-001: Datenbankabgrenzungen
    SELECT-OPTIONS: MATNR FOR MARD-MATNR MEMORY ID MAT
                                         MATCHCODE OBJECT MAT1,
                    BUKRS FOR T001-BUKRS  MEMORY ID BUK,
                    WERKS FOR T001W-WERKS MEMORY ID WRK,
                    LGORT FOR T001L-LGORT,
                    CHARG FOR MCHB-CHARG,
                    BWTAR FOR MBEW-BWTAR,
                    BWART FOR MSEG-BWART.
    PARAMETERS SOBKZ LIKE MSEG-SOBKZ.
    SELECTION-SCREEN SKIP.
    SELECT-OPTIONS: DATUM FOR MKPF-BUDAT NO-EXTENSION,
    **********my change**************
              HKONT FOR BSEG-HKONT.
    ********END CHANGE************
    SELECTION-SCREEN END OF BLOCK DATABASE-SELECTION.
    SELECTION-SCREEN BEGIN OF BLOCK BESTANDSART
    WITH FRAME TITLE TEXT-002.
    Text-002: Bestandsart
    SELECTION-SCREEN BEGIN OF LINE.
    PARAMETERS LGBST LIKE AM07M-LGBST RADIOBUTTON GROUP BART DEFAULT 'X'.
    SELECTION-SCREEN COMMENT 4(50) TEXT-010 FOR FIELD LGBST.
    Text-010: Lagerort-/Chargenbestand
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    PARAMETERS BWBST LIKE AM07M-BWBST RADIOBUTTON GROUP BART.
    SELECTION-SCREEN COMMENT 4(50) TEXT-011 FOR FIELD BWBST.
    Text-011: bewerteter Bestand
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    PARAMETERS SBBST LIKE AM07M-SBBST RADIOBUTTON GROUP BART.
    SELECTION-SCREEN COMMENT 4(50) TEXT-012 FOR FIELD SBBST.
    Text-012: Sonderbestand
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN END OF BLOCK BESTANDSART.
    Commented By Rachit Material group Not Required
    improved definition of parameters for scope of list       "n599218
    *SELECTION-SCREEN BEGIN OF BLOCK MARA WITH FRAME TITLE TEXT-040.
    **selection-screen begin of line.
    *PARAMETERS P_MATKL LIKE MARA-MATKL.
    **selection-screen end of line.
    **SELECTION-SCREEN COMMENT 4(50) TEXT-030 for fieLD s_matkl.
    *SELECTION-SCREEN END OF BLOCK MARA.
    SELECTION-SCREEN BEGIN OF BLOCK LISTUMFANG
      WITH FRAME TITLE TEXT-003.  "Listumfang
    the following 3 parameters became obsolete do not use     "n599218
    anymor. They are still here to inform the user about      "n599218
    that he is using old variants or SUBMIT commands          "n599218
    PARAMETERS :                                                "n599218
      XONUL  LIKE AM07M-XONUL            NO-DISPLAY,            "n599218
      XVBST  LIKE AM07M-XVBST            NO-DISPLAY,            "n599218
      XNVBST LIKE AM07M-XNVBS            NO-DISPLAY.            "n599218
    7 new categories for the scope of list                    "n599218
                                                              "n599218
    cat. I docs I stock on   I    I stock on I Parameter      "n599218
         I      I start date I    I end date I                "n599218
    ---+--+--------++------+--------      "n599218
    1   I yes  I =  zero    I =  I =  zero  I pa_wdzer       "n599218
    2   I yes  I =  zero    I <> I <> zero  I pa_wdzew       "n599218
    3   I yes  I <> zero    I <> I =  zero  I pa_wdwiz       "n599218
    4   I yes  I <> zero    I <> I <> zero  I pa_wdwuw       "n599218
    5   I yes  I <> zero    I =  I <> zero  I pa_wdwew       "n599218
         I      I            I    I          I                "n599218
    6   I no   I =  zero    I =  I =  zero  I pa_ndzer       "n599218
    7   I no   I <> zero    I =  I <> zero  I pa_ndsto       "n599218
                                                              "n599218
    definition of the pushbutton : show or hide the following "n599218
    parameters for the scope of list                          "n599218
    SELECTION-SCREEN PUSHBUTTON /1(20) PB_LIU                   "n599218
                               USER-COMMAND LIU.                "n599218
                                                                "n599218
    text line : materials with movements                      "n599218
    SELECTION-SCREEN BEGIN OF LINE.                             "n599218
    SELECTION-SCREEN COMMENT 1(55) TEXT-072                     "n599218
                             MODIF ID LIU.                      "n599218
    SELECTION-SCREEN END OF LINE.                               "n599218
                                                                "n599218
    with movements / start = zero  =  end = zero              "n599218
    1   I yes  I =  zero    I =  I =  zero  I pa_wdzer       "n599218
    SELECTION-SCREEN BEGIN OF LINE.                             "n599218
    SELECTION-SCREEN POSITION 2.                                "n599218
    PARAMETERS : PA_WDZER    LIKE AM07M-MB5B_XONUL              "n599218
                             MODIF ID LIU.                      "n599218
      text-083 : no opening stock ; no closing stock          "n599218
    SELECTION-SCREEN COMMENT 5(70) TEXT-083                     "n599218
                             FOR FIELD PA_WDZER                 "n599218
                             MODIF ID LIU.                      "n599218
    SELECTION-SCREEN END OF LINE.                               "n599218
                                                                "n599218
    with movements / start = zero  =  end <> zero             "n599218
    2   I yes  I =  zero    I <> I <> zero  I pa_wdzew       "n599218
    SELECTION-SCREEN BEGIN OF LINE.                             "n599218
    SELECTION-SCREEN POSITION 2.                                "n599218
    PARAMETERS : PA_WDZEW    LIKE AM07M-MB5B_XONUL              "n599218
                             MODIF ID LIU.                      "n599218
      text-084 : no opening stock ; with closing stock        "n599218
    SELECTION-SCREEN COMMENT 5(70) TEXT-084                     "n599218
                             FOR FIELD PA_WDZEW                 "n599218
                             MODIF ID LIU.                      "n599218
    SELECTION-SCREEN END OF LINE.                               "n599218
                                                                "n599218
    with movements / start stock <> 0 / end stock = 0         "n599218
    3   I yes  I <> zero    I <> I =  zero  I pa_wdwiz       "n599218
    SELECTION-SCREEN BEGIN OF LINE.                             "n599218
    SELECTION-SCREEN POSITION 2.                                "n599218
    PARAMETERS : PA_WDWIZ    LIKE AM07M-MB5B_XONUL              "n599218
                             MODIF ID LIU.                      "n599218
      text-085 : with opening stock ; no closing stock        "n599218
    SELECTION-SCREEN COMMENT 5(70) TEXT-085                     "n599218
                             FOR FIELD PA_WDWIZ                 "n599218
                             MODIF ID LIU.                      "n599218
    SELECTION-SCREEN END OF LINE.                               "n599218
                                                                "n599218
    with movements / with start and end stocks / different    "n599218
    4   I yes  I <> zero    I <> I <> zero  I pa_wdwuw       "n599218
    SELECTION-SCREEN BEGIN OF LINE.                             "n599218
    SELECTION-SCREEN POSITION 2.                                "n599218
    PARAMETERS : PA_WDWUW    LIKE AM07M-MB5B_XONUL              "n599218
                             MODIF ID LIU.                      "n599218
      with opening stock ; with closing stock ; changed       "n599218
    SELECTION-SCREEN COMMENT 5(70) TEXT-086                     "n599218
                             FOR FIELD PA_WDWUW                 "n599218
                             MODIF ID LIU.                      "n599218
    SELECTION-SCREEN END OF LINE.                               "n599218
                                                                "n599218
    with movements / with start and end stock / equal         "n599218
    5   I yes  I <> zero    I =  I <> zero  I pa_wdwew       "n599218
    SELECTION-SCREEN BEGIN OF LINE.                             "n599218
    SELECTION-SCREEN POSITION 2.                                "n599218
    PARAMETERS : PA_WDWEW    LIKE AM07M-MB5B_XONUL              "n599218
                             MODIF ID LIU.                      "n599218
      with opening stock ; with closing stock ; non-changed   "n599218
    SELECTION-SCREEN COMMENT 5(70) TEXT-087                     "n599218
                             FOR FIELD PA_WDWEW                 "n599218
                             MODIF ID LIU.                      "n599218
    SELECTION-SCREEN END OF LINE.                               "n599218
                                                                "n599218
    text line : materials without movements                   "n599218
    SELECTION-SCREEN BEGIN OF LINE.                             "n599218
    SELECTION-SCREEN COMMENT 1(55) TEXT-073                     "n599218
                             MODIF ID LIU.                      "n599218
    SELECTION-SCREEN END OF LINE.                               "n599218
                                                                "n599218
    materials without movements / stocks = zero               "n599218
    6   I no   I =  zero    I =  I =  zero  I pa_ndzer       "n599218
    SELECTION-SCREEN BEGIN OF LINE.                             "n599218
    SELECTION-SCREEN POSITION 2.                                "n599218
    PARAMETERS : PA_NDZER    LIKE AM07M-MB5B_XONUL              "n599218
                             MODIF ID LIU.                      "n599218
      text-083 : no opening stock ; no closing stock          "n599218
    SELECTION-SCREEN COMMENT 5(70) TEXT-083                     "n599218
                             FOR FIELD PA_NDZER                 "n599218
                             MODIF ID LIU.                      "n599218
    SELECTION-SCREEN END OF LINE.                               "n599218
                                                                "n599218
    materials without movements / with start or end stock     "n599218
    7   I no   I <> zero    I =  I <> zero  I pa_ndsto       "n599218
    SELECTION-SCREEN BEGIN OF LINE.                             "n599218
    SELECTION-SCREEN POSITION 2.                                "n599218
    PARAMETERS : PA_NDSTO    LIKE AM07M-MB5B_XONUL              "n599218
                             MODIF ID LIU.                      "n599218
      with opening stock ; with closing stock ; non-changed   "n599218
    SELECTION-SCREEN COMMENT 5(70) TEXT-087                     "n599218
                             FOR FIELD PA_NDSTO                 "n599218
                             MODIF ID LIU.                      "n599218
    SELECTION-SCREEN END OF LINE.                               "n599218
                                                                "n599218
    SELECTION-SCREEN END OF BLOCK LISTUMFANG.
    SELECTION-SCREEN BEGIN OF BLOCK EINSTELLUNGEN
       WITH FRAME TITLE TEXT-068.  "Settings
    parameter for totals only - hierseq. list
    corresponding display variant
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN POSITION 1.
    PARAMETERS XSUM          LIKE AM07M-XSUM.
    SELECTION-SCREEN COMMENT 4(60) TEXT-090 FOR FIELD XSUM.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 5(30) TEXT-091 FOR FIELD PA_SUVAR.
    *Commented by Rachit
    SELECTION-SCREEN POSITION 40.
    PARAMETERS: PA_SUVAR LIKE DISVARIANT-VARIANT.
    SELECTION-SCREEN END OF LINE.
    parameter for totals only - flat list + corresponding display variant
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN POSITION 1.
    PARAMETERS PA_SUMFL LIKE AM07M-XSUM.
    SELECTION-SCREEN COMMENT 4(60) TEXT-092 FOR FIELD PA_SUMFL.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 5(30) TEXT-091 FOR FIELD PA_SFLVA.
    SELECTION-SCREEN POSITION 40.
    PARAMETERS: PA_SFLVA LIKE DISVARIANT-VARIANT.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN POSITION 1.
    PARAMETERS XCHAR LIKE AM07M-XCHRG.
    SELECTION-SCREEN COMMENT 4(50) TEXT-015 FOR FIELD XCHAR.
    Text-015: nur chargenpflichtige Materialien
    Das Kennzeichen 'xchar' bestimmt die Art der Listausgabe entweder
    auf Material- oder Chargenebene.
    SELECTION-SCREEN END OF LINE.
    the function "No reversal movements" is only         "n571473
    available from relaese 4.5B and higher               "n571473
    ( TEXT-026 : No reversal movements )                 "n571473
    SELECTION-SCREEN BEGIN OF LINE.                             "n571473
    SELECTION-SCREEN POSITION 1.                                "n571473
    PARAMETERS NOSTO LIKE AM07M-NOSTO.                          "n571473
    SELECTION-SCREEN COMMENT 4(50) TEXT-026                     "n571473
                           FOR FIELD NOSTO.                     "n571473
    SELECTION-SCREEN END OF LINE.                               "n571473
    SELECTION-SCREEN END OF BLOCK EINSTELLUNGEN.
    *Rachit
    SELECTION-SCREEN BEGIN OF BLOCK LISTE WITH FRAME TITLE TEXT-040.
    PARAMETERS: P_VARI LIKE DISVARIANT-VARIANT.
    SELECTION-SCREEN END OF BLOCK LISTE.
    HAUPTPROGRAMM *********************************
    F4-Hilfe für Reportvariante -
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_VARI.
      PERFORM F4_FOR_VARIANT.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR PA_SFLVA.
      PERFORM                    VARIANT_VALUE_REQUEST_F4
                                 USING  PA_SFLVA  G_S_VARI_SUMFL.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR PA_SUVAR.
      PERFORM                    VARIANT_VALUE_REQUEST_F4
                                 USING  PA_SUVAR G_S_VARI_SUMHQ.
    "n599218
    INITIALIZATION                                            "n599218
    "n599218
                                                                "n599218
    INITIALIZATION.
      CLEAR : G_S_VARI_SUMHQ, G_S_VARI_SUMFL.
      REPID = SY-REPID.
      VARIANT_SAVE = 'A'.
    preprae the working areas for the variants
      MOVE  : REPID              TO  G_S_VARI_SUMHQ-REPORT,
              'SUHQ'             TO  G_S_VARI_SUMHQ-HANDLE,
              REPID              TO  G_S_VARI_SUMFL-REPORT,
              'SUFL'             TO  G_S_VARI_SUMFL-HANDLE.
      MOVE-CORRESPONDING : G_S_VARI_SUMHQ  TO  G_S_VARI_SUMHQ_DEF,
                           G_S_VARI_SUMFL  TO  G_S_VARI_SUMFL_DEF.
      PERFORM  GET_THE_DEFAULT_VARIANT
                                 USING  PA_SFLVA
                                        G_S_VARI_SUMFL
                                        G_S_VARI_SUMFL_DEF.
      PERFORM  GET_THE_DEFAULT_VARIANT
                                 USING  PA_SUVAR
                                        G_S_VARI_SUMHQ
                                        G_S_VARI_SUMHQ_DEF.
      PERFORM INITIALISIERUNG.
    get the parameters from the last run                      "n547170
      PERFORM                    ESDUS_GET_PARAMETERS.          "n547170
    set flag when INITILIZATION is processed
      MOVE  'X'        TO  G_FLAG_INITIALIZATION.
    "n599218
    AT SELECTION-SCREEN                                       "n599218
    "n599218
    Prüfung der eingegebenen Selektionsparameter, -
    Berechtigungsprüfung -
    AT SELECTION-SCREEN.
    the following 3 parameters XONUL, XVBST, and XNVBST       "n599218
    became obsolete; send error when they should be filled.   "n599218
    This could be possible if the user works with old         "n599218
    selection variants or this report is launched by a        "n599218
    SUBMIT command                                            "n599218
      IF  XONUL  IS INITIAL  AND                                "n599218
          XVBST  IS INITIAL  AND                                "n599218
          XNVBST IS INITIAL.                                    "n599218
    ok, the old parameters are empty                         "n599218
      ELSE.                                                     "n599218
      text-088 : note 599218 : obsolete parameter used        "n599218
        MESSAGE E895             WITH  TEXT-088.                "n599218
      ENDIF.
    did the user hit the pushbutton "Category" ?              "n599218
      CASE     SSCRFIELDS-UCOMM.                                "n599218
        WHEN  'LIU '.                                           "n599218
        yes, the pushbutton "Category" was hit                "n599218
          IF  G_FLAG_STATUS_LIU  =  C_HIDE.                     "n599218
          show the 7 parameters on the selection srceen       "n599218
            MOVE  C_SHOW         TO  G_FLAG_STATUS_LIU.         "n599218
          ELSE.                                                 "n599218
          hide the 7 paramaters                               "n599218
            MOVE  C_HIDE         TO  G_FLAG_STATUS_LIU.         "n599218
          ENDIF.                                                "n599218
      ENDCASE.                                                  "n599218
                                                                "n599218
    go on only if the user wants to launch this report        "n599218
      CHECK : SY-UCOMM = 'ONLI'  OR                             "n599218
              SY-UCOMM = 'PRIN'  OR                             "n599218
              SY-UCOMM = 'SJOB'.                                "n599218
    only one sum function can be processed
      IF  XSUM     = 'X' AND
          PA_SUMFL = 'X'.
        SET CURSOR               FIELD 'XSUM'.
      select one sum list only
        MESSAGE  E895            WITH  TEXT-093.
      ENDIF.
      PERFORM EINGABEN_PRUEFEN.
      SET CURSOR                 FIELD 'PA_SFLVA'.
      PERFORM  VARIANT_CHECK_EXISTENCE
                                 USING     PA_SFLVA
                                           G_S_VARI_SUMFL
                                           G_S_VARI_SUMFL_DEF.
      SET CURSOR                 FIELD 'PA_SUVAR'.
      PERFORM  VARIANT_CHECK_EXISTENCE
                                 USING     PA_SUVAR
                                           G_S_VARI_SUMHQ
                                           G_S_VARI_SUMHQ_DEF.
    check whether FI summarization is active and other        "n547170
    restrictions could deliver wrong results                  "n547170
      PERFORM                    F0800_CHECK_RESTRICTIONS.      "n547170
    - the user wants to surpress the reversal movements :     "n497992
      process warning M7 392                                  "n497992
      IF NOT NOSTO IS INITIAL.                                  "n497992
      emerge warning ?                                        "n497992
        CALL FUNCTION            'ME_CHECK_T160M'               "n497992
            EXPORTING                                           "n497992
              I_ARBGB          = 'M7'                           "n497992
              I_MSGNR          = '392'                          "n497992
            EXCEPTIONS                                          "n497992
              NOTHING          = 0                              "n497992
              OTHERS           = 1.                             "n497992
                                                                "n497992
        IF SY-SUBRC <> 0.                                       "n497992
          SET CURSOR               FIELD  'NOSTO'.              "n497992
          to surpress the reversal movements could cause ...  "n497992
          MESSAGE                  W392.                        "n497992
        ENDIF.                                                  "n497992
      ENDIF.                                                    "n497992
    carry out special authotity check for the tax auditor     "n547170
      PERFORM                    TPC_CHECK_TAX_AUDITOR.         "n547170
    does the user wants a selection via company code or a plant ?
    fill range table g_ra_werks
      REFRESH : G_RA_BWKEY,  G_RA_WERKS, G_T_ORGAN.
      CLEAR   : G_RA_BWKEY,  G_RA_WERKS, G_T_ORGAN, G_S_ORGAN.
      REFRESH : G_0000_RA_BWKEY,  G_0000_RA_WERKS,  G_0000_RA_BUKRS.
      CLEAR   : G_0000_RA_BWKEY,  G_0000_RA_WERKS,  G_0000_RA_BUKRS.
      DESCRIBE TABLE  BUKRS      LINES  G_F_CNT_LINES_BUKRS.
      DESCRIBE TABLE  WERKS      LINES  G_F_CNT_LINES_WERKS.
      IF  G_F_CNT_LINES_BUKRS  > 0  OR
          G_F_CNT_LINES_WERKS  > 0.
      fill range tables for the CREATION OF TABLE G_T_ORGAN
        MOVE : WERKS[]           TO  G_0000_RA_WERKS[],
               BUKRS[]           TO  G_0000_RA_BUKRS[].
        PERFORM  F0000_CREATE_TABLE_G_T_ORGAN
                                 USING  C_ERROR.
      ENDIF.
    save the parameters of this run                           "n547170
      PERFORM                    ESDUS_SAVE_PARAMETERS.         "n547170
    "n599218
    AT SELECTION-SCREEN OUTPUT                                "n599218
    "n599218
                                                                "n599218
    AT SELECTION-SCREEN OUTPUT.                                 "n599218
                                                                "n599218
      IF  G_FLAG_INITIALIZATION IS INITIAL.                     "n599218
      the process time INITIALIZATION was not done, so        "n599218
      carry out the functions here                            "n599218
        MOVE  'X'                TO G_FLAG_INITIALIZATION.      "n599218
                                                                "n599218
        PERFORM                  INITIALISIERUNG.               "n599218
                                                                "n599218
      get the parameters from the last run                    "n599218
        PERFORM                  ESDUS_GET_PARAMETERS.          "n599218
      ENDIF.                                                    "n599218
                                                                "n599218
    how to handle the 7 paramaters for the scope of list ?    "n599218
      LOOP AT SCREEN.                                           "n599218
      modify the selection screen                             "n599218
        CASE    SCREEN-GROUP1.                                  "n599218
          WHEN  'LIU'.                                          "n599218
            IF  G_FLAG_STATUS_LIU  = C_SHOW.                    "n599218
              SCREEN-ACTIVE = '1'.         "show parameters     "n599218
            ELSE.                                               "n599218
              SCREEN-ACTIVE = '0'.         "Hide parameters     "n599218
            ENDIF.                                              "n599218
                                                                "n599218
            MODIFY SCREEN.                                      "n599218
        ENDCASE.                                                "n599218
      ENDLOOP.                                                  "n599218
                                                                "n599218
    adapt the icon on the pushbutton depending on the status  "n599218
      CASE    G_FLAG_STATUS_LIU.                                "n599218
        WHEN  C_HIDE.                                           "n599218
          MOVE  TEXT-081         TO  PB_LIU.  "@0EQ@ Scope ... "n599218
        WHEN  C_SHOW.                                           "n599218
          MOVE  TEXT-082         TO  PB_LIU.  "@0HQ@ Scope ... "n599218
        WHEN  OTHERS.                                           "n599218
      ENDCASE.                                                  "n599218
                                                                "n599218
    "n599218
    START-OF-SELECTION
    START-OF-SELECTION.
    *SET PF-STATUS 'TEST'.
    create the title line
    If no date is given at all, the range is set to the maximum
    extend (1.1.0000 - 31.12.9999).
    If only datum-low is set, it is interpreted as the day for
    which the analysis is wanted --> datum-high is filled up.
      IF DATUM-LOW IS INITIAL.
        DATUM-LOW = '00000101'.
        IF DATUM-HIGH IS INITIAL.
          DATUM-HIGH = '99991231'.
        ENDIF.
      ELSE.
        IF DATUM-HIGH IS INITIAL.
          DATUM-HIGH = DATUM-LOW.
        ENDIF.
      ENDIF.
      MOVE: DATUM-LOW(4)    TO JAHRLOW,
            DATUM-LOW+4(2)  TO MONATLOW,
            DATUM-LOW+6(2)  TO TAGLOW,
            DATUM-HIGH(4)   TO JAHRHIGH,
            DATUM-HIGH+4(2) TO MONATHIGH,
            DATUM-HIGH+6(2) TO TAGHIGH.
      SET TITLEBAR 'MAN'
      WITH TAGLOW MONATLOW JAHRLOW TAGHIGH MONATHIGH JAHRHIGH.
    create the headlines using the titelbar                   "n599218
      PERFORM                    CREATE_HEADLINE.               "n599218
    calculate the offsets for the list header
      PERFORM                    CALCULATE_OFFSETS.
    for the representation of tied empties                    "n547170
      PERFORM                    F0700_PREPARE_TIED_EMPTIES.    "n547170
    create table g_t_mseg_fields with the names of all
    wanted fields from MSEG and MKPF
      PERFORM                    F0300_GET_FIELDS.
    set a break-point : is IS-OIL active ?                    "n599218 A
                                                                "n599218 A
    check whether this is a IS-OIL system                     "n599218 A
      PERFORM                    CHECK_IS_OIL_SYSTEM.           "n599218 A
                                                                "n599218 A
      IF  G_FLAG_IS_OIL_ACTIVE = 'X'.           "IS-OIL ?       "n599218 A
      the 2 IS-OIL specific data fields will be inserted into "n599218 A
      working table G_T_MSEG_FIELDS. Then these fields will   "n599218 A
      transported from database table MSEG, too               "n599218 A
        APPEND  'MSEG~OIGLCALC'  TO  G_T_MSEG_FIELDS.           "n599218 A
        APPEND  'MSEG~OIGLSKU'   TO  G_T_MSEG_FIELDS.           "n599218 A
      ENDIF.                                                    "n599218 A
    create the ALV fieldcatalog for the main list always
      MOVE  'G_T_BELEGE'         TO  G_F_TABNAME.
      PERFORM                    F0400_CREATE_FIELDCAT.
    do not print the ALV-statistics and selection criteria
      CLEAR                      G_S_PRINT.
      G_S_PRINT-NO_PRINT_SELINFOS   = 'X'.
      G_S_PRINT-NO_PRINT_LISTINFOS = 'X'."
    create the range table for the storage location
      PERFORM                    F0600_CREATE_RANGE_LGORT.
    - show the current activity and the progress              "n599218
      CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'                 "n599218
        EXPORTING                                               "n599218
          TEXT = TEXT-063.       "Reading current stocks        "n599218
    get the stock tables
      PERFORM                    AKTUELLE_BESTAENDE.
      PERFORM TABELLEN_LESEN.
    - show the current activity and the progress              "n599218
      CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'                 "n599218
        EXPORTING                                               "n599218
          TEXT = TEXT-064.       "Reading MM documents          "n599218
      PERFORM                    F1000_SELECT_MSEG_MKPF.
      PERFORM                    BELEGSELEKTION.
    END-OF-SELECTION
    END-OF-SELECTION.
    results of all the autority checks
      PERFORM                    F9100_AUTH_PLANT_RESULT.
    - show the current activity and the progress              "n599218
      IF BWBST = 'X'.                                           "n599218
        CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'               "n599218
          EXPORTING                                             "n599218
            TEXT = TEXT-066.     "Calculating Stocks and Values "n599218
      ELSE.                                                     "n599218
        CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'               "n599218
          EXPORTING                                             "n599218
            TEXT = TEXT-067.     "Calculating Stocks            "n599218
      ENDIF.                                                    "n599218
      PERFORM SUMMEN_BILDEN.
      PERFORM BESTAENDE_BERECHNEN.
      PERFORM LISTUMFANG.
    - show the current activity and the progress              "n599218
      CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'                 "n599218
        EXPORTING                                               "n599218
          TEXT = TEXT-065.       "Preparing list output         "n599218
    stop if table bestand is empty
      LOOP AT BESTAND.
        SELECT SINGLE MATKL FROM MARA INTO CORRESPONDING FIELDS OF BESTAND
        WHERE
         MATNR = BESTAND-MATNR.
        MODIFY BESTAND INDEX SY-TABIX.
      ENDLOOP.
      DESCRIBE TABLE BESTAND     LINES G_F_CNT_LINES.
      IF  G_F_CNT_LINES IS INITIAL.
      Keinen Eintrag zu den Suchbegriffen gefunden/selektiert
        MESSAGE                  S083.
      perform                  anforderungsbild.
      ELSE.
      process log function if the use is a tax auditor        "n555246
      and the database selection was successful               "n555246
        IF  G_FLAG_TPCUSER = '1'.                               "n555246
          PERFORM                TPC_WRITE_LOG.                 "n555246
        ENDIF.                                                  "n555246
        PERFORM FELDGRUPPEN_AUFBAUEN.
      sort table with header data per material
        IF BWBST IS INITIAL.
          SORT BESTAND BY MATNR WERKS CHARG.
        ELSE.
          SORT BESTAND BY MATNR BWKEY.
        ENDIF.
      which function does the user want ?
        IF      XSUM = 'X'.
        hierseq. alv with sums
          PERFORM                CREATE_TABLE_TOTALS_HQ.
          PERFORM                CREATE_FIELDCAT_TOTALS_HQ.
          PERFORM                ALV_HIERSEQ_LIST_TOTALS.
        ENDIF.
        IF FLAG NE 'X'.
          IF PA_SUMFL = 'X'.
       elseif  pa_sumfl = 'X'.
        show the sums only in a flat ALV
            PERFORM                CREATE_TABLE_TOTALS_FLAT.
            PERFORM                CREATE_FIELDCAT_TOTALS_FLAT.
            PERFORM                ALV_FLAT_LIST_SUMS_ONLY.
          ELSE.
        display the full list using the APPEND ALV
         PERFORM                BESTAENDE_AUSGEBEN.
          ENDIF.
        ENDIF.
        FLAG = ' '.
      ENDIF.
      CLEAR: G_T_MSEG_LEAN, G_T_BSIM_LEAN, BESTAND.             "n443935
    *&   PF_STATUS_SET_TOTALS
    FORM PF_STATUS_SET_TOTALS                                   "#EC CALLED
                       USING     EXTAB TYPE SLIS_T_EXTAB.
      SET PF-STATUS 'STANDARD'   EXCLUDING EXTAB.
    ENDFORM.                     "PF_STATUS_SET_TOTALS
       user_parameters_save
    FORM USER_PARAMETERS_SAVE.
      GET PARAMETER ID 'BUK'     FIELD  G_SAVE_PARAMS-BUKRS.
      GET PARAMETER ID 'WRK'     FIELD  G_SAVE_PARAMS-WERKS.
      GET PARAMETER ID 'MAT'     FIELD  G_SAVE_PARAMS-MATNR.
      GET PARAMETER ID 'CHA'     FIELD  G_SAVE_PARAMS-CHARG.
      GET PARAMETER ID 'BLN'     FIELD  G_SAVE_PARAMS-BELNR.
      GET PARAMETER ID 'BUK'     FIELD  G_SAVE_PARAMS-BUKRS.
      GET PARAMETER ID 'GJR'     FIELD  G_SAVE_PARAMS-GJAHR.
    ENDFORM.                     "user_parameters_save
       user_parameters_restore
    FORM USER_PARAMETERS_RESTORE.
      SET PARAMETER ID 'BUK'     FIELD  G_SAVE_PARAMS-BUKRS.
      SET PARAMETER ID 'WRK'     FIELD  G_SAVE_PARAMS-WERKS.
      SET PARAMETER ID 'MAT'     FIELD  G_SAVE_PARAMS-MATNR.
      SET PARAMETER ID 'CHA'     FIELD  G_SAVE_PARAMS-CHARG.
      GET PARAMETER ID 'BLN'     FIELD  G_SAVE_PARAMS-BELNR.
      GET PARAMETER ID 'BUK'     FIELD  G_SAVE_PARAMS-BUKRS.
      GET PARAMETER ID 'GJR'     FIELD  G_SAVE_PARAMS-GJAHR.
    ENDFORM.                     "user_parameters_restore
    *&   USER_COMMAND_TOTALS
    FORM USER_COMMAND_TOTALS                                    "#EC CALLED
                       USING     R_UCOMM     LIKE  SY-UCOMM
                                 RS_SELFIELD TYPE  SLIS_SELFIELD.
      CLEAR                      G_S_BESTAND_KEY.
      CASE R_UCOMM.
        WHEN '&GRPT'.
          SORT BESTAND BY BWKEY MATKL.
          FLAG = 'X'.
          PERFORM GRP_TOTAL(ZGRP_TOTAL) TABLES BESTAND.
          IF FLAG = 'X'.
            EXIT.
          ENDIF.
        WHEN '&STR'.
          IF BWBST = 'X'.
            IF FLAG = 'X'.
        clear: LGBST,BWBST ,SBBST.
          PERFORM GRP_TOTAL(ZGRP_TOTAL1) TABLES BESTAND.
              SUBMIT ZRM07MLBD2 WITH  LGBST = 'X'
                               WITH WERKS = '1000'
                               WITH BUKRS = '1001'
                               WITH XSUM = 'X'
                               WITH PA_WDZER =  PA_WDZER
                               WITH PA_WDZEW = PA_WDZEW
                               WITH PA_WDWIZ = PA_WDWIZ
                               WITH PA_WDWUW = PA_WDWUW
                               WITH PA_WDWEW = PA_WDWEW
                               WITH PA_NDZER = PA_NDZER
                               WITH PA_NDSTO = PA_NDSTO
                               WITH LGORT IN LGORT
                               WITH DATUM IN DATUM
                               WITH MATNR IN MATNR VIA SELECTION-SCREEN
                                                       AND RETURN.
              CLEAR:      LGBST.
            ELSE.
              MESSAGE E345(0) WITH 'First see the grp total'.
            ENDIF.
          ELSE.
            MESSAGE E345(0) WITH 'Stock type chosen was not valuated'.
          ENDIF.
    Quarter Ending----
        WHEN '&QTRE'.
          TYPES: BEGIN OF TY_MTART,
                  MATNR LIKE MARA-MATNR,
                  MTART LIKE MARA-MTART,
                 END OF TY_MTART.
          DATA: L_REC_QTY TYPE P DECIMALS 3,
                L_ISS_QTY TYPE P DECIMALS 3,
                L_REC_AMT TYPE P DECIMALS 3,
                L_ISS_AMT TYPE P DECIMALS 3,
                L_OTHERS_QTY TYPE P DECIMALS 3,
                L_SALE_QTY TYPE P DECIMALS 3,
                L_SALE_AMT TYPE P DECIMALS 3,
                L_OTHERS_AMT TYPE P DECIMALS 3.
          DATA: IT_MAKT TYPE STANDARD TABLE OF MAKT WITH HEADER LINE,
                IT_T023T TYPE STANDARD TABLE OF T023T WITH HEADER LINE,
                IT_T134 TYPE STANDARD TABLE OF T134T WITH HEADER LINE.
          DATA: IT_MTART TYPE STANDARD TABLE OF TY_MTART WITH HEADER LINE.

    Dear Experts,
    Thanks all for the reply.
    I have followed the OSS notes 194788
    Only enter the selection criteria which are required for the selection of the stock management unit for which the opening stock balance and closing stock should be determined.
    In MB5B I key in selection criteria which are :
    material number : xxxxxx
    company code : 1000
    plant : 1500
    batch : xxxxxx
    special stock indicator : orders on hand
    selection date : 01.08.2009 to current date
    stock type :special stock
    and the result comes out :
    there is initial balance of 3000 kg on 01.08.2009 - INCORRECT ( our team never enter this initial balance but still came out )
    therefore the stock of current date also WRONG
    if the total stock is adjusted using stock take , the accounting journal will be created, and reduce the financial asset with the same amount of 3000 kg (WRONG EFFECT)
    how to solve this issue without affecting the accounting journal ?
    Thanks
    Pauline

  • Find opening stock as on date storage locationwise.

    Hi,
      Whether below mentioned logic is correct to find out storage locationwise stock.If its wrong please reply.
    TABLES : WB2_V_MKPF_MSEG2,MACKW.
      RANGES : O_DATE FOR SY-DATUM.
      DATA : BEGIN OF ITAB OCCURS 0.
            INCLUDE STRUCTURE WB2_V_MKPF_MSEG2.
      DATA : MTART TYPE MACKW-MTART.
      DATA : END OF ITAB.
      DATA : BEGIN OF IT_COL OCCURS 0,
               MATNR_I TYPE WB2_V_MKPF_MSEG2-MATNR_I,
               LGORT_I TYPE WB2_V_MKPF_MSEG2-LGORT_I,
               MENGE_I TYPE WB2_V_MKPF_MSEG2-MENGE_I,
               MEINS_I TYPE WB2_V_MKPF_MSEG2-MEINS_I,
               LGOBE TYPE T001L-LGOBE,
           END OF IT_COL.
      SELECT-OPTIONS:  S_BUKRS FOR WB2_V_MKPF_MSEG2-BUKRS_I,
                     S_WERKS FOR WB2_V_MKPF_MSEG2-WERKS_I,
                     S_MATNR FOR WB2_V_MKPF_MSEG2-MATNR_I,
                     S_MTART FOR MACKW-MTART,
                     S_BUDAT FOR WB2_V_MKPF_MSEG2-BUDAT
                     NO-EXTENSION NO INTERVALS.
    O_DATE-SIGN = 'I'.
    O_DATE-OPTION = 'BT'.
    O_DATE-LOW = '19780218'.
    O_DATE-HIGH = S_BUDAT-LOW - 1.
    APPEND O_DATE.
    START-OF-SELECTION.
    SELECT * FROM WB2_V_MKPF_MSEG2 AS A INNER JOIN MACKW
       AS B ON B~MATNR = A~MATNR_I AND B~WERKS = A~WERKS_I
       INTO CORRESPONDING FIELDS OF TABLE ITAB WHERE
       A~MATNR_I IN S_MATNR AND A~WERKS_I IN S_WERKS AND
       A~BUKRS_I IN S_BUKRS AND
       A~BUDAT IN O_DATE AND
       B~MTART IN S_MTART.
      SORT ITAB BY  BUDAT WERKS_I MTART  MATNR_I .
      LOOP AT ITAB.
        IF ITAB-SHKZG_I = 'H'.
          ITAB-MENGE_I = ITAB-MENGE_I * -1.
        ENDIF.
        MODIFY ITAB.
      ENDLOOP.
    LOOP AT ITAB.
        MOVE : ITAB-MATNR_I TO IT_COL-MATNR_I,
               ITAB-LGORT_I TO IT_COL-LGORT_I,
               ITAB-MENGE_I TO IT_COL-MENGE_I.
        COLLECT IT_COL.
      ENDLOOP.
    LOOP AT IT_COL.
    WRITE : / IT_COL-LGORT_I,IT_COL-MATNR_I,IT_COL-MENGE_I.
    ENDLOOP.
    Regards,
    Bathri.
    Edited by: Bathrinath Sankaranarayanan on Jun 5, 2009 7:36 PM
    Edited by: Bathrinath Sankaranarayanan on Jun 5, 2009 7:38 PM
    Moderator message - Please ask a specific question - like I expect results that look like this, but I get this. You are the one that can test this. People on the forum can't do much more than desk check your code for you.
    Post locked
    Edited by: Rob Burbank on Jun 5, 2009 1:41 PM

    Sure - write a program.
    Rob

  • Help needed in finding max of a given dates

    I have stored a list of dates in an arraylist.
    I need to find the maximum or the latest date from the list.

    This "feature" was not documented (at least I haven't seen one for the last few months) and has been abused by some retard(s?) for CSS injection, so Sun chose to fix it by removing it ...

  • Finding epoch seconds for given date.

    Hi,
    I could able to find out the epoch seconds for particular date in linux using
    date -d 'Apr 2 2005 15:31:17' '+%s'
    But I am looking for the commands in solaris which does the same work.
    I will be thank full if some one could help me.
    I tried to do manual......but epoch seconds that I get are differing..
    I found following snippet in mktime function
    556 unsigned long
    557 mktime(const unsigned int year0, const unsigned int mon0,
    558 const unsigned int day, const unsigned int hour,
    559 const unsigned int min, const unsigned int sec)
    560 {
    561 unsigned int mon = mon0, year = year0;
    562
    563 /* 1..12 -> 11,12,1..10 */
    564 if (0 >= (int) (mon -= 2)) {
    565 mon += 12; /* Puts Feb last since it has leap day */
    566 year -= 1;
    567 }
    568
    569 return ((((unsigned long)
    570 (year/4 - year/100 + year/400 + 367*mon/12 + day) +
    571 year*365 - 719499
    572 )*24 + hour /* now have hours */
    573 )*60 + min /* now have minutes */
    574 )*60 + sec; /* finally seconds */
    575 }
    but could not make out why 367*mon/12.....instead of 365, I could not locate
    the position where previous months days in this year added.
    Is 719499 is number of days from 0th year to 1970 ?
    Thank you,
    Sateesh.

    Hi Darren,
    Regarding the first option of OS command
    date ...'+%s' works in linux only. It will not
    work in Solaris. So if I get some command in solaris
    which does same work it will be great.Most distributions that use a Linux kernel distribute the gnu 'date' program. That program works the same on Solaris as it does on Linux. That's why I suggested it to you earlier.
    # /build/coreutils-5.93/bin/date '+%s'
    1177951907
    # uname -rsv
    SunOS 5.8 Generic_117350-43
    Darren

  • Bapi for customer wise material stock on date

    hi all,
    is there any bapi to find customer wise material stock as on date.as logic as MB5B

    Hi Kumar,
    MB5B is a report RM07MLBD  u can copy it to Z, do the logic as you required.. instead of searching for new.. & buliding the logic from the scratch..  so that u will get all the Functionality of MB5B
    Regards

  • Table for Stock on Specific Date in the Past.

    Hi ..,
    Please give me the Name of the Table to find the stock on Specific Date for a given material in the Past. like the T.code we use MB5B.
    regards.

    Hi
    MB5B uses a list of tables & logic to get the Stock for a particular posting date.
    if you want the stock run this report in your Z- report & export the Values to your Z-report & use them accordingly.
    Hope this helps
    Thanks & Regards
    Kishore

  • FM To Find Opening Stock

    Is There Any FM To Find Opening Stock in Given Date

    Hi Sreedhar,
    Check BAPI_MATERIAL_AVAILABILITY.
    This function needs to imput Plant, Material number, Unit (usually ST) and Check rule (this is comming from customizing).
    You need to append first entry into WMDVSX table with REQ_DATE = your datum to which you need to know how many
    stocks are confirmed by Disposition. After executing you just read the first entry in the table WMDVEX, in the field
    COM_QTY you can find the quantity confirmed. This works in many of our programs well

  • How To Find Opening Stock And Value For a Material

    Hi Experts,
    How To Find Opening Stock And Value For a Material  in Given Dates
    Moderator Message: Search.
    Edited by: kishan P on Sep 15, 2010 4:05 PM

    Thanks For Answering.....
    But I Need Any Function Module To Get Opening Stock And Value For Given Material With in Dates.

  • Stock report with value and qauntity for given date not month wise

    Hi gems,
    can any body give me the standard report for Stock value and qauntity for given date not month wise at storage location level

    Hi
    check the report S_P00_07000139 with the option inventory and raw material report- detail and selection date (from, to date same). List will give opening & closing balances with goods movment and their values.
    Thanks

  • How to get a opening stock of a material on a particular date

    Hi,
    Could you pls provide me the logic of how to get the opening stock of the material on a particular date. I searched the forum and found the logic to fetch the closing stock at a given period but not for a date.
    An immediate response would be really appreciated.
    Thanks
    Harris

    Dear,
    Please read following part of my code
    FORM GET_OPENING .
       IF IT_FINAL[] IS NOT INITIAL.
         SELECT *  FROM MARD
           INTO CORRESPONDING FIELDS OF TABLE IT_MARD
           FOR ALL ENTRIES IN IT_FINAL
           WHERE MATNR = IT_FINAL-MATNR
           AND   WERKS = '1000'.
         SELECT A~MBLNR A~MJAHR A~BUDAT B~WAERS B~ZEILE B~BWART B~MATNR B~WERKS B~LGORT B~CHARG B~SHKZG B~MENGE B~MEINS B~BUSTM B~XAUTO
           INTO CORRESPONDING FIELDS OF TABLE IT_MKPF
           FROM  MKPF AS A JOIN MSEG AS B
           ON A~MANDT = B~MANDT
           AND A~MBLNR = B~MBLNR
           AND A~MJAHR = B~MJAHR
           FOR ALL ENTRIES IN IT_FINAL
           WHERE B~MATNR = IT_FINAL-MATNR
           AND   A~BUDAT GE P_BUDAT-LOW
           AND   B~WERKS = '1000'.
       ENDIF.
       AKTDAT = SY-DATLO + 30.
       IF NOT ( P_BUDAT-HIGH IS INITIAL OR P_BUDAT-HIGH > AKTDAT ).
         LOOP AT IT_MKPF INTO WA_MKPF WHERE BUDAT > P_BUDAT-HIGH.
           MOVE-CORRESPONDING WA_MKPF TO IT_MKPF1.
           APPEND IT_MKPF1.
           DELETE IT_MKPF.
         ENDLOOP.
       ENDIF.
       SORT IT_MKPF1 BY WERKS MATNR SHKZG.
       LOOP AT IT_MKPF1.
         IF ( IT_MKPF1-XAUTO IS INITIAL ) OR
             ( IT_MKPF1-BUSTM <> 'MA02' AND  IT_MKPF1-BUSTM <> 'MA05' ) .
           MOVE-CORRESPONDING IT_MKPF1 TO IT_MAT.
           COLLECT IT_MAT.
         ELSE.
           DELETE IT_MKPF1.
         ENDIF.
       ENDLOOP.
       SORT IT_MKPF BY WERKS MATNR SHKZG DESCENDING.
       LOOP AT IT_MKPF INTO WA_MKPF.
         IF ( WA_MKPF-XAUTO IS INITIAL ) OR
            ( WA_MKPF-BUSTM <> 'MA02' AND
            WA_MKPF-BUSTM <> 'MA05' ).
           MOVE-CORRESPONDING WA_MKPF TO T_MAT.
           COLLECT T_MAT.
         ELSE.
           DELETE IT_MKPF.
         ENDIF.
       ENDLOOP.
       LOOP AT IT_MARD.
         CLEAR IT_MAT-MENGE.
         MOVE-CORRESPONDING IT_MARD TO FINAL.
         READ TABLE IT_MAT WITH KEY WERKS = IT_MARD-WERKS
                                    LGORT = IT_MARD-LGORT
                                    MATNR = IT_MARD-MATNR
                                    SHKZG = 'S'.
         FINAL-ENDMENGE = IT_MARD-LABST + IT_MARD-INSME + IT_MARD-SPEME + IT_MARD-EINME + IT_MARD-RETME - IT_MAT-MENGE.
         CLEAR IT_MAT-MENGE.
         READ TABLE IT_MAT WITH KEY WERKS = IT_MARD-WERKS
                                    LGORT = IT_MARD-LGORT
                                    MATNR = IT_MARD-MATNR
                                    SHKZG = 'H'.
         FINAL-ENDMENGE = FINAL-ENDMENGE + IT_MAT-MENGE.
         COLLECT FINAL.
       ENDLOOP.
       LOOP AT FINAL.
         CLEAR T_MAT-MENGE.
         READ TABLE T_MAT WITH KEY WERKS = FINAL-WERKS
                                    MATNR = FINAL-MATNR
                                    SHKZG = 'S'.
         MOVE T_MAT-MENGE TO FINAL-SOLL.
         CLEAR T_MAT-MENGE.
         READ TABLE T_MAT WITH KEY WERKS = FINAL-WERKS
                                    MATNR = FINAL-MATNR
                                    SHKZG = 'H'.
         MOVE T_MAT-MENGE TO FINAL-HABEN.
         FINAL-ANFMENGE = FINAL-ENDMENGE - FINAL-SOLL + FINAL-HABEN.
         MODIFY FINAL.
       ENDLOOP.
       LOOP AT FINAL.
         WA_FINAL1-MATNR = FINAL-MATNR.
         WA_FINAL1-MEINS = FINAL-MEINS.
         WA_FINAL1-OP_MENGE = FINAL-ANFMENGE.
         WA_FINAL1-RE_MENGE = FINAL-SOLL.
         WA_FINAL1-IS_MENGE = FINAL-HABEN.
         WA_FINAL1-CL_MENGE = FINAL-ENDMENGE.
    *  WA_FINAL-LGORT = FINAL-LGORT.
    *    READ TABLE IT_MAKT WITH KEY MATNR = FINAL-MATNR.
    *    MOVE IT_MAKT-MAKTX TO WA_FINAL-MAKTX.
         APPEND WA_FINAL1 TO IT_FINAL1.
       ENDLOOP.
    ENDFORM.                    " GET_OPENING

Maybe you are looking for

  • Oracle9i installation error on Redhat 9

    Dear all, I'm trying to install oracle9i(9.2.0.1) on redhat, after a few second the installer does nothing. I check the log file, it shows : java.lang.UnsatisfiedLinkError: /tmp/OraInstall2003-05-01_11-59-11AM/libactionUnix22.so: /tmp/OraInstall2003-

  • User-Exit/Badi for F-47/F-58

    Hi All, I have a developed a custom workflow for f-47 (vendor down payment request). Now whenever the document is approved/rejected the status is stored in a custom ztable. This document is posted in f-58. My requirement is whenver the document is re

  • Pages tear when scrolling

    I have been having odd things happen when scolling, only starting in the last week or so. When I scroll down the page, I get partway down and then the upper part stops scrolling and the lower part scrolls under it. The opposite thing happens if I scr

  • Unable to view conversation pictures in specific c...

    Using the newest version of Skype (7.0.0.102), in most group conversations, I am able to change the concersation picture and have it update immediately. However, in others, attempting to change the picture results in no change on my end. One user in

  • Humanworkflow callback to different process

    Hi All, I have come up with a requirement I am runing on SOA 10.1.1.3.3 I have BPELProcess1 which call BPELProcess2 In BPELProcess2, we create human tasks with its parent process( BPELProcess1) details that means we modify below copy rules in *<taskn