Académique Documents
Professionnel Documents
Culture Documents
Ravi Kanth Talagana Apr 12, 2007 4:04 PM (in response to Senthil Ram Kumar Palanisamy Ganapathi) HI, YOu can make use of the fm: MB_READ_MATERIAL_STOCKS Regards, Ravi
Report Abuse
o
Re: Find material Stock to given date
Like (0)
Anji Reddy Vangala Apr 12, 2007 4:08 PM (in response to Senthil Ram Kumar Palanisamy Ganapathi) Hi See the TCODE 'MB5B' program RM07MLBD, and take the logic for this. regards, ANJI
Hi,
Transaction MB5B does the similar functionality. Here is how it goes. 1. Lets take a material with plant and a storage location. Get the current stock from table MARD. ( LABST = current stock available for unrestricted usage) 2. Go to MSEG for the given material, plant and storage location. 3. Get all the records between <the day u want stockvalue> to todays date. 4. based on the movement types u may have to cancel some of the entries ( if they are return, or if some records were cancelled). 5. calcualte the quantity from field MENGE by adding up all the records.
Report Abuse
Like (0)
Report Abuse
Like (0)
Report Abuse
Re: Stock on a particulare date
Like (0)
Bharat Reddy Vaka May 3, 2006 11:26 AM (in response to Nishant Gupta)
Hi Nishant, Check the following procedure. It may give you an insight. On date Stock (Un-restricted + QI): For Materials (MARD-MATNR) selected above, Plant (MARD-WERKS) = Input Plant and Storage Location (MARD-LGORT) NOT EQUAL TO RT01, determine all the un-restricted quantities (MARD-LABST) and Stock in Inspection (MARDINSME). Sum up all the quantities. Let the sum be equal to ST. For Posting date (MKPF-BUDAT) = current date, determine all the Material documents (MKPF-MBLNR). For Documents (MSEG-MBLNR) determined above, Materials (MSEG-MATNR) selected above, Storage Location (MSEGLGORT) NOT EQUAL RT01, Movement type (MSEG-BWART) NOT EQUAL to 321, Debit / Credit indicator (MSEGSHKZG) = H pick up all the quantities (MSEG-MENGE). Sum up all the quantities. Let the sum be equal to H. Similarly, For Documents (MSEG-MBLNR) determined above, Materials (MSEG-MATNR) selected above, Storage Location (MSEG- LGORT) NOT EQUAL RT01 Movement type (MSEG-BWART) NOT EQUAL to 321, Debit / Credit indicator (MSEG-SHKZG) = S pick up all the quantities (MSEG-MENGE). Sum up all the quantities. Let the sum be equal to S. Then On date Stock (Un-restricted + QI) = ST + H S
Report Abuse
Re: Stock on a particulare date
Like (0)
Nishant Gupta May 3, 2006 12:22 PM (in response to Bharat Reddy Vaka)
thanks for the help everyone.. just wanted to know if there is any function module which does this job straightaway...?
Report Abuse
Re: Stock on a particulare date
Like (0)
Bikash Agarwal Apr 28, 2006 11:41 AM (in response to Nishant Gupta)
check out the logic in this program if it helps... TABLES : MARA,MAKT,MARD,t001w,stpo,stas. data : begin of t_mara occurs 0, matnr like mara-matnr, end of t_mara. data : begin of t_mard occurs 0, matnr like mara-matnr, werks like mard-werks, labst like mard-labst, insme like mard-insme, speme like mard-speme, end of t_mard. data : l_stk1 like mard-labst, l_stk2 like mard-insme, l_stk3 like mard-speme. ---BOM -
DATA : BEGIN OF it_mast OCCURS 0, matnr LIKE mast-matnr, werks LIKE mast-werks, stlan LIKE mast-stlan, stlnr LIKE mast-stlnr,
stlal LIKE mast-stlal, END OF it_mast. DATA : BEGIN OF wa_mast OCCURS 0, matnr LIKE mast-matnr, werks LIKE mast-werks, stlan LIKE mast-stlan, stlnr LIKE mast-stlnr, stlal LIKE mast-stlal, END OF wa_mast.
DATA : BEGIN OF it_mast1 OCCURS 0, matnr LIKE mast-matnr, werks LIKE mast-werks, stlan LIKE mast-stlan, stlnr LIKE mast-stlnr, stlal LIKE mast-stlal, END OF it_mast1.
DATA : BEGIN OF it_stas OCCURS 0, stlty LIKE stas-stlty, stlnr LIKE stas-stlnr, stlal LIKE stas-stlal, stlkn LIKE stas-stlkn, stasz LIKE stas-stasz, datuv LIKE stas-datuv, stvkn LIKE stas-stvkn, END OF it_stas.
DATA : BEGIN OF it_stpo OCCURS 0, stlty LIKE stpo-stlty, stlnr LIKE stpo-stlnr, stlkn LIKE stpo-stlkn, stpoz LIKE stpo-stpoz, idnrk LIKE stpo-idnrk, meins LIKE stpo-meins, menge LIKE stpo-menge, END OF it_stpo. DATA : BEGIN OF t_stpo OCCURS 0, stlty LIKE stpo-stlty, stlnr LIKE stpo-stlnr, stlkn LIKE stpo-stlkn, stpoz LIKE stpo-stpoz, idnrk LIKE stpo-idnrk, meins LIKE stpo-meins, menge LIKE stpo-menge, END OF t_stpo.
DATA : BEGIN OF wa_stpo1 OCCURS 0, stlty LIKE stpo-stlty, stlnr LIKE stpo-stlnr, stlkn LIKE stpo-stlkn, stpoz LIKE stpo-stpoz, idnrk LIKE stpo-idnrk, meins LIKE stpo-meins, menge LIKE stpo-menge, END OF wa_stpo1.
data: begin of it_final occurs 0, stlnr like stpo-stlnr, matnr like mast-matnr, menge like stpo-menge, end of it_final. data: begin of it_final1 occurs 0, stlnr like stpo-stlnr, matnr like mast-matnr, menge like stpo-menge, end of it_final1. data mult_par type c. -END OF BOM--
data: WA_TOTSTK like mard-speme. data G_Matno like mara-matnr. data bom_req_qty like mard-speme. data WA_AVLSTUS like mard-speme. select-options: S_Matno FOR mara-matnr. parameterS : P_plant like t001w-werks, P_BOM like mara-matnr. perform validation. perform Inputdata. perform Calcdata. form validation. if S_Matno is initial. message e001 with text-001. ENDIF. if P_plant is initial. message e001 with text-002. endif. if P_BOM is initial. message e001 with text-003. endif. select matnr from mara INTO table t_mara where matnr in S_Matno. if sy-subrc <> 0. message e001 with text-004. endif. select single * from t001w where werks = P_plant. if sy-subrc <> 0. message e001 with text-005. endif. select single * from mara where matnr = P_BOM. if sy-subrc <> 0. message e001 with text-004. endif. endform. form Inputdata. select matnr from mara into table t_mara where matnr in S_Matno. if sy-subrc = 0.
select matnr werks labst insme speme from mard into table t_mard for all entries in t_mara where matnr = t_mara-matnr and werks = P_plant. endif. endform. form Calcdata. loop at t_mara. select single * from makt where matnr = t_mara-matnr. if sy-subrc = 0. G_Matno = t_mara-matnr. *WRITE:/ SY-ULINE(164). WRITE:1 sy-vline. write:2 t_mara-matnr. write:19 sy-vline. write:20 makt-maktx. write:56 sy-vline. endif. loop at t_mard. if t_mard-matnr = t_mara-matnr. l_stk1 = l_stk1 + t_mard-labst. l_stk2 = l_stk2 + t_mard-insme. l_stk3 = l_stk3 + t_mard-speme. endif. endloop. write:57 l_stk1. write:74 sy-vline. write:75 l_stk2. write:92 sy-vline. write:93 l_stk3. write:110 sy-vline. WA_TOTSTK = l_stk1 + l_stk2 + l_stk3. write:111 WA_TOTSTK. WRITE:128 SY-VLINE. perform BOMDATA. write:129 bom_req_qty. write:146 sy-vline. if bom_req_qty >= 1. WA_AVLSTUS = ( ( 1 / bom_req_qty ) * WA_TOTSTK ). else. WA_AVLSTUS = '0.00'. ENDIF. write:147 WA_AVLSTUS. write:164 sy-vline. write:sy-uline(164). clear l_stk1. clear l_stk2. clear l_stk3. clear bom_req_qty. clear WA_TOTSTK. endloop. endform. FORM BOMDATA. select matnr werks stlan stlnr stlal from mast into table it_mast where matnr = P_BOM and stlal = '01' and stlan = '1' and werks = P_plant. if sy-subrc = 0.
select stlty stlnr stlal stlkn stasz datuv stvkn from stas into table it_stas for all entries in it_mast where stlnr = it_mast-stlnr and stlal = it_mast-stlal and stlty = 'M'. if sy-subrc = 0. SELECT stlty stlnr stlkn stpoz idnrk meins menge from stpo into table it_stpo for all entries in it_stas where stlty = 'M' and stlnr = it_stas-stlnr and stlkn = it_stas-stlkn. endif. endif. perform get_data. perform process_data. perform display_data. ENDFORM.
form process_data. if mult_par = 'Y'. refresh it_stpo. loop at wa_mast. select matnr werks stlan stlnr stlal from mast into table it_mast where matnr = wa_mast-matnr and stlal = '01' and stlan = '1'. if sy-subrc = 0. loop at it_mast. SELECT stlty stlnr stlkn stpoz idnrk meins menge from stpo into table wa_stpo1 where stlnr = it_mast-stlnr. if sy-subrc = 0. clear wa_stpo1. loop at wa_stpo1. read table t_stpo with key idnrk = wa_mast-matnr. if t_stpo-menge > 1. it_stpo-stlty = wa_stpo1-stlty. it_stpo-stlnr = wa_stpo1-stlnr. it_stpo-stlkn = wa_stpo1-stlkn. it_stpo-idnrk = wa_stpo1-idnrk. it_stpo-meins = wa_stpo1-meins. it_stpo-menge = wa_stpo1-menge * 2. else. move-corresponding wa_stpo1 to it_stpo. endif. append it_stpo. clear wa_stpo1. clear it_stpo. endloop. refresh wa_stpo1. clear wa_mast. endif. endloop. endif. endloop. refresh wa_mast. perform get_data. ELSE. perform display_data.
endif. endform.
"process_data
form get_data. loop at it_stpo. select matnr werks stlan stlnr stlal from mast into table it_mast where matnr = it_stpo-idnrk and stlal = '01' and stlan = '1'. if not it_mast[] is initial. loop at it_mast. move-corresponding it_mast to wa_mast. append wa_mast. move-corresponding it_stpo to t_stpo. append t_stpo. endloop. clear t_stpo. else. it_final-stlnr = it_stpo-stlnr. it_final-matnr = it_stpo-idnrk. it_final-menge = it_stpo-menge. append it_final. endif. endloop. if not wa_mast[] is initial. mult_par = 'Y'. clear it_stpo. else. mult_par = ''. endif. loop at it_final. move-corresponding it_final to it_final1. append it_final1. endloop. refresh it_final. refresh it_mast. perform process_data. endform. "get_data form display_data. sort it_final1 by matnr. loop at it_final1. if it_final1-matnr = G_Matno. bom_req_qty = bom_req_qty + it_final1-menge. endif. endloop. refresh it_stpo. refresh it_mast. clear it_final1. REFRESH it_final1. endform. "display_data TOP-OF-PAGE. WRITE:/ SY-ULINE(164). WRITE:/1 SY-VLINE, 2 'Part Number', 19 sy-vline, 20 'Description', 56 sy-vline, 57 'Unrestricted Qty', 74 sy-vline,
75 'Quality Qty', 92 sy-vline, 93 'Blocked Qty', 110 sy-vline, 111 'Tot. Avl. Stk', 128 sy-vline, 129 ' Q/E ', 146 SY-VLINE, 147 'Avl Status', 164 sy-vline. WRITE:SY-ULINE(164). Regards, Bikash
Report Abuse
o
Re: Stock on a particulare date
Like (0)
Report Abuse
o
Re: Stock on a particulare date
Like (1)
Report Abuse
Like (0)
Report Abuse
Re: Stock on a particulare date
Like (0)
Ravi Kanth Talagana May 3, 2006 12:27 PM (in response to Nishant Gupta)
MB_READ_MATERIAL_STOCKS may be useful. Regards, Ravi
Report Abuse
Like (0)
Nishant Gupta May 3, 2006 12:35 PM (in response to Ravi Kanth Talagana)
Thanks ravi for the effort, but this Fm does not provide the stock on a particular date.
Cheers
Report Abuse
Like (0)
Report Abuse
Re: Stock on a particulare date
Like (0)
matnr werks
SINFG
PLSCN = = in_matnr = in_werks BERID = AFIBZ = = 'X' LIFNR = AFHOR = DTNUM = INPER = DISPLAY_LIST_MDPSX DISPLAY_LIST_MDEZX DISPLAY_LIST_MDSUX IMPORTING E_MT61D = E_MDKP =
= = =
TABLES MDPSX = it_MDPSX MDEZX = it_mdezx MDSUX = it_mdsux EXCEPTIONS MRP_LIST_NOT_FOUND =1 MATERIAL_PLANT_NOT_FOUND =2 ERROR =3 OTHERS =4 . IF sy-subrc <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ELSE. LOOP AT it_mdezx. CASE it_mdezx-plumi. WHEN '-'. IF it_mdezx-dat00 IN DATE_RANGE. " Data range to consult acum_mng01 = acum_mng01 + it_mdezx-mng01. ENDIF. ENDCASE. ENDLOOP. ENDIF. Hope it helps you... -Alexis Snchez SAP ABAP Developer Consultant Molen Services and Consulting, C.A.