on 09-17-2008 5:13 AM
please anyone can tell me. regarding.
In which table we will find the opening and closing stock details year wise in MM for reporting purpose?
Hello
Try MBEWH and MARDH
Regards
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Create this fn module and check ,
importing : WRK_MATNR LIKE MSEG-MATNR
WRK_WERKS LIKE MSEG-WERKS
WRK_DATE LIKE MKPF-BUDAT
WRK_LGBST LIKE AM07M-LGBST
WRK_BWBST LIKE AM07M-BWBST
exporting :
ANFMENGE TYPE P
ENDMENGE TYPE P
SOLL TYPE P
HABEN TYPE P
FUNCTION ZSTOCK_FOR_POSTING_DATE.
*"----
""Local Interface:
*" IMPORTING
*" REFERENCE(WRK_MATNR) LIKE MSEG-MATNR
*" REFERENCE(WRK_WERKS) LIKE MSEG-WERKS
*" REFERENCE(WRK_DATE) LIKE MKPF-BUDAT
*" REFERENCE(WRK_LGBST) LIKE AM07M-LGBST DEFAULT 'X'
*" REFERENCE(WRK_BWBST) LIKE AM07M-BWBST DEFAULT ' '
*" EXPORTING
*" REFERENCE(ANFMENGE) TYPE P
*" REFERENCE(ENDMENGE) TYPE P
*" REFERENCE(SOLL) TYPE P
*" REFERENCE(HABEN) TYPE P
*" EXCEPTIONS
*" MANDATORY
*"----
DATA: BEGIN OF weg_mat OCCURS 100,
werks LIKE mseg-werks,
lgort LIKE mseg-lgort,
matnr LIKE mseg-matnr,
shkzg LIKE mseg-shkzg,
menge(09) TYPE p DECIMALS 3,
END OF weg_mat.
DATA : g_f_dcobjdef-name LIKE dcobjdef-name,
g_flag_is_oil_active(01) TYPE c,
g_cnt_is_oil TYPE i,
oiglcalc(01) TYPE c,
oiglsku(07) TYPE p DECIMALS 3.
DATA: BEGIN OF mat_weg OCCURS 100,
bwkey LIKE mbew-bwkey,
werks LIKE mseg-werks,
matnr LIKE mseg-matnr,
shkzg LIKE mseg-shkzg,
menge(09) TYPE p DECIMALS 3,
dmbtr(09) TYPE p DECIMALS 3,
END OF mat_weg.
DATA: BEGIN OF mat_sum_buk OCCURS 100,
bwkey LIKE mbew-bwkey,
matnr LIKE mseg-matnr,
shkzg LIKE mseg-shkzg,
menge(09) TYPE p DECIMALS 3,
dmbtr(09) TYPE p DECIMALS 3,
END OF mat_sum_buk.
TYPES :BEGIN OF stype_mseg_lean,
mblnr LIKE mkpf-mblnr,
mjahr LIKE mkpf-mjahr,
budat LIKE mkpf-budat,
matnr LIKE mseg-matnr,
werks LIKE mseg-werks,
sobkz LIKE mseg-sobkz,
shkzg LIKE mseg-shkzg,
menge LIKE mseg-menge,
meins LIKE mseg-meins,
xauto LIKE mseg-xauto,
bustm LIKE mseg-bustm,
lgort LIKE mseg-lgort,
oiglcalc(01) TYPE c,
oiglsku(07) TYPE p DECIMALS 3,
insmk LIKE mseg-insmk,
retail(01) TYPE c, "n497992
bustw LIKE mseg-bustw,
zeile LIKE mseg-zeile,
kzvbr LIKE mseg-kzvbr ,
kzbew LIKE mseg-kzbew,
END OF stype_mseg_lean.
DATA: BEGIN OF sum_mat OCCURS 100,
werks LIKE mseg-werks,
matnr LIKE mseg-matnr,
shkzg LIKE mseg-shkzg,
menge(09) TYPE p DECIMALS 3,
END OF sum_mat.
TYPES: stab_mseg_lean TYPE STANDARD TABLE OF stype_mseg_lean.
DATA: BEGIN OF bestand OCCURS 100,
bwkey LIKE mbew-bwkey,
werks LIKE mseg-werks,
matnr LIKE mseg-matnr,
charg LIKE mseg-charg,
endmenge(09) TYPE p DECIMALS 3,
anfmenge(09) TYPE p DECIMALS 3,
meins LIKE mara-meins,
endwert(09) TYPE p DECIMALS 2,
anfwert(09) TYPE p DECIMALS 2,
soll(09) TYPE p DECIMALS 3,
haben(09) TYPE p DECIMALS 3,
sollwert(09) TYPE p DECIMALS 2,
habenwert(09) TYPE p DECIMALS 2,
waers LIKE t001-waers,
END OF bestand.
DATA: BEGIN OF imara OCCURS 100,
matnr LIKE mara-matnr,
meins LIKE mara-meins,
mtart LIKE mara-mtart,
END OF imara.
DATA: BEGIN OF it134m OCCURS 100,
bwkey LIKE t134m-bwkey,
mtart LIKE t134m-mtart,
mengu LIKE t134m-mengu,
wertu LIKE t134m-wertu,
END OF it134m.
DATA: g_t_mseg_lean TYPE stab_mseg_lean,
g_s_mseg_lean TYPE stype_mseg_lean,
werks LIKE mseg-werks,
aktdat LIKE sy-datlo,
l_f_bwkey LIKE t001k-bwkey.
RANGES: g_ra_lgort FOR mseg-lgort, "storage location
wrk_lgort FOR mseg-lgort,
g_ra_xauto FOR mseg-xauto,
g_ra_bwkey FOR t001k-bwkey, "valuation area
g_0000_ra_bwkey FOR t001k-bwkey .
DATA: BEGIN OF imard OCCURS 100,
werks TYPE mard-werks,
matnr TYPE mard-matnr,
lgort TYPE mard-lgort,
labst TYPE mard-labst,
umlme TYPE mard-umlme,
einme TYPE mard-einme,
speme TYPE mard-speme,
insme LIKE mard-insme,
retme TYPE mard-retme,
klabs TYPE mard-klabs,
lbkum TYPE mbew-lbkum,
salk3(09) TYPE p DECIMALS 2,
waers LIKE t001-waers,
END OF imard.
DATA: BEGIN OF mat_sum OCCURS 100,
bwkey LIKE mbew-bwkey,
werks LIKE mseg-werks,
matnr LIKE mseg-matnr,
shkzg LIKE mseg-shkzg,
menge(09) TYPE p DECIMALS 3,
dmbtr(09) TYPE p DECIMALS 3,
END OF mat_sum.
TYPES : BEGIN OF stype_mseg_xauto,
mblnr LIKE mseg-mblnr,
mjahr LIKE mseg-mjahr,
zeile LIKE mseg-zeile,
matnr LIKE mseg-matnr,
xauto LIKE mseg-xauto,
END OF stype_mseg_xauto,
stab_mseg_xauto TYPE STANDARD TABLE OF
stype_mseg_xauto
WITH DEFAULT KEY.
working area for the previous entry
DATA : g_s_mseg_pr TYPE stype_mseg_xauto,
table for the original MM doc posting lines
g_s_mseg_or TYPE stype_mseg_xauto,
g_t_mseg_or TYPE stab_mseg_xauto.
definition of working area for valuation tables improved
TYPES : BEGIN OF stype_mbew,
matnr LIKE mbew-matnr,
bwkey LIKE mbew-bwkey,
bwtar LIKE mbew-bwtar,
lbkum(09) TYPE p DECIMALS 3,
salk3(09) TYPE p DECIMALS 2,
meins LIKE mara-meins,
waers LIKE t001-waers,
END OF stype_mbew,
stab_mbew TYPE STANDARD TABLE OF
stype_mbew WITH DEFAULT KEY.
DATA: g_s_mbew TYPE stype_mbew,
g_t_mbew TYPE stab_mbew,
g_cust_tied_empties(01) TYPE c VALUE ' ',
g_flag_delete(01) TYPE c.
DATA : g_f_zeile LIKE mseg-zeile.
TYPES : BEGIN OF stype_organ,
keytype(01) TYPE c,
keyfield LIKE t001w-werks,
bwkey LIKE t001k-bwkey,
werks LIKE t001w-werks,
bukrs LIKE t001-bukrs,
waers LIKE t001-waers,
END OF stype_organ,
stab_organ TYPE STANDARD TABLE OF stype_organ
WITH KEY keytype keyfield bwkey werks.
DATA : g_s_organ TYPE stype_organ,
g_t_organ TYPE stab_organ
WITH HEADER LINE.
DATA: BEGIN OF mat_weg_buk OCCURS 100,
bwkey LIKE mbew-bwkey,
matnr LIKE mseg-matnr,
shkzg LIKE mseg-shkzg,
menge(09) TYPE p DECIMALS 3,
dmbtr(09) TYPE p DECIMALS 3,
END OF mat_weg_buk.
DATA: BEGIN OF it156w OCCURS 100,
bustw LIKE t156w-bustw,
xbgbb LIKE t156w-xbgbb,
END OF it156w.
DATA: BEGIN OF imsweg OCCURS 1000,
mblnr LIKE mseg-mblnr,
mjahr LIKE mseg-mjahr,
zeile LIKE mseg-zeile,
matnr LIKE mseg-matnr,
charg LIKE mseg-charg,
bwtar LIKE mseg-bwtar,
werks LIKE mseg-werks,
lgort LIKE mseg-lgort,
sobkz LIKE mseg-sobkz,
bwart LIKE mseg-bwart,
shkzg LIKE mseg-shkzg,
xauto LIKE mseg-xauto,
menge LIKE mseg-menge,
meins LIKE mseg-meins,
dmbtr LIKE mseg-dmbtr,
dmbum LIKE mseg-dmbum,
bustm LIKE mseg-bustm,
bustw LIKE mseg-bustw,
oiglcalc(01) TYPE c,
oiglsku(07) TYPE p DECIMALS 3,
insmk LIKE mseg-insmk,
END OF imsweg.
if wrk_matnr is initial or wrk_date is initial or wrk_werks is initial.
message s289(m7) RAISING MANDATORY .
endif.
***********************************************************************
change of storage location property depending up on the lgbst & bwbst.
lgbst = storage location / batch stock.
bwbst = valuated stock.
***********************************************************************
REFRESH g_ra_lgort.
CLEAR g_ra_lgort.
IF wrk_lgbst = 'X'. "only Storage loc./batch stock
MOVE wrk_lgort[] TO g_ra_lgort[].
MOVE : 'E' TO g_ra_lgort-sign,
'EQ' TO g_ra_lgort-option.
APPEND g_ra_lgort.
ELSEIF wrk_bwbst = 'X'. "only valuated stocks
copy the existing select-options
MOVE wrk_lgort[] TO g_ra_lgort[].
ENDIF.
*----
To find postings with valuation string, but without relevance for
the valuated stock.
Take lines from MSEG where for the combination BUSTW/XAUTO=XBGBB
there is an entry in T156W with key BSX.
*----
SELECT bustw xbgbb FROM t156w
INTO CORRESPONDING FIELDS OF TABLE it156w
WHERE vorsl = 'BSX'.
SORT it156w BY bustw xbgbb.
DELETE ADJACENT DUPLICATES FROM it156w.
DELETE it156w WHERE bustw = space.
IF wrk_lgbst = 'X'.
SELECT * FROM mard INTO CORRESPONDING FIELDS OF TABLE imard
WHERE matnr = wrk_matnr
AND werks = wrk_werks .
IF sy-subrc <> 0.
MESSAGE s289(m7).
ENDIF.
ELSEIF wrk_bwbst = 'X'.
define local working areas / for the result of the
database selections and the control break
DATA : l_t_mbew TYPE stab_mbew,
l_s_mbew TYPE stype_mbew,
l_s_mbew_split TYPE stype_mbew,
l_s_mbew_normal TYPE stype_mbew,
l_flag_split(01) TYPE c.
read the matching valuation entries
SELECT matnr bwkey bwtar lbkum salk3 FROM mbew
INTO CORRESPONDING FIELDS OF TABLE l_t_mbew
WHERE matnr = wrk_matnr
AND bwkey IN g_ra_bwkey .
IF sy-subrc NE 0.
MESSAGE s289(m7).
ENDIF.
read the matching valuation records of the valuated
special stock sales order
SELECT matnr bwkey bwtar
SUM( lbkum ) AS lbkum
SUM( salk3 ) AS salk3 FROM ebew
APPENDING CORRESPONDING FIELDS OF TABLE l_t_mbew
WHERE matnr = wrk_matnr
AND bwkey IN g_ra_bwkey
AND BWTAR IN BWTAR
GROUP BY matnr bwkey bwtar.
read the matching valuation records of the valuated
special stock projects
SELECT matnr bwkey bwtar
SUM( lbkum ) AS lbkum
SUM( salk3 ) AS salk3 FROM qbew
APPENDING CORRESPONDING FIELDS OF TABLE l_t_mbew
WHERE matnr = wrk_matnr
AND bwkey IN g_ra_bwkey
AND BWTAR IN BWTAR
GROUP BY matnr bwkey bwtar.
read the matching valuation records of the valuated
special subcontractor stock OBEW
SELECT matnr bwkey bwtar
SUM( lbkum ) AS lbkum
SUM( salk3 ) AS salk3 FROM obew
APPENDING CORRESPONDING FIELDS OF TABLE l_t_mbew
WHERE matnr = wrk_matnr
AND bwkey IN g_ra_bwkey
AND BWTAR IN BWTAR
GROUP BY matnr bwkey bwtar.
create table g_t_organ if it is still empty
IF g_t_organ[] IS INITIAL.
create working table G_0000_RA_BWKEY with the valuation areas
LOOP AT l_t_mbew INTO l_s_mbew.
ON CHANGE OF l_s_mbew-bwkey.
MOVE : l_s_mbew-bwkey
TO g_0000_ra_bwkey-low,
'I' TO g_0000_ra_bwkey-sign,
'EQ' TO g_0000_ra_bwkey-option.
COLLECT g_0000_ra_bwkey.
ENDON.
ENDLOOP.
ENDIF.
SORT l_t_mbew BY matnr bwkey.
LOOP AT l_t_mbew INTO l_s_mbew.
process a single entry / add the stock and value
IF l_s_mbew-bwtar IS INITIAL.
MOVE : l_s_mbew-matnr TO l_s_mbew_normal-matnr,
l_s_mbew-bwkey TO l_s_mbew_normal-bwkey.
ADD : l_s_mbew-lbkum TO l_s_mbew_normal-lbkum,
l_s_mbew-salk3 TO l_s_mbew_normal-salk3.
ELSE.
material has split valuation
MOVE : 'X' TO l_flag_split,
l_s_mbew-matnr TO l_s_mbew_split-matnr,
l_s_mbew-bwkey TO l_s_mbew_split-bwkey.
ADD : l_s_mbew-lbkum TO l_s_mbew_split-lbkum,
l_s_mbew-salk3 TO l_s_mbew_split-salk3.
ENDIF.
control break after material and valuation area
AT END OF bwkey.
create a entry for the next working table
IF l_flag_split = 'X'.
if the material has split valuation, take only
the sums from the entries with valuation type
MOVE-CORRESPONDING l_s_mbew_split TO g_s_mbew.
ELSE.
MOVE-CORRESPONDING l_s_mbew_normal TO g_s_mbew.
ENDIF.
ENDAT.
APPEND g_s_mbew TO g_t_mbew.
ENDLOOP.
ENDIF.
SELECT
mkpf~mblnr mkpf~mjahr mkpf~blart mkpf~budat mseg~matnr
mseg~menge mseg~shkzg mseg~lgort mseg~sobkz mseg~werks
mseg~xauto mseg~bustw mseg~bustm
INTO CORRESPONDING FIELDS OF TABLE g_t_mseg_lean
FROM mkpf AS mkpf JOIN mseg AS mseg
ON mkpf~mandt = mseg~mandt AND
mkpf~mblnr = mseg~mblnr AND
mkpf~mjahr = mseg~mjahr
WHERE mseg~matnr = wrk_matnr
AND mseg~werks = wrk_werks
AND mseg~lgort IN g_ra_lgort
AND mkpf~budat GE wrk_date.
IF sy-subrc <> 0.
no material documents found
MESSAGE s842(m7). " RAISING MANDATORY .
ENDIF.
*
IF wrk_bwbst = 'X'.
LOOP AT g_t_mseg_lean INTO g_s_mseg_lean
WHERE kzvbr <> space
AND ( kzbew = 'B' OR kzbew = 'F' ).
get the valuation area
MOVE g_s_mseg_lean-werks TO l_f_bwkey.
READ TABLE imara WITH KEY matnr = g_s_mseg_lean-matnr
BINARY SEARCH.
IF sy-subrc IS INITIAL.
READ TABLE it134m WITH KEY bwkey = l_f_bwkey
mtart = imara-mtart
BINARY SEARCH.
IF sy-subrc IS INITIAL.
IF NOT it134m-mengu IS INITIAL AND
NOT it134m-wertu IS INITIAL.
DELETE g_t_mseg_lean.
ENDIF.
ENDIF.
ELSE.
DELETE g_t_mseg_lean.
ENDIF.
ENDLOOP.
Eliminate material documents with valuation string, but without
relevance to the valuated stock.
LOOP AT g_t_mseg_lean INTO g_s_mseg_lean.
IF NOT g_cust_tied_empties IS INITIAL.
look for MM documents with xauto = L and change
indicators
CASE g_s_mseg_lean-xauto.
WHEN 'X'.
WHEN space.
WHEN OTHERS.
range table g_ra_xauto contains the special
indicators for the transfer movements of the
tied empties
IF g_s_mseg_lean-xauto IN g_ra_xauto.
MOVE g_s_mseg_lean-xauto
TO g_s_mseg_lean-retail.
CLEAR g_s_mseg_lean-xauto.
MODIFY g_t_mseg_lean FROM g_s_mseg_lean
TRANSPORTING xauto retail.
ENDIF.
ENDCASE.
ENDIF.
READ TABLE it156w WITH KEY
bustw = g_s_mseg_lean-bustw
xbgbb = g_s_mseg_lean-xauto
TRANSPORTING NO FIELDS
BINARY SEARCH.
IF sy-subrc <> 0.
DELETE g_t_mseg_lean.
ENDIF.
ENDLOOP.
ENDIF.
screening the dates which is greater than budat
aktdat = sy-datlo + 30.
IF NOT ( wrk_date IS INITIAL OR wrk_date > aktdat ).
LOOP AT g_t_mseg_lean INTO g_s_mseg_lean
WHERE budat > wrk_date.
MOVE-CORRESPONDING g_s_mseg_lean TO imsweg.
APPEND imsweg.
DELETE g_t_mseg_lean.
ENDLOOP.
ENDIF.
*storageLocation/batchstock is 'X'
IF wrk_lgbst IS NOT INITIAL.
SORT imsweg BY werks matnr shkzg.
LOOP AT imsweg.
IF ( imsweg-xauto IS INITIAL ) OR
( imsweg-bustm <> 'MA02' AND imsweg-bustm <> 'MA05' ).
MOVE-CORRESPONDING imsweg TO weg_mat.
COLLECT weg_mat.
ELSE.
DELETE imsweg.
ENDIF.
ENDLOOP.
*sumation of quantity based on 'S' and 'H' indicators for valuated
*stock
ELSEIF wrk_bwbst = 'X'.
SORT imsweg BY werks matnr shkzg.
LOOP AT imsweg.
IF g_flag_is_oil_active = 'X'.
IF ( imsweg-bustm <> 'MEU1' ) OR
( imsweg-bustm = 'MEU1'
AND NOT imsweg-oiglcalc IS INITIAL
AND NOT imsweg-oiglsku IS INITIAL ).
MOVE-CORRESPONDING imsweg TO mat_weg.
COLLECT mat_weg.
ELSE.
DELETE imsweg.
ENDIF.
ELSE.
MOVE-CORRESPONDING imsweg TO mat_weg.
COLLECT mat_weg.
ENDIF.
ENDLOOP.
LOOP AT mat_weg.
mat_weg-bwkey = mat_weg-werks.
MODIFY mat_weg.
ENDLOOP.
ENDIF.
*sumation of quantity based on 'S' and 'H' indicators for local/batch
*stock
IF wrk_lgbst IS NOT INITIAL.
SORT g_t_mseg_lean BY werks matnr shkzg DESCENDING.
LOOP AT g_t_mseg_lean INTO g_s_mseg_lean.
IF ( g_s_mseg_lean-xauto IS INITIAL ) OR
( g_s_mseg_lean-bustm <> 'MA02' AND
g_s_mseg_lean-bustm <> 'MA05' ).
MOVE-CORRESPONDING g_s_mseg_lean TO sum_mat.
COLLECT sum_mat.
ELSE.
DELETE g_t_mseg_lean.
ENDIF.
ENDLOOP.
*
ELSEIF wrk_bwbst = 'X'.
SORT g_t_mseg_lean BY werks matnr shkzg DESCENDING.
LOOP AT g_t_mseg_lean INTO g_s_mseg_lean.
IF g_flag_is_oil_active = 'X'.
IF ( g_s_mseg_lean-bustm <> 'MEU1' ) OR
( g_s_mseg_lean-bustm = 'MEU1'
AND NOT g_s_mseg_lean-oiglcalc IS INITIAL
AND NOT g_s_mseg_lean-oiglsku IS INITIAL ).
MOVE-CORRESPONDING g_s_mseg_lean
TO mat_sum.
COLLECT mat_sum.
ELSE.
DELETE g_t_mseg_lean.
ENDIF.
ELSE.
MOVE-CORRESPONDING g_s_mseg_lean
TO mat_sum.
COLLECT mat_sum.
ENDIF.
ENDLOOP.
LOOP AT mat_sum.
mat_sum-bwkey = mat_sum-werks.
MODIFY mat_sum.
ENDLOOP.
ENDIF.
*for valuated stock closing balance
IF wrk_bwbst = 'X'.
SORT mat_weg BY bwkey matnr shkzg.
SORT mat_weg_buk BY bwkey matnr shkzg.
LOOP AT g_t_mbew INTO g_s_mbew.
CLEAR: mat_weg, mat_weg_buk.
MOVE-CORRESPONDING g_s_mbew TO bestand.
READ TABLE mat_weg WITH KEY bwkey = g_s_mbew-bwkey
matnr = g_s_mbew-matnr
shkzg = 'S' BINARY SEARCH.
bestand-endmenge = g_s_mbew-lbkum - mat_weg-menge.
bestand-endwert = g_s_mbew-salk3 - mat_weg-dmbtr.
CLEAR: mat_weg, mat_weg_buk.
READ TABLE mat_weg WITH KEY bwkey = g_s_mbew-bwkey
matnr = g_s_mbew-matnr
shkzg = 'H' BINARY SEARCH.
bestand-endmenge = bestand-endmenge + mat_weg-menge.
bestand-endwert = bestand-endwert + mat_weg-dmbtr.
COLLECT bestand.
ENDLOOP.
FREE g_s_mbew.
*for location/batch stock closing balance
ELSEIF wrk_lgbst = 'X'.
LOOP AT imard.
CLEAR weg_mat-menge.
MOVE-CORRESPONDING imard TO bestand.
READ TABLE weg_mat WITH KEY werks = imard-werks
lgort = imard-lgort
matnr = imard-matnr
shkzg = 'S'.
bestand-endmenge = imard-labst + imard-insme + imard-speme
+ imard-einme + imard-retme
- weg_mat-menge.
CLEAR weg_mat-menge.
READ TABLE weg_mat WITH KEY werks = imard-werks
lgort = imard-lgort
matnr = imard-matnr
shkzg = 'H'.
bestand-endmenge = bestand-endmenge + weg_mat-menge.
COLLECT bestand.
ENDLOOP.
ENDIF.
*for valuated stock opening balance.
IF wrk_bwbst = 'X'.
SORT mat_sum BY bwkey matnr shkzg.
SORT mat_sum_buk BY bwkey matnr shkzg.
LOOP AT bestand.
CLEAR: mat_sum, mat_sum_buk.
READ TABLE mat_sum WITH KEY bwkey = bestand-bwkey
matnr = bestand-matnr
shkzg = 'S' BINARY SEARCH.
MOVE mat_sum-menge TO bestand-soll.
MOVE mat_sum-dmbtr TO bestand-sollwert.
CLEAR: mat_sum, mat_sum_buk.
READ TABLE mat_sum WITH KEY bwkey = bestand-bwkey
matnr = bestand-matnr
shkzg = 'H' BINARY SEARCH.
MOVE mat_sum-menge TO bestand-haben.
MOVE mat_sum-dmbtr TO bestand-habenwert.
bestand-anfmenge = bestand-endmenge - bestand-soll
+ bestand-haben.
bestand-anfwert = bestand-endwert - bestand-sollwert
+ bestand-habenwert.
MODIFY bestand.
ENDLOOP.
*for location/batch stock opening balance
ELSEIF wrk_lgbst = 'X'.
LOOP AT bestand.
CLEAR sum_mat-menge.
READ TABLE sum_mat WITH KEY werks = bestand-werks
matnr = bestand-matnr
shkzg = 'S'.
MOVE sum_mat-menge TO bestand-soll.
CLEAR sum_mat-menge.
READ TABLE sum_mat WITH KEY werks = bestand-werks
matnr = bestand-matnr
shkzg = 'H'.
MOVE sum_mat-menge TO bestand-haben.
bestand-anfmenge = bestand-endmenge - bestand-soll
+ bestand-haben.
MODIFY bestand.
ENDLOOP.
ENDIF.
exporting Opening,closing & receipt/issue values
endmenge = bestand-endmenge. " opening balance
anfmenge = bestand-anfmenge. " closing balance
soll = bestand-soll. " Receipt total
haben = bestand-haben. " Issue total
ENDFUNCTION.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Check the table"MBEWH"
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi,
for this u can use mb51,mb5b
MB5B is report where we get stock as per posting
date. And from this report you can find out the
the data table
MARC Plant Data for Material
MARD Storage Location Data for Material
MKOL Special Stocks from Vendor
MSKU Special Stocks with Customer
MSLB Special Stocks with Vendor
MSPR Project Stock
Storage Location Data for Material stocks check in table MARD
If Batch Management is active for the materials then use table MCHB - Batch Stock
Regards,
NSR
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi,
Use Below tables.
MARD --> Current Date Plant Stock
MARDH --> Year Wise Month Wise Plant Month Closing Stock.
MSEG & MKPF --> Use Current Month Material Movements.
Any Query Reply Back.....
Thanks,
Durai.V
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
i got some reply but my prblm is still there.
i want to make report in which user enter plant and year.And then for that plant all material opening and closing stock details are shown.and some additional inf regaring valuation class etc.
so if any one can tell me some logic regaring how should i go abt in finding or calulating the opening & closing stock of material(ex:period frm1-4-07-to 1-3--08).and what all tables used for it.then it will be great.
Edited by: shikha bhandula on Sep 17, 2008 6:15 PM
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
hello shikha,
I m also made the same report in development server & my requirement is that i want shade-wise closing stock & my report is ready in development server but the prob. is that when i transport to production server it doesn't show the correct output but in development its ok.
I m using the MARD table with LABST field to show the closing stock.
Thanks,
Sumit Aggarwal.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
you can use the Report Transaction MMBE , why do you need another report...any thing specific you want to show..
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hello
MARD - Storage Location Data for Material
MCHB - Batch Stocks
MSPR - Project Stock
MBEW - Material Valuation
MSEG - Document Segment: Material
MKPF - Header: Material Document
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
i got some reply but my prblm is still there.
i want to make report in which user enter plant and year.And then for that plant all material opening and closing stock details are shown.and some additional inf regaring valuation class etc.
so if any one can tell me some logic regaring how should i go abt in finding or calulating the opening & closing stock of material(ex:period frm1-4-07-to 1-3--08).and what all tables used for it.then it will be great.
Hi Shikha,
Try to use the following logic:
Step 1.Get all the material movements within the selected dates say D1 & D2.
Get all the records from MKPF & MSEG for the plant where BUDAT(posting date) lies within your date range (D1 & D2).
Step 2. Select the current availabe stock (as on today, say D3)
Select all the records from MARD.
SELECT matnr sum( labst ) sum( insme ) FROM mard INTO TABLE i_mard
Step 3. Get the Closing stock on D2.
Get all the records from MKPF & MSEG for the plant where BUDAT(posting date) is GE D2 and LT D3. Get the net stock b/w these periods. Sum on MSEG-SHKZG (debit & credit). This will give you the net stock within D2 and D3.
Hence the closing stock on D2 will be
(Current stock calulated above in step no 2.) minus (the net stock calculated in step no 3.)
Step 4.Get the opening stock on D1.
(Closing stock on D2 calculated in step 3) minus (the net stock calculated in step no 1.)
All the best.
Regards,
Firoz.
Hi Shika ,
are u cross check with MB5B ?
have a look at this sample code and check the logic.
https://wiki.sdn.sap.com/wiki/pages/viewpage.action?pageId=15856
regards
Prabhu
User | Count |
---|---|
101 | |
12 | |
11 | |
6 | |
6 | |
4 | |
3 | |
3 | |
3 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.