‎2006 Sep 08 12:25 PM
Hi All,
My requirement is to calculate the open stock of a given part number in all the plants. I was told that the MMBE transaction in SAP can give me the data. So, I was searching for a function module or Bapi which could get this data which I can call in my program. Can anyone help me out?? Thanks.
‎2006 Sep 08 12:27 PM
‎2006 Sep 08 12:27 PM
‎2006 Sep 08 12:28 PM
‎2006 Sep 08 12:29 PM
as per my knowledge these is no such FMs or BAPI.
but u can put logic on table MARDMSEGMKPF.
Regards
Prabhu
‎2006 Sep 08 12:30 PM
‎2006 Sep 08 12:30 PM
‎2006 Sep 08 12:30 PM
Hi Mohan,
You can try this code..with slight modifications.. (to work for all PLANTS)
Regards,
Raj
FUNCTION ZMM_ISSUES_PER_YEAR_POWER.
*"----
""Local interface:
*" IMPORTING
*" REFERENCE(I_MATNR) LIKE MARA-MATNR
*" REFERENCE(I_PLANT) LIKE T001W-WERKS
*" REFERENCE(I_GJAHR) LIKE MSEG-GJAHR
*" EXPORTING
*" REFERENCE(E_STK_OPBAL) LIKE BSIM-MENGE
*" REFERENCE(E_STK_VAL) LIKE BSIM-DMBTR
*"----
DATA : V_STK_OPBAL LIKE BSIM-MENGE,
V_STK_VAL LIKE BSIM-DMBTR,
V_GJAHR LIKE MSEG-GJAHR.
DATA : BEGIN OF IT_BSIM OCCURS 0,
MATNR LIKE BSIM-MATNR,
SHKZG LIKE BSIM-SHKZG,
MENGE LIKE BSIM-MENGE,
DMBTR LIKE BSIM-DMBTR,
END OF IT_BSIM.
TYPES: BEGIN OF ST_MSEG,
MATNR LIKE MSEG-MATNR,
SHKZG LIKE MSEG-SHKZG,
MENGE LIKE MSEG-MENGE,
DMBTR LIKE MSEG-DMBTR,
BWART LIKE MSEG-BWART,
LGORT LIKE MSEG-LGORT,
END OF ST_MSEG.
DATA : IT_MSEG TYPE ST_MSEG OCCURS 0 WITH HEADER LINE,
TMP_MSEG TYPE ST_MSEG OCCURS 0 WITH HEADER LINE.
DATA : BEGIN OF IT_MBEW OCCURS 0,
MATNR LIKE MBEW-MATNR,
LBKUM LIKE MBEW-LBKUM,
SALK3 LIKE MBEW-SALK3,
END OF IT_MBEW.
*V_KEYDT = I_KEYDT + 1.
SELECT MATNR
SHKZG
SUM( MENGE )
SUM( DMBTR )
INTO TABLE IT_BSIM
FROM BSIM
WHERE MATNR EQ I_MATNR
AND BWKEY EQ I_PLANT
AND GJAHR EQ I_GJAHR
AND BLART IN ('RE','WE','WA','PR')
GROUP BY MATNR SHKZG.
*SELECT MATNR
SUM( LBKUM )
SUM( SALK3 )
INTO TABLE IT_MBEW
FROM MBEW
WHERE MATNR EQ I_MATNR
AND BWKEY EQ I_PLANT
AND VPRSV EQ 'V'
AND BWTAR EQ ''
GROUP BY MATNR VPRSV.
SELECT A~MATNR
A~SHKZG
SUM( A~MENGE )
SUM( A~DMBTR )
A~BWART
A~LGORT
INTO TABLE IT_MSEG
FROM MKPF AS B
JOIN MSEG AS A
ON BMBLNR EQ AMBLNR
AND BMJAHR EQ AMJAHR
WHERE A~MATNR EQ I_MATNR
AND A~WERKS EQ I_PLANT
AND A~KZBEW IN (' ','B')
AND A~BWART NOT IN ('541','542','321','322','121')
AND A~KZVBR NOT IN ('A')
AND A~GJAHR EQ I_GJAHR
GROUP BY AMATNR ASHKZG ABWART ALGORT.
LOOP AT IT_MSEG WHERE BWART EQ '544' AND LGORT EQ ''.
TMP_MSEG = IT_MSEG.
APPEND TMP_MSEG.
ENDLOOP.
DELETE IT_MSEG WHERE ( BWART EQ '309' AND DMBTR EQ 0 ).
DELETE IT_MSEG WHERE ( BWART NE '543' AND LGORT EQ '' ).
LOOP AT TMP_MSEG.
IT_MSEG = TMP_MSEG.
APPEND IT_MSEG.
ENDLOOP.
*READ TABLE IT_MBEW WITH KEY MATNR = I_MATNR.
*V_STK_OPBAL = IT_MBEW-LBKUM.
*V_STK_VAL = IT_MBEW-SALK3.
LOOP AT IT_MSEG.
IF IT_MSEG-SHKZG EQ 'H'.
V_STK_OPBAL = V_STK_OPBAL - IT_MSEG-MENGE.
V_STK_VAL = V_STK_VAL - IT_MSEG-DMBTR.
ELSE.
V_STK_OPBAL = V_STK_OPBAL + IT_MSEG-MENGE.
ENDIF.
ENDLOOP.
LOOP AT IT_BSIM.
IF IT_BSIM-SHKZG EQ 'H'.
V_STK_OPBAL = V_STK_OPBAL - IT_BSIM-MENGE.
V_STK_VAL = V_STK_VAL - IT_BSIM-DMBTR.
ELSE.
V_STK_OPBAL = V_STK_OPBAL + IT_BSIM-MENGE.
V_STK_VAL = V_STK_VAL + IT_BSIM-DMBTR.
ENDIF.
ENDLOOP.
E_STK_OPBAL = V_STK_OPBAL.
E_STK_VAL = V_STK_VAL.
ENDFUNCTION.