Closing stock T code reqd
hi all,
i want to take the report for the closing stock of plant/sloc on a particular date,but am not able to find out the t code,have tried with MB5B,still am not getting the report.
ur help required in this
thanks and regards
Vijay
Hi,
As somebody pointed out the right T code is MC.9, which would give you the stock value for all the materials in a plant.However , fr Quantities you may have to add the field required in the choose Key figures icon and refine your report further.
Thanks in Advance,
Nagrajan
Similar Messages
-
Pivot Day wise closing stock report
Expert,
we need same report from SAP
Pivot report day wise closing stock
Item Code - Item Description - UoM - Warehouse - Item Group - Days 1-2-3-4-31
Selection criteria
From Date
To Date
Item Group
Please help and send Pivot query.
Thanks in advance
MukeshHi Nagarajan Sir,
The above link query is showing a particular date stock status
but my requirement is different below sample format
Date - Item Code - Item Description - UoM - Warehouse - Item Group - Closing Stock
15/03/14 F00012 TMT BAR 10 MM KG KRY01 FINISHED 230.35
16/03/14 F00012 TMT BAR 10 MM KG KRY01 FINISHED 265.65
17/03/14 F00012 TMT BAR 10 MM KG KRY01 FINISHED 356.35
Can i get this format
Selection criteria
From date
To Date
Warehouse
Please think about this format and suggest
Regards
Mukesh Singh -
Closing stock of co.code
How to find out closing stock of plants belongs to one co.code on particular date.
Hi,
Use TCode MB5B.
Tx
UTS
Award if helpfull -
Material opening and closing stock for a given day- Tables or FM
Dear Friends
i have to make a report , related to Material opening and closing stock for a given day , i check the T-Code- MB5B ,
it is not giving correct date . is any functional module is available ? . i checked some table like mbew , mard . it is also not giving correct requirement . Please helpHi
Goto transaction MC.9, Give your Material and,Plant and the date which you need to know the closing stock. Do make sure that in the high and low values you are giving the same date there. I guess no such FM are available for this. You can refer the [Link|https://wiki.sdn.sap.com/wiki/pages/viewpage.action?pageId=15856] for some help.
Regards
Vinodh
Edited by: Vinodh_AN on Dec 15, 2010 9:19 AM
Edited by: Vinodh_AN on Dec 15, 2010 9:25 AM -
Storage location wise Opening/Closing Stock on posting date (mb5b)
Hi,
Report mb5b gives opening stock and closing stock as on date. In the selection screen, if we do not enter specific storage location then the opening/closing stock is displayed as sum of all storage location stocks for a given material.
Where as if we enter storage location, it gives storage location specific output. (with Storage loc/batch stock radio button)
My requirement is - without entering storage location in the initial screen, the system should display storage location specific opening/closing stock.
To get this, presently I need to execute mb5b transaction individually for every storage location.
Warm regards,
MSHi Madhavi
This report you can have in T code MC.6 and another t code for opening and closing stock in t code MC.9
Regards
Vivek
-- Reward if helpful
Edited by: Supergene on Feb 28, 2008 3:17 PM -
Closing stock by using opening sock
Hi All,
I got opening stock by using this how can I calculate closing stock,pls help me.
REPORT zhzl_material_analysis_gb LINE-SIZE 1000.
tables:mara,mseg,s034.
TYPE-POOLS: slis.
DATA: budat TYPE budat.
DATA: v_fieldcat TYPE slis_fieldcat_alv,
v_t_fieldcat TYPE slis_t_fieldcat_alv.
*Internal Tables for Opening Stock Calculation
DATA : BEGIN OF t_mbew OCCURS 0,
matnr LIKE mbew-matnr,
bwkey LIKE mbew-bwkey,
lbkum LIKE mbew-lbkum,
salk3 LIKE mbew-salk3,
END OF t_mbew.
DATA: BEGIN OF i_mbew OCCURS 0,
mblnr LIKE mseg-mblnr,
mjahr LIKE mseg-mjahr,
menge LIKE mseg-menge,
meins TYPE meins,
bwart LIKE mseg-bwart,
matnr LIKE mseg-matnr,
*REP werks as bwkey
bwkey LIKE mseg-werks,
shkzg LIKE mseg-shkzg,
dmbtr LIKE mseg-dmbtr,
zeile LIKE mseg-zeile,
smbln LIKE mseg-smbln,
smblp LIKE mseg-smblp,
sjahr LIKE mseg-sjahr,
kunnr LIKE mseg-kunnr,
mblnr1 LIKE mkpf-mblnr,
mjahr1 LIKE mkpf-mjahr,
budat LIKE mkpf-budat,
taxkd LIKE knvi-taxkd,
END OF i_mbew.
DATA: BEGIN OF i_mara OCCURS 0,
matnr LIKE mara-matnr,
matkl LIKE mara-matkl,
spart LIKE mara-spart,
END OF i_mara.
DATA: i_makt TYPE TABLE OF makt WITH HEADER LINE.
DATA: BEGIN OF i_collect OCCURS 0,
matnr LIKE mara-matnr,
bwkey LIKE mbew-bwkey,
menge LIKE bsim-menge,
dmbtr LIKE bsim-dmbtr,
END OF i_collect.
DATA: BEGIN OF i_op_stock OCCURS 0,
matnr LIKE mara-matnr,
maktx LIKE makt-maktx,
matkl LIKE mara-matkl,
bwkey LIKE mbew-bwkey,
menge LIKE bsim-menge,
dmbtr LIKE bsim-dmbtr,
spart LIKE mara-spart,
END OF i_op_stock.
*The Selection-Screen Construction
SELECTION-SCREEN: BEGIN OF BLOCK sel_block WITH FRAME.
PARAMETER: p_werks LIKE mseg-werks.
*PlantCompany Code
SELECT-OPTIONS : s_date FOR budat,
p_spart for mara-spart,
*Division
p_bukrs for mseg-bukrs .
SELECTION-SCREEN: END OF BLOCK sel_block .
START-OF-SELECTION.
PERFORM opening_stock.
PERFORM alv.
*FORM opening_stock *
*Calculates stock for date value in the low field of the *
*select-options.
FORM opening_stock.
CLEAR t_mbew.
SELECT * FROM mbew INTO CORRESPONDING FIELDS OF TABLE t_mbew
WHERE bwkey = p_werks .
SORT t_mbew BY matnr.
REFRESH i_mbew.
CLEAR i_mbew.
LOOP AT t_mbew.
i_mbew-matnr = t_mbew-matnr.
i_mbew-bwkey = t_mbew-bwkey.
i_mbew-dmbtr = t_mbew-salk3.
i_mbew-menge = t_mbew-lbkum.
APPEND i_mbew.
CLEAR i_mbew.
ENDLOOP.
SELECT
mseg~mblnr
mseg~mjahr
mseg~bwart
mseg~menge
mseg~matnr
mseg~shkzg
mseg~werks AS bwkey
mseg~zeile
mseg~smbln
mseg~smblp
mseg~sjahr
mseg~kunnr
mkpf~mblnr AS mblnr1
mkpf~mjahr AS mjahr1
mkpf~budat
FROM mseg AS mseg INNER JOIN
mkpf AS mkpf ON
msegmblnr = mkpfmblnr
AND
msegmjahr = mkpfmjahr
APPENDING CORRESPONDING FIELDS OF TABLE i_mbew
WHERE mkpf~budat > s_date-low
AND mseg~bukrs in p_bukrs
AND mseg~werks = p_werks
AND mseg~kzvbr = ' '
AND mseg~bustw NE ' '.
SORT i_mbew BY matnr budat mblnr.
SORT i_mara BY matnr.
SORT i_makt BY matnr.
LOOP AT i_mbew.
IF i_mbew-shkzg = 'S'.
i_mbew-dmbtr = i_mbew-dmbtr * ( - 1 ).
i_mbew-menge = i_mbew-menge * ( - 1 ).
ENDIF.
MODIFY i_mbew TRANSPORTING dmbtr menge.
ENDLOOP.
CLEAR i_collect.
LOOP AT i_mbew.
i_collect-matnr = i_mbew-matnr.
i_collect-bwkey = i_mbew-bwkey.
i_collect-dmbtr = i_mbew-dmbtr.
i_collect-menge = i_mbew-menge.
COLLECT i_collect.
ENDLOOP.
CLEAR: i_collect,i_op_stock.
LOOP AT i_collect.
MOVE-CORRESPONDING i_collect TO i_op_stock.
APPEND i_op_stock.
CLEAR i_op_stock.
ENDLOOP.
CHECK NOT i_op_stock[] IS INITIAL.
LOOP AT i_op_stock.
DELETE i_op_stock WHERE menge = 0.
ENDLOOP.
SORT i_op_stock BY matnr.
SELECT * FROM mara INTO CORRESPONDING FIELDS OF TABLE i_mara
FOR ALL ENTRIES IN i_op_stock
WHERE matnr = i_op_stock-matnr
AND spart in p_spart.
SELECT * FROM makt INTO TABLE i_makt
FOR ALL ENTRIES IN i_mara
WHERE matnr = i_mara-matnr
AND spras = 'EN'.
LOOP AT i_op_stock.
CLEAR i_mara.
READ TABLE i_mara WITH KEY matnr = i_op_stock-matnr.
IF sy-subrc = 0.
i_op_stock-matkl = i_mara-matkl.
i_op_stock-spart = i_mara-spart.
MODIFY i_op_stock TRANSPORTING matkl spart.
ELSE.
DELETE i_op_stock.
ENDIF.
ENDLOOP.
LOOP AT i_op_stock.
CLEAR i_makt.
READ TABLE i_makt WITH KEY matnr = i_op_stock-matnr.
IF sy-subrc = 0.
i_op_stock-maktx = i_makt-maktx.
MODIFY i_op_stock TRANSPORTING maktx.
ELSE.
DELETE i_op_stock.
ENDIF.
ENDLOOP.
ENDFORM.
FORM alv.
CLEAR v_fieldcat.
v_fieldcat-col_pos = 1.
v_fieldcat-fieldname = 'MATNR'.
v_fieldcat-seltext_m = 'Material code'.
APPEND v_fieldcat TO v_t_fieldcat.
v_fieldcat-col_pos = 2.
v_fieldcat-fieldname = 'MAKTX'.
v_fieldcat-seltext_m = 'Description'.
APPEND v_fieldcat TO v_t_fieldcat.
v_fieldcat-col_pos = 3.
v_fieldcat-fieldname = 'MATKL'.
v_fieldcat-seltext_m = 'Material Group'.
APPEND v_fieldcat TO v_t_fieldcat.
v_fieldcat-col_pos = 4.
v_fieldcat-fieldname = 'SPART'.
v_fieldcat-seltext_m = 'Division'.
APPEND v_fieldcat TO v_t_fieldcat.
v_fieldcat-col_pos = 5.
v_fieldcat-fieldname = 'BWKEY'.
v_fieldcat-seltext_m = 'Plant'.
APPEND v_fieldcat TO v_t_fieldcat.
v_fieldcat-col_pos = 6.
v_fieldcat-fieldname = 'DMBTR'.
v_fieldcat-seltext_m = 'Amount'.
APPEND v_fieldcat TO v_t_fieldcat.
v_fieldcat-col_pos = 7.
v_fieldcat-fieldname = 'MENGE'.
v_fieldcat-seltext_m = 'Quantity'.
APPEND v_fieldcat TO v_t_fieldcat.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
it_fieldcat = v_t_fieldcat
TABLES
t_outtab = i_op_stock.
ENDFORM.
Thanks®ds,
Sree.Hi,
Please note that MBEW contains the stock position as of now. MBEWH contains the closing stock of all the previous periods. However if there is no transaction in a particular period you may not find a record in MBEWH for that period.
Please refer to SAP documentation:
[Back To Resultlist]
Material Master (Industry/Retail): Enhancements to Period Closing
Description
In Release 4.5A, the period closing function has been redesigned to eliminate or at least alleviate the following problems:
Long runtime if there are very many stock segments
Locking of all materials while the period closing program is run
Data inconsistencies in stock segments due to incorrect operation of the period closing program by users
The enhancements made to eliminate or alleviate these problems affect the way in which period closing is performed technically and particularly the data design. As a result, the following information is intended primarily for the following persons:
System administrators
Developers (for example, in customer projects)
Other persons in IT departments or systems departments
Runtime
The runtime of the period closing program has been improved substantially since no stock tables (such as MBEW, MARD, or MCHB) are updated any longer for the change in period, unless the change in period is a change in fiscal year. Only the material ledger tables are updated.
If the change in period coincides with the end of a fiscal year, the program also updates the physical inventory indicators and thus those tables relevant to physical inventory management; that is, even in this case, table MBEW in particular is no longer updated.
Locking of materials
The materials are locked by the period closing program only if the material ledger is used.
In the case of a change in fiscal year, no physical inventory transactions can be performed when running the period closing program.
Ease of use
As of Release 4.5A, period closing is performed in inventory management or invoice verification; that is, whenever, for example, a goods movement is made, the period is updated in the relevant stock segments of the material if the material is moved for the first time in this period.
Changes to the interface
There have been no changes to the interface.
Changes in procedure
The implementation of the above enhancements has required the data design to be changed as follows:
Stock tables MBEW, EBEW, QBEW, MARC, MARD, MCHB, MKOL, MSKA, MSSA, MSKU, MSLB, MSPR, and MSSQ now have history tables, for example, MBEWH is the history table for MBEW, and EBEWH the history table for EBEW. For each period, these history tables can contain an entry with the corresponding stock information, and are created for the previous period whenever there is a change in period-relevant information such as unrestricted-use stock. This means that the information for the previous period can no longer be read directly from tables MBEW, EBEW, and so on, but that tables MBEWH, EBEWH, etc. have to be read and interpreted.
The point in time at which the system is upgraded to Release 4.5A is important for interpreting the history tables. If the period has been closed at least once after the upgrade, the stocks for the previous period are contained, for example, in history table MARDH. If this table does not contain a corresponding entry, the previous period stock for the corresponding stock fields is the same as the current stock.
Fields LFMON/LFGJA of the stock tables no longer contain the current period, but one of the following periods, depending on when the upgrade took place:
Period of the last goods movement, invoice verification, price change, or other function that has resulted in period-specific information being updated
Period of the release upgrade if no such function has been performed since the system was upgraded
The current period is still recorded (as prior to Release 4.5A) in table MARV.
Planning
In a future release, it is planned for the data in the material ledger to no longer be updated by the period closing program. This will further increase the speed of the program.
[Back To Resultlist]
Regards
Raju Chitale -
CLOSING STOCK FOR A GIVEN PERIOD
hi all,
I have to design a report to find out the closing stock.How to find out closing stock for say 1st nov to 15th nov.In MBEW and MCHB , i am getting closing stock as on date. please help me out if there are any tables or any other way out through function modules.
Regards,
Devinahi,
I will check that t code.
thanks and regards,
Devina -
Inventory opening and closing stock with value report
Hi All,
Is it possible to get details of both opening and closing stock with value of each items of last financial year (2009-10) in inventory report?
MizanHi..
you can try this query
Declare @FromDate Datetime
Declare @ToDate Datetime
set @FromDate =
(Select min(S0.Docdate) from OINM S0 where S0.Docdate >='[%0]')
set @ToDate =
(Select max(S1.Docdate) from OINM S1 where S1.Docdate <='[%1]')
select * from
SELECT T0.itemcode,
min(T0.Dscription) as 'Item Description',
min(B1.ItmsGrpNam) as 'Item Group', W1.Whscode, C1.Location,
(isnull((
Select sum(isnull(inqty,0))
from OINM O1
where O1.itemcode=T1.itemcode
and O1.Warehouse=W1.Whscode
and O1.docdate<@FromDate ),0)-
isnull((
Select sum(isnull(outqty,0))
from OINM O1
where O1.itemcode=T1.itemcode
and O1.Warehouse=W1.Whscode
and O1.docdate<@FromDate),0)
) as [Opening Stock],
isnull((
Select sum(isnull(inqty,0))
from OINM O1
where O1.itemcode=T1.itemcode
and O1.Warehouse=W1.Whscode
and O1.docdate>=@FromDate
and O1.docdate<=@ToDate and O1.inqty>0
and O1.transtype in (20,18)),0
) as [Purchase Quantity],
isnull((
Select sum(isnull(outqty,0))
from OINM O1
where O1.itemcode=T1.itemcode and O1.Warehouse=W1.Whscode
and O1.docdate>=@FromDate and O1.docdate<=@ToDate
and O1.outqty>0 and O1.transtype in (21,19)),0
) as [Purchase Return Quantity],
isnull((
Select sum(isnull(outqty,0))
from OINM O1
where O1.itemcode=T1.itemcode and O1.Warehouse=W1.Whscode
and O1.docdate>=@FromDate and O1.docdate<=@ToDate and O1.outqty>0
and O1.transtype in (13,15)),0
) as [sale Quatity],
(isnull
Select sum(isnull(inqty,0))
from OINM O1
where O1.itemcode=T1.itemcode and O1.Warehouse=W1.Whscode
and O1.docdate<=@ToDate),0
isnull((
Select sum(isnull(outqty,0))
from OINM O1
where O1.itemcode=T1.itemcode and O1.Warehouse=W1.Whscode
and O1.docdate<=@ToDate),0)
) as [Closing Stock]
FROM OINM T0
INNER JOIN OITM T1 ON T0.ItemCode = T1.ItemCode
INNER JOIN OITW T2 ON T1.ItemCode = T2.ItemCode
INNER JOIN OITB B1 ON T1.ItmsGrpCod=B1.ItmsGrpCod
INNER JOIN OWHS W1 ON T2.WhsCode = W1.WhsCode
INNER JOIN OLCT C1 ON W1.Location=C1.Code
Group by T1.itemcode, T0.Itemcode, W1.WhsCode, C1.Location
) a
where (a.[Opening Stock]
+a.[Purchase Quantity]
+ a.[Purchase Return Quantity]
+a.[sale Quatity]+a.[Closing Stock]
) !=0
Regards,
Bhavank -
Opening stock and closing stock required
hi experts,
i am preparing daily report for material consumption .where i am getting BOM consumption for each material .
material opening-stock issues closing-stock
material1
item1 1000 1 999
item2 10 2 8
material2
item1 999 2 997
item2 20 3 17
material3
item1 997 2 995
item3 30 5 25
this is a report for daily consumption of material.
but i want report for each material like this
item1 1000 5ie(221) 995
item2 20 3 17
item3 30 5 25
what is the logic for getting thsi output.
thanks
manicheck this sample code.
https://wiki.sdn.sap.com/wiki/pages/viewpage.action?pageId=15856
Regards
Peram -
Opening Stock and Closing Stock
Hi,
I have one requirement to get a opening stock and closing stock of all materials, based on the plant date and mat type.
Could u tell me the flow of tables one by one
Its is possible to get the opening stock and closing stock of all materials.
Please Guide Me.
Thanks & Regards,
Dhanush.S.Tgo through this....
*& Report Z_OPEN_CLOSE *
REPORT Z_OPEN_CLOSE MESSAGE-ID YW2 LINE-SIZE 231 LINE-COUNT 45
NO STANDARD PAGE HEADING.
Type Declaration *
TYPE-POOLS SLIS.
Tables *
TABLES: MKPF, " Material Document: Header Data
MSEG, " Material Document: Item Data
MARA,
MARD,
S031,
EKKO,
EKPO,
LIKP,
MAKT,
J_1IWRKCUS,
T001W,
WB2_V_MKPF_MSEG2,
MMIM_REP_PRINT,
YW2_STKMOVEMENTS,
YPLNT,
MARDH.
Internal Tables *
DATA: I_WERKS LIKE J_1IWRKCUS OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF I_YPLNT OCCURS 0,
PPLNT LIKE YPLNT-PPLNT,
WPLNT LIKE YPLNT-WPLNT,
END OF I_YPLNT.
DATA: BEGIN OF I_MKPF OCCURS 0,
MBLNR LIKE MKPF-MBLNR,
MJAHR LIKE MKPF-MJAHR,
BUDAT LIKE MKPF-BUDAT,
VGART LIKE MKPF-VGART,
BWART LIKE MSEG-BWART,
MATNR LIKE MSEG-MATNR,
WERKS LIKE MSEG-WERKS,
LGORT LIKE MSEG-LGORT,
MENGE LIKE MSEG-MENGE,
MEINS LIKE MSEG-MEINS,
KUNNR LIKE MSEG-KUNNR,
ZEILE LIKE MSEG-ZEILE,
XAUTO LIKE MSEG-XAUTO,
SHKZG LIKE MSEG-SHKZG,
MATNR1 LIKE MSEG-MATNR,
END OF I_MKPF.
DATA: BEGIN OF I_MARDH OCCURS 0,
WERKS LIKE MARDH-WERKS,
MEINS LIKE MARA-MEINS,
MATNR LIKE MARDH-MATNR,
LGORT LIKE MARDH-LGORT,
LABST LIKE MARDH-LABST,
LFGJA LIKE MARDH-LFGJA, "Added -MB
LFMON LIKE MARDH-LFMON, "Added -MB
PERIO(6),
INSME LIKE MARDH-LABST,
EINME LIKE MARDH-LABST,
SPEME LIKE MARDH-LABST,
RETME LIKE MARDH-LABST,
O_STK LIKE MARDH-LABST, " Opening Stock
C_STK LIKE MARDH-LABST, " Closing Stock
END OF I_MARDH.
DATA: BEGIN OF I_MARD OCCURS 0,
WERKS LIKE MARD-WERKS,
MATNR LIKE MARD-MATNR,
LGORT LIKE MARD-LGORT,
LABST LIKE MARD-LABST,
INSME LIKE MARD-LABST,
MEINS LIKE MARA-MEINS,
EINME LIKE MARD-LABST,
SPEME LIKE MARD-LABST,
RETME LIKE MARD-LABST,
END OF I_MARD.
DATA: I_MARD1 LIKE I_MARD OCCURS 0 WITH HEADER LINE.
DATA: I_MARDH1 LIKE I_MARDH OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF I_MKPF1 OCCURS 0,
MBLNR LIKE MKPF-MBLNR,
WERKS LIKE MSEG-WERKS,
MATNR LIKE MSEG-MATNR,
BUDAT LIKE MKPF-BUDAT,
BWART LIKE MSEG-BWART,
MJAHR LIKE MKPF-MJAHR,
VGART LIKE MKPF-VGART,
LGORT LIKE MSEG-LGORT,
MENGE LIKE MSEG-MENGE,
MEINS LIKE MSEG-MEINS,
XAUTO LIKE MSEG-XAUTO,
SHKZG LIKE MSEG-SHKZG,
END OF I_MKPF1.
DATA: BEGIN OF I_MKPF2 OCCURS 0,
WERKS LIKE MSEG-WERKS,
MATNR LIKE MSEG-MATNR,
BUDAT LIKE MKPF-BUDAT,
BWART LIKE MSEG-BWART,
MJAHR LIKE MKPF-MJAHR,
VGART LIKE MKPF-VGART,
LGORT LIKE MSEG-LGORT,
MENGE LIKE MSEG-MENGE,
MEINS LIKE MSEG-MEINS,
XAUTO LIKE MSEG-XAUTO,
END OF I_MKPF2.
DATA: BEGIN OF I_FINAL5 OCCURS 0,
WERKS LIKE MSEG-WERKS, " Plant
MATNR LIKE MSEG-MATNR, " Material
LGORT LIKE MSEG-LGORT, " Storage Location
BUDAT LIKE MKPF-BUDAT, " Posting Date
MTART LIKE MARA-MTART, " Material Type
SPMON LIKE S031-SPMON, " Month
MAKTX LIKE MAKT-MAKTX, " Description
meins(3), " UOM
MEINS LIKE MSEG-MEINS,
O_STK LIKE MARDH-LABST, " opening stock
TRECEP LIKE MARDH-LABST, " total receipts
PRODU LIKE MARDH-LABST, " Net Receipts - Production
RECEP LIKE MARDH-LABST, " Net Receipts - Receipts
SAL_RET LIKE MARDH-LABST, " Net Receipts - Sales Return
TDISP LIKE MARDH-LABST, " total dispatches
CUSTMR LIKE MARDH-LABST, " Net Dispatches - Customers
OPLANT LIKE MARDH-LABST, " Net Dispatches - To Other Plant
TLOSS LIKE MARDH-LABST, " Total Loss
TRLOSS LIKE MARDH-LABST, " Transit Loss
WHLOSS LIKE MARDH-LABST, " Warehouse Loss
C_STK LIKE MARDH-LABST, " Closing Stock
TRFSTK LIKE MARDH-LABST, "Transfer stock
MENGE LIKE MSEG-MENGE,
OTHADJ LIKE MARDH-LABST,
END OF I_FINAL5.
DATA: BEGIN OF I_FINAL OCCURS 0,
WERKS LIKE MSEG-WERKS, " Plant
MATNR LIKE MSEG-MATNR, " Material
BUDAT LIKE MKPF-BUDAT, " Posting Date
MTART LIKE MARA-MTART, " Material Type
SPMON LIKE S031-SPMON, " Month
MAKTX LIKE MAKT-MAKTX, " Description
meins(3), " UOM
MEINS LIKE MSEG-MEINS,
O_STK LIKE MARDH-LABST, " opening stock
TRECEP LIKE MARDH-LABST, " total receipts
PRODU LIKE MARDH-LABST, " Net Receipts - Production
RECEP LIKE MARDH-LABST, " Net Receipts - Receipts
SAL_RET LIKE MARDH-LABST, " Net Receipts - Sales Return
TDISP LIKE MARDH-LABST, " total dispatches
CUSTMR LIKE MARDH-LABST, " Net Dispatches - Customers
OPLANT LIKE MARDH-LABST, " Net Dispatches - To Other Plant
TRFSTK LIKE MARDH-LABST, "Material Transfer stock
TRLOSS LIKE MARDH-LABST, " Transit Loss
WHLOSS LIKE MARDH-LABST, " Warehouse Loss
TLOSS LIKE MARDH-LABST, " Total Loss
C_STK LIKE MARDH-LABST, " Closing Stock
OTHADJ LIKE MARDH-LABST,
END OF I_FINAL.
DATA: I_FINAL1 LIKE I_FINAL OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF I_FINAL_TEMP OCCURS 0,
WERKS LIKE MSEG-WERKS, " Plant
MATNR LIKE MSEG-MATNR, " Material
MTART LIKE MARA-MTART, " Material Type
MAKTX LIKE MAKT-MAKTX, " Description
MEINS LIKE MSEG-MEINS,
O_STK LIKE MARDH-LABST, " opening stock
TRECEP LIKE MARDH-LABST, " total receipts
PRODU LIKE MARDH-LABST, " Net Receipts - Production
RECEP LIKE MARDH-LABST, " Net Receipts - Receipts
SAL_RET LIKE MARDH-LABST, " Net Receipts - Sales Return
TDISP LIKE MARDH-LABST, " total dispatches
CUSTMR LIKE MARDH-LABST, " Net Dispatches - Customers
OPLANT LIKE MARDH-LABST, " Net Dispatches - To Other Plant
TRFSTK LIKE MARDH-LABST, "Material Transfer stock
TRLOSS LIKE MARDH-LABST, " Transit Loss
WHLOSS LIKE MARDH-LABST, " Warehouse Loss
TLOSS LIKE MARDH-LABST, " Total Loss
C_STK LIKE MARDH-LABST, " Closing Stock
OTHADJ LIKE MARDH-LABST,
END OF I_FINAL_TEMP.
For Materials
DATA: BEGIN OF I_MARA OCCURS 0,
MATNR TYPE MARA-MATNR,
MTART TYPE MARA-MTART,
MEINS LIKE MARA-MEINS,
LABST TYPE MARD-LABST,
MAKTX LIKE MAKT-MAKTX,
END OF I_MARA.
DATA: BEGIN OF I_STKMVMNTS OCCURS 0,
BWART LIKE MSEG-BWART,
SHKZG LIKE MSEG-SHKZG,
VZBEW LIKE YW2_STKMOVEMENTS-VZBEW,
END OF I_STKMVMNTS.
DATA: BEGIN OF I_FINALT OCCURS 0,
WERKS LIKE MSEG-WERKS, " Plant
MATNR LIKE MSEG-MATNR, " Material
BUDAT LIKE MKPF-BUDAT, " Posting Date
MTART LIKE MARA-MTART, " Material Type
SPMON LIKE S031-SPMON, " Month
MAKTX LIKE MAKT-MAKTX, " Description
meins(3), " UOM
MEINS LIKE MSEG-MEINS,
O_STK LIKE MARDH-LABST, " opening stock
TRECEP LIKE MARDH-LABST, " total receipts
PRODU LIKE MARDH-LABST, " Net Receipts - Production
RECEP LIKE MARDH-LABST, " Net Receipts - Receipts
SAL_RET LIKE MARDH-LABST, " Net Receipts - Sales Return
TDISP LIKE MARDH-LABST, " total dispatches
CUSTMR LIKE MARDH-LABST, " Net Dispatches - Customers
OPLANT LIKE MARDH-LABST, " Net Dispatches - To Other Plant
TRFSTK LIKE MARDH-LABST, "Material Transfer stock
TRLOSS LIKE MARDH-LABST, " Transit Loss
WHLOSS LIKE MARDH-LABST, " Warehouse Loss
TLOSS LIKE MARDH-LABST, " Total Loss
C_STK LIKE MARDH-LABST, " Closing Stock
OTHADJ LIKE MARDH-LABST,
MONTH(8) ,
END OF I_FINALT.
DATA: IMKPFT LIKE I_MKPF OCCURS 0 WITH HEADER LINE.
DATA: IMKPFT1 LIKE I_MKPF1 OCCURS 0 WITH HEADER LINE.
DATA: IMARDT LIKE I_MARD OCCURS 0 WITH HEADER LINE.
DATA: IMARDHT LIKE I_MARDH OCCURS 0 WITH HEADER LINE.
DATA: T_FINAL LIKE I_MKPF OCCURS 0 WITH HEADER LINE.
DATA: IMKPFT2 LIKE I_MKPF OCCURS 0 WITH HEADER LINE.
FCAT is used for the field catalog
DATA: FCAT TYPE TABLE OF SLIS_FIELDCAT_ALV WITH NON-UNIQUE DEFAULT KEY
WITH HEADER LINE INITIAL SIZE 0,
for excluding the ICONs from the application toolbar
FEXC TYPE TABLE OF SLIS_EXTAB WITH NON-UNIQUE DEFAULT KEY
WITH HEADER LINE INITIAL SIZE 0,
FS_LAYO is used for Grid Layout
FS_LAYO TYPE SLIS_LAYOUT_ALV,
FEVENTS to handle the events TOP OF PAGE & USER_COMMAND
FEVENTS TYPE TABLE OF SLIS_ALV_EVENT WITH NON-UNIQUE DEFAULT KEY
WITH HEADER LINE INITIAL SIZE 0,
FHEADER is used for List header
FHEADER TYPE TABLE OF SLIS_LISTHEADER WITH NON-UNIQUE DEFAULT KEY
WITH HEADER LINE INITIAL SIZE 0,
sort is used for sorting
FSORT TYPE TABLE OF SLIS_SORTINFO_ALV WITH NON-UNIQUE DEFAULT KEY
WITH HEADER LINE INITIAL SIZE 0,
FCAT1 TYPE TABLE OF SLIS_FIELDCAT_ALV WITH NON-UNIQUE DEFAULT KEY
WITH HEADER LINE INITIAL SIZE 0,
FS_LAYO1 TYPE SLIS_LAYOUT_ALV,
GT_LIST_TOP_OF_PAGE1 TYPE SLIS_T_LISTHEADER,
FEVENTS1 TYPE TABLE OF SLIS_ALV_EVENT WITH NON-UNIQUE DEFAULT KEY
WITH HEADER LINE INITIAL SIZE 0,
FHEADER1 TYPE TABLE OF SLIS_LISTHEADER WITH NON-UNIQUE DEFAULT
KEY WITH HEADER LINE INITIAL SIZE 0,
G_STATU_071 TYPE SLIS_FORMNAME VALUE 'Z_PFSTATUS',
ALV_VARIANT1 LIKE DISVARIANT.
Variable Declaration *
TYPES: TRFF_TYPE_DEC_6_5(6) TYPE P DECIMALS 5.
DATA: FYEAR(4),
MON(2),
FYEAR1(4),
MON1(2),
OBAL LIKE MARD-LABST,
CBAL LIKE MARD-LABST,
INDEX TYPE I,
COUNT,
COUNT1 TYPE I,
O_STK TYPE P DECIMALS 3,
C_STK TYPE P DECIMALS 3,
V_MJAHR LIKE MKPF-MJAHR,
MONTHS TYPE TRFF_TYPE_DEC_6_5,
MONTH TYPE I.
Global variables for handling ALV functionality
DATA: ALV_KEYINFO TYPE SLIS_KEYINFO_ALV,
ALV_VARIANT LIKE DISVARIANT,
ALV_LAYOUT TYPE SLIS_LAYOUT_ALV,
ALV_REPID LIKE SY-REPID,
ALV_PRINT TYPE SLIS_PRINT_ALV,
ALV_DETAIL_FUNC(30),
ALV_DEFAULT_VARIANT LIKE DISVARIANT-VARIANT,
ALV_COLOURIZE_FIELDS LIKE MMIM_REP_PRINT-COLOR.
RANGES: R_BUDAT FOR MKPF-BUDAT.
*Added by Prabhu for year on 26.4.05.
DATA: IDATE LIKE R_BUDAT OCCURS 0 WITH HEADER LINE.
Selection Screen Elements *
SELECTION-SCREEN BEGIN OF BLOCK BLK WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: S_WERKS FOR MARD-WERKS OBLIGATORY NO INTERVALS.
PARAMETER: P_SPMON LIKE S031-SPMON NO-DISPLAY .
SELECT-OPTIONS: S_MATNR FOR MARA-MATNR OBLIGATORY,
S_LGORT FOR MSEG-LGORT NO-EXTENSION NO INTERVALS,
S_MBLNR FOR MKPF-MBLNR,
S_BUDAT FOR MKPF-BUDAT OBLIGATORY .
SELECTION-SCREEN END OF BLOCK BLK.
SELECTION-SCREEN BEGIN OF BLOCK BLK3 WITH FRAME TITLE TEXT-004.
PARAMETER : MTART LIKE MARA-MTART DEFAULT 'FERT' NO-DISPLAY.
SELECTION-SCREEN END OF BLOCK BLK3.
SELECTION-SCREEN BEGIN OF BLOCK BLK2 WITH FRAME TITLE TEXT-003.
SELECTION-SCREEN END OF BLOCK BLK2.
ADDED BY PRABHU FOR DAY-WISE REPORT.
SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-007.
PARAMETERS: D1 RADIOBUTTON GROUP P1 DEFAULT 'X',
M1 RADIOBUTTON GROUP P1,
Y1 RADIOBUTTON GROUP P1.
SELECTION-SCREEN END OF BLOCK B3.
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-006.
PARAMETERS: ALV_DEF LIKE DISVARIANT-VARIANT.
SELECTION-SCREEN END OF BLOCK B2.
DATA: S_BUDAT1 LIKE S_BUDAT OCCURS 0 WITH HEADER LINE."prabhu
Initialization *
INITIALIZATION.
PERFORM ALV_INIT.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR ALV_DEF.
PERFORM ALV_F4.
At Selection Screen
*AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_spmon.
PERFORM monat_f4.
At Selection Screen *
AT SELECTION-SCREEN.
checking for the layout
PERFORM ALV_CHECK.
authorisation check for the Plant
PERFORM auth_check.
Validation for the Plant
PERFORM VALIDITY_CHECK.
IF MTART NE 'FERT'.
MESSAGE E041 WITH 'Material Type must be FERT Only...'.
ENDIF.
IF D1 = 'X'." On 26.4.05.
P_SPMON0(4) = S_BUDAT-LOW0(4).
P_SPMON4(2) = S_BUDAT-LOW4(2).
ELSE.
P_SPMON0(4) = S_BUDAT-LOW0(4).
P_SPMON4(2) = S_BUDAT-LOW4(2).
ENDIF.
LOOP AT S_BUDAT.
IF S_BUDAT-HIGH IS INITIAL.
S_BUDAT-HIGH = S_BUDAT-LOW.
MODIFY S_BUDAT.
ENDIF.
ENDLOOP.
IDATE-LOW = S_BUDAT-LOW.
IDATE-HIGH = S_BUDAT-HIGH.
CALL FUNCTION 'FIMA_DAYS_AND_MONTHS_AND_YEARS'
EXPORTING
I_DATE_FROM = IDATE-LOW
I_DATE_TO = IDATE-HIGH
IMPORTING
E_DAYS =
E_MONTHS = MONTH
E_YEARS =
DATA: I(3) TYPE C.
I = S_BUDAT-LOW+4(2).
CLEAR: R_BUDAT.
REFRESH: R_BUDAT.
*added by Prabhu for Only for Oneday.on 18.5.5
IF MONTH EQ '0'.
MONTH = MONTH + 1.
ENDIF.
*added by Prabhu for Only for Oneday.on 18.5.5
DO MONTH TIMES.
R_BUDAT-LOW = S_BUDAT-LOW.
APPEND R_BUDAT.
ENDDO.
I = 0.
LOOP AT R_BUDAT.
R_BUDAT-LOW4(2) = S_BUDAT-LOW4(2) + I.
I = I + 1.
R_BUDAT-LOW+6(2) = '01'.
MODIFY R_BUDAT.
ENDLOOP.
LOOP AT R_BUDAT.
CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS'
EXPORTING
DAY_IN = R_BUDAT-LOW
IMPORTING
LAST_DAY_OF_MONTH = R_BUDAT-HIGH
EXCEPTIONS
DAY_IN_NO_DATE = 1
OTHERS = 2
MODIFY R_BUDAT.
ENDLOOP.
LOOP AT R_BUDAT.
IF R_BUDAT-LOW4(2) = S_BUDAT-LOW4(2).
R_BUDAT-LOW = S_BUDAT-LOW.
MODIFY R_BUDAT.
ENDIF.
IF R_BUDAT-HIGH4(2) = S_BUDAT-HIGH4(2).
R_BUDAT-HIGH = S_BUDAT-HIGH.
MODIFY R_BUDAT.
ENDIF.
For Summary on 26.4.05.
IF Y1 = 'X'.
CLEAR R_BUDAT.
REFRESH R_BUDAT.
R_BUDAT-LOW = S_BUDAT-LOW.
R_BUDAT-HIGH = S_BUDAT-HIGH.
APPEND R_BUDAT.
CLEAR R_BUDAT.
ENDIF.
ENDLOOP.
At Selection Screen *
AT SELECTION-SCREEN OUTPUT.
Start of Selection *
START-OF-SELECTION.
V_MJAHR = P_SPMON+0(4).
Get plant distinction warehouse/production
PERFORM GET_PLANT_DISTINCTION.
Collect the data from various tables
PERFORM GETDATA_FG_STOCK.
here the number of rows in the output table is found
PERFORM OUTPUT_TABLE_CHECK.
here the top of the page code is written, that is to be displayed
in the output
PERFORM Z_TOP_OF_PAGE.
here ALV layout properties are set
PERFORM Z_LAYOUT_SETTINGS.
ALV EVENTS for TOP OF PAGE and for USER COMMAND
PERFORM Z_ALV_EVENTS.
The field catalog is defined for the Primary List is defined in
the subroutine CREATE_FIELD_CATALOG include program ZPRRDOCR_FCAT
PERFORM Z_CREATE_FIELD_CATALOG.
This is for displaying the output
PERFORM Z_REUSE_ALV_GRID_DISPLAY.
*& Form getdata_fg_stock
Getting data from standard tables
FORM GETDATA_FG_STOCK.
For getting the Start date & end date of the month
PERFORM get_month_dates.
Getting the Opening Stock from MARDH table
IF MON EQ '01'.
MON1 = MON.
FYEAR1 = FYEAR.
MON = '12'.
FYEAR = FYEAR - 1.
ELSE.
MON1 = MON.
FYEAR1 = FYEAR.
MON = MON - 1.
FYEAR = FYEAR.
ENDIF.
PERFORM GET_RECORDS_FROM_DB.
*added for Month Summary on 26.4.05.
LOOP AT R_BUDAT.
S_BUDAT-LOW = R_BUDAT-LOW.
S_BUDAT-HIGH = R_BUDAT-HIGH.
*for Month
P_SPMON0(4) = S_BUDAT-LOW0(4).
P_SPMON4(2) = S_BUDAT-LOW4(2).
*for summary.
IF Y1 = 'X'.
LOOP AT S_BUDAT.
S_BUDAT1-SIGN = 'I'.
S_BUDAT1-OPTION = 'NB'.
S_BUDAT1-LOW = S_BUDAT-LOW.
S_BUDAT1-HIGH = S_BUDAT-HIGH.
APPEND S_BUDAT1.
CLEAR S_BUDAT1.
ENDLOOP.
ENDIF.
IMKPFT[] = I_MKPF[].
IMKPFT2[] = I_MKPF[].
IMARDT[] = I_MARD[].
IMARDHT[] = I_MARDH[].
PERFORM MONTH_WISE.
PERFORM PROCESS_MOVEMENTS.
PERFORM CALCULATE_OPENING_STOCK.
PERFORM UPDATE_NON_TRANSACTION_ITMS.
PERFORM DELETE_EMPTY_RECORDS.
CLEAR: IMARDHT,IMARDT,IMKPFT1,IMKPFT,I_FINAL,I_FINAL5.
REFRESH: IMARDHT,IMARDT,IMKPFT1,I_FINAL,I_FINAL5,IMKPFT.
ENDLOOP.
CLEAR: R_BUDAT.
REFRESH: R_BUDAT.
*end of changes for month.
ENDFORM. " getdata_fg_stock
FORM MONAT_F4 *
F4-Hilfe für Monat *
FORM MONAT_F4.
DATA: BEGIN OF MF_DYNPFIELDS OCCURS 1.
INCLUDE STRUCTURE DYNPREAD.
DATA: END OF MF_DYNPFIELDS.
DATA: MF_RETURNCODE LIKE SY-SUBRC,
MF_MONAT LIKE ISELLIST-MONTH,
MF_HLP_REPID LIKE SY-REPID.
FIELD-SYMBOLS: .
Wert von Dynpro lesen
GET CURSOR FIELD MF_DYNPFIELDS-FIELDNAME.
APPEND MF_DYNPFIELDS.
MF_HLP_REPID = SY-REPID.
DO 2 TIMES.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
DYNAME = MF_HLP_REPID
DYNUMB = SY-DYNNR
TABLES
DYNPFIELDS = MF_DYNPFIELDS
EXCEPTIONS
INVALID_ABAPWORKAREA = 01
INVALID_DYNPROFIELD = 02
INVALID_DYNPRONAME = 03
INVALID_DYNPRONUMMER = 04
INVALID_REQUEST = 05
NO_FIELDDESCRIPTION = 06
UNDEFIND_ERROR = 07.
IF SY-SUBRC = 3.
Aktuelles Dynpro ist Wertemengenbild
MF_HLP_REPID = 'SAPLALDB'.
ELSE.
READ TABLE MF_DYNPFIELDS INDEX 1.
Unterstriche durch Blanks ersetzen
TRANSLATE MF_DYNPFIELDS-FIELDVALUE USING '_ '.
EXIT.
ENDIF.
ENDDO.
IF SY-SUBRC = 0.
Konvertierung ins interne Format
CALL FUNCTION 'CONVERSION_EXIT_PERI_INPUT'
EXPORTING
INPUT = MF_DYNPFIELDS-FIELDVALUE
IMPORTING
OUTPUT = MF_MONAT
EXCEPTIONS
ERROR_MESSAGE = 1.
IF MF_MONAT IS INITIAL.
Monat ist initial => Vorschlagswert aus akt. Datum ableiten
MF_MONAT = SY-DATLO(6).
ENDIF.
CALL FUNCTION 'POPUP_TO_SELECT_MONTH'
EXPORTING
ACTUAL_MONTH = MF_MONAT
IMPORTING
SELECTED_MONTH = MF_MONAT
RETURN_CODE = MF_RETURNCODE
EXCEPTIONS
FACTORY_CALENDAR_NOT_FOUND = 01
HOLIDAY_CALENDAR_NOT_FOUND = 02
MONTH_NOT_FOUND = 03.
IF SY-SUBRC = 0 AND MF_RETURNCODE = 0.
ASSIGN (MF_DYNPFIELDS-FIELDNAME) TO <MF_FELD>. " ==>> note 148804
<MF_FELD> = MF_MONAT.
CALL FUNCTION 'CONVERSION_EXIT_PERI_OUTPUT'
EXPORTING
INPUT = MF_MONAT
IMPORTING
OUTPUT = MF_DYNPFIELDS-FIELDVALUE.
COLLECT MF_DYNPFIELDS.
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
DYNAME = MF_HLP_REPID
DYNUMB = SY-DYNNR
TABLES
DYNPFIELDS = MF_DYNPFIELDS
EXCEPTIONS
INVALID_ABAPWORKAREA = 01
INVALID_DYNPROFIELD = 02
INVALID_DYNPRONAME = 03
INVALID_DYNPRONUMMER = 04
INVALID_REQUEST = 05
NO_FIELDDESCRIPTION = 06
UNDEFIND_ERROR = 07. "<<== note 148804
ENDIF.
ENDIF.
ENDFORM. "MONAT_F4
*& Form get_month_dates
Calculating the Month Start & End Date
FORM GET_MONTH_DATES.
IF M1 = 'X'.
FYEAR = P_SPMON+0(4).
MON = P_SPMON+4(2).
CONCATENATE FYEAR MON '01' INTO R_BUDAT-LOW.
R_BUDAT-SIGN = 'I'.
R_BUDAT-OPTION = 'BT'.
CALL FUNCTION 'BKK_GET_MONTH_LASTDAY'
EXPORTING
I_DATE = R_BUDAT-LOW
IMPORTING
E_DATE = R_BUDAT-HIGH.
APPEND R_BUDAT.
CLEAR S_BUDAT.
REFRESH S_BUDAT.
S_BUDAT-SIGN = 'I'.
S_BUDAT-OPTION = 'BT'.
S_BUDAT-LOW = R_BUDAT-LOW.
S_BUDAT-HIGH = R_BUDAT-HIGH.
APPEND S_BUDAT.
ELSE.
FYEAR = P_SPMON+0(4).
MON = P_SPMON+4(2).
CONCATENATE FYEAR MON '01' INTO R_BUDAT-LOW.
R_BUDAT-SIGN = 'I'.
R_BUDAT-OPTION = 'BT'.
CALL FUNCTION 'BKK_GET_MONTH_LASTDAY'
EXPORTING
I_DATE = R_BUDAT-LOW
IMPORTING
E_DATE = R_BUDAT-HIGH.
APPEND R_BUDAT.
ENDIF.
ENDFORM. " get_month_dates
*& Form output_table_Check
checking for records for output
FORM OUTPUT_TABLE_CHECK .
DESCRIBE TABLE I_FINALT LINES INDEX.
IF INDEX EQ 0.
MESSAGE I041 WITH TEXT-005.
LEAVE LIST-PROCESSING.
ENDIF.
ENDFORM. "OUTPUT_TABLE_CHECK
*& Form Z_TOP_OF_PAGE
for setting the details in the top of page *
has no formal paramters *
FORM Z_TOP_OF_PAGE.
DATA: V_MON(2),
V_YR(40),
V_FIN(18),
V_FIN1(48),
LOW(10),
HIGH(10).
V_MON = P_SPMON+4(2).
V_YR = P_SPMON+0(4).
FHEADER-TYP = 'H'.
FHEADER-INFO = 'Stock Register Report (FG Stock)'.
APPEND FHEADER.
CLEAR FHEADER.
*if m1 = 'X'.
CONCATENATE 'Month = ' v_mon '.' v_yr INTO v_fin.
fheader-typ = 'H'.
fheader-info = v_fin.
APPEND fheader.
CLEAR fheader.
*endif."prabhu on 18.5.5
IF D1 = 'X'.
CLEAR S_BUDAT.
LOOP AT S_BUDAT.
CONCATENATE S_BUDAT-LOW6(2) '/' S_BUDAT-LOW4(2) '/'
S_BUDAT-LOW+0(4) INTO LOW.
CONCATENATE S_BUDAT-HIGH6(2) '/' S_BUDAT-HIGH4(2) '/'
S_BUDAT-HIGH+0(4) INTO HIGH.
CONCATENATE 'Date = ' LOW ' - ' HIGH INTO V_FIN1.
FHEADER-TYP = 'H'.
FHEADER-INFO = V_FIN1.
APPEND FHEADER.
CLEAR FHEADER.
ENDLOOP.
ENDIF.
ENDFORM. " Z_TOP_OF_PAGE
*& Form Z_LAYOUT_SETTINGS
this is done for setting the properties for the layout of the *
grid *
has no formal paramters *
FORM Z_LAYOUT_SETTINGS.
FS_LAYO-ZEBRA = 'X'. " Output in Zebra pattern
FS_LAYO-DETAIL_POPUP = 'X'. " A popup window appears to give
FS_LAYO-DETAIL_TITLEBAR = TEXT-022.
FS_LAYO-COLWIDTH_OPTIMIZE = 'X'.
ENDFORM. " Z_LAYOUT_SETTINGS
*& Form Z_ALV_EVENTS
This is used for handling the events TOP OF PAGE and the USER *
COMMAND event *
has no formal paramters *
FORM Z_ALV_EVENTS.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = FEVENTS[].
READ TABLE FEVENTS WITH KEY NAME = 'TOP_OF_PAGE'.
IF SY-SUBRC = 0.
FEVENTS-FORM = 'Z_TOPOFPAGE'.
MODIFY FEVENTS INDEX SY-TABIX.
CLEAR FEVENTS.
ENDIF.
READ TABLE FEVENTS WITH KEY NAME = 'USER_COMMAND'.
IF SY-SUBRC = 0.
FEVENTS-FORM = 'Z_USER_COMMAND'.
MODIFY FEVENTS INDEX SY-TABIX.
CLEAR FEVENTS.
ENDIF.
ENDFORM. "Z_ALV_EVENTS
*& Form Z_CREATE_FIELD_CATALOG
here the field catalog is created for the primary list *
no formal parameters *
FORM Z_CREATE_FIELD_CATALOG.
for the Plant
FCAT-FIELDNAME = 'WERKS'.
FCAT-KEY = 'X'.
FCAT-OUTPUTLEN = '000005'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'Plant'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'C'.
FCAT-DATATYPE = 'CHAR'.
APPEND FCAT.
CLEAR FCAT.
for the Material Type
FCAT-FIELDNAME = 'MTART'.
FCAT-KEY = 'X'.
FCAT-OUTPUTLEN = '000006'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'MatTyp'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'C'.
FCAT-DATATYPE = 'CHAR'.
APPEND FCAT.
CLEAR FCAT.
for the Material No.
FCAT-FIELDNAME = 'MATNR'.
FCAT-KEY = 'X'.
fcat-hotspot = 'X'.
FCAT-OUTPUTLEN = '000018'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'Material'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'C'.
FCAT-DATATYPE = 'CHAR'.
APPEND FCAT.
CLEAR FCAT.
for the Material Description
FCAT-FIELDNAME = 'MAKTX'.
FCAT-KEY = ''.
FCAT-OUTPUTLEN = '000040'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'Description'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'C'.
FCAT-DATATYPE = 'CHAR'.
APPEND FCAT.
CLEAR FCAT.
for the Unit of Measure
FCAT-FIELDNAME = 'MEINS'.
FCAT-KEY = ''.
FCAT-OUTPUTLEN = '03'.
FCAT-JUST = 'C'.
FCAT-SELTEXT_M = 'UOM'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'C'.
FCAT-DATATYPE = 'UNIT'.
APPEND FCAT.
CLEAR FCAT.
for the Plant
FCAT-FIELDNAME = 'MONTH'.
FCAT-KEY = 'X'.
FCAT-OUTPUTLEN = '08'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'MONTH'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'C'.
FCAT-DATATYPE = 'CHAR'.
APPEND FCAT.
CLEAR FCAT.
for the Opening Stock
FCAT-FIELDNAME = 'C_STK'.
FCAT-HOTSPOT = ' '.
FCAT-OUTPUTLEN = '000016'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'Opening Stock'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'Q'.
FCAT-DATATYPE = 'QUAN'.
fcat-do_sum = 'X'.
FCAT-JUST = 'R'.
FCAT-NO_ZERO = 'X'.
APPEND FCAT.
CLEAR FCAT.
for the Total Receipts
FCAT-FIELDNAME = 'TRECEP'.
FCAT-HOTSPOT = ' '.
FCAT-OUTPUTLEN = '000016'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'Total Receipts'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'Q'.
FCAT-DATATYPE = 'QUAN'.
FCAT-DO_SUM = 'X'.
FCAT-JUST = 'R'.
FCAT-NO_ZERO = 'X'.
APPEND FCAT.
CLEAR FCAT.
for the Production
FCAT-FIELDNAME = 'PRODU'.
FCAT-HOTSPOT = ' '.
FCAT-OUTPUTLEN = '000016'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'Production'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'Q'.
FCAT-DATATYPE = 'QUAN'.
FCAT-DO_SUM = 'X'.
FCAT-JUST = 'R'.
FCAT-NO_ZERO = 'X'.
APPEND FCAT.
CLEAR FCAT.
for the Other Plant Receipts
FCAT-FIELDNAME = 'RECEP'.
FCAT-HOTSPOT = ' '.
FCAT-OUTPUTLEN = '000016'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'Othr Plnt Recpts'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'Q'.
FCAT-DATATYPE = 'QUAN'.
FCAT-DO_SUM = 'X'.
FCAT-JUST = 'R'.
FCAT-NO_ZERO = 'X'.
APPEND FCAT.
CLEAR FCAT.
Sales Return
FCAT-FIELDNAME = 'SAL_RET'.
FCAT-HOTSPOT = ' '.
FCAT-OUTPUTLEN = '000016'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'Sales Return'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'Q'.
FCAT-DATATYPE = 'QUAN'.
FCAT-DO_SUM = 'X'.
FCAT-JUST = 'R'.
FCAT-NO_ZERO = 'X'.
APPEND FCAT.
CLEAR FCAT.
Total Dispatches
FCAT-FIELDNAME = 'TDISP'.
FCAT-HOTSPOT = ' '.
FCAT-OUTPUTLEN = '000016'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'Total Dispatches'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'Q'.
FCAT-DATATYPE = 'QUAN'.
FCAT-DO_SUM = 'X'.
FCAT-JUST = 'R'.
FCAT-NO_ZERO = 'X'.
APPEND FCAT.
CLEAR FCAT. -
Opening Stock and Closing Stock fields and Calculation
Hi,
My report requirement is to display the material, opening stock for the lower date, closing stock for the higher date and the in between all stock operations..how to fetch the opening stock and closing stock for a particular material ???.. what are the tables and fields for calculating them??..
Thanks,
Srithis is the code i wrote..
I had selected the data for the date entered and the previous date(l_date) also..
previous date for the opening stock.
now i am getting only receipts and issues correctly.. opening stock and the remaining
balance fields are not coming properly..please help me..
here rmenge for receipts,imenge for issues.
REPORT ZSTOCK no standard page heading line-size 180.
types: begin of ty_date,
budat type budat,
end of ty_date,
begin of ty_mard,
matnr type matnr,
lgort type lgort_d,
labst type labst,
UMLME TYPE UMLMD,
INSME TYPE INSME,
EINME TYPE EINME,
SPEME TYPE SPEME,
RETME TYPE RETME,
end of ty_mard,
begin of ty_makt,
matnr type matnr,
maktx type maktx,
end of ty_makt,
begin of ty_mbew,
matnr type matnr,
bwkey type bwkey,
lbkum type lbkum,
salk3 type salk3,
end of ty_mbew,
begin of ty_mkpfmseg,
mblnr type mblnr,
budat type budat,
bwart type bwart,
matnr type matnr,
lgort type lgort_d,
shkzg type shkzg,
dmbtr type dmbtr,
menge type mseg-menge,
end of ty_mkpfmseg,
begin of ty_opstock,
matnr type matnr,
rdmbtr type dmbtr,
idmbtr type dmbtr,
bdmbtr type dmbtr,
bmenge type menge_d,
end of ty_opstock,
begin of ty_output,
mblnr type mblnr,
budat type budat,
matnr type matnr,
maktx type maktx,
bwart type bwart,
lgort type lgort_d,
shkzg type shkzg,
rmenge type mseg-menge,
rdmbtr type dmbtr,
imenge type mseg-menge,
idmbtr type dmbtr,
dmbtr type dmbtr,
bdmbtr type dmbtr,
bmenge type menge_d,
end of ty_output.
data: t_date type standard table of ty_date initial size 0,
t_mard type standard table of ty_mard initial size 0,
t_makt type standard table of ty_makt initial size 0,
t_mkpfmseg type standard table of ty_mkpfmseg initial size 0,
t_opstock type standard table of ty_opstock initial size 0,
t_out type standard table of ty_output initial size 0,
w_date type ty_date,
w_mard type ty_mard,
w_makt type ty_makt,
w_mkpfmseg type ty_mkpfmseg,
w_opstock type ty_opstock,
w_out type ty_output,
g_matnr type mara-matnr,
g_lgort type t001l-lgort.
selection-screen begin of block b1 with frame.
parameters:p_werks type t001l-werks obligatory memory id pw.
select-options:s_lgort for g_lgort no-extension no intervals.
select-options: s_matnr for g_matnr.
parameters:p_date type mkpf-budat obligatory.
selection-screen end of block b1.
at selection-screen.
perform sub_validate_date.
start-of-selection.
data: l_date type sy-datum,
l_row type i.
refresh t_date.
select budat from mkpf into table t_date.
sort t_date.
delete adjacent duplicates from t_date.
clear w_date.
read table t_date into w_date with key budat = p_date.
l_row = sy-tabix.
l_row = l_row - 1.
clear w_date.
read table t_date into w_date index l_row.
l_date = w_date-budat.
select k~mblnr
k~budat
s~bwart
s~matnr
s~lgort
s~shkzg
s~dmbtr
s~menge
into table t_mkpfmseg
from mkpf as k inner join mseg as s
on kmblnr = smblnr and
kmjahr = smjahr
where k~budat between l_date and p_date and
s~matnr in s_matnr and
s~werks = p_werks and
s~lgort in s_lgort.
if t_mkpfmseg is not initial.
sort t_mkpfmseg by budat ascending
matnr ascending.
select matnr
lgort
labst
umlme
insme
einme
speme
retme
from mard
into table t_mard
for all entries in t_mkpfmseg
where matnr = t_mkpfmseg-matnr and
werks = p_werks and
lgort in s_lgort.
select matnr
maktx
from makt
into table t_makt
for all entries in t_mkpfmseg
where matnr = t_mkpfmseg-matnr.
endif.
loop at t_mkpfmseg into w_mkpfmseg where budat = l_date.
loop at t_mard into w_mard where matnr = w_mkpfmseg-matnr.
w_opstock-matnr = w_mkpfmseg-matnr.
if w_mkpfmseg-shkzg = 'S'. " Receive
w_opstock-rdmbtr = w_mkpfmseg-dmbtr.
w_opstock-bmenge = w_mard-labst + w_mard-insme + w_mard-speme
+ w_mard-einme + w_mard-retme
- w_mkpfmseg-menge.
elseif w_mkpfmseg-shkzg = 'H'. " Issue
w_opstock-idmbtr = w_mkpfmseg-dmbtr.
w_opstock-bmenge = w_out-bmenge + w_mkpfmseg-menge.
endif.
w_opstock-bdmbtr = w_out-rdmbtr - w_out-idmbtr.
append w_opstock to t_opstock.
clear w_opstock.
endloop.
endloop.
loop at t_mkpfmseg into w_mkpfmseg where budat = p_date.
loop at t_mard into w_mard where matnr = w_mkpfmseg-matnr.
clear w_makt.
read table t_makt into w_makt with key matnr = w_mkpfmseg-matnr.
if sy-subrc = 0.
w_out-budat = w_mkpfmseg-budat.
w_out-matnr = w_mard-matnr.
w_out-maktx = w_makt-maktx.
w_out-lgort = w_mard-lgort.
w_out-mblnr = w_mkpfmseg-mblnr.
w_out-bwart = w_mkpfmseg-bwart.
w_out-shkzg = w_mkpfmseg-shkzg.
if w_mkpfmseg-shkzg = 'S'. " Receive
w_out-rmenge = w_mkpfmseg-menge.
w_out-rdmbtr = w_mkpfmseg-dmbtr.
w_out-imenge = 0.
w_out-bmenge = w_mard-labst + w_mard-insme + w_mard-speme
+ w_mard-einme + w_mard-retme
- w_mkpfmseg-menge.
elseif w_mkpfmseg-shkzg = 'H'. " Issue
w_out-imenge = w_mkpfmseg-menge.
w_out-idmbtr = w_mkpfmseg-dmbtr.
w_out-rmenge = 0.
w_out-bmenge = w_out-bmenge + w_mkpfmseg-menge.
endif.
w_out-bdmbtr = w_out-rdmbtr - w_out-idmbtr.
append w_out to t_out.
clear w_out.
endif.
endloop.
endloop.
write: / 'Material' , 12 'Description' ,40 'Location', 50 'Opening stock',70 'MvT',
83 'Receipts' , 102 'Issues', 118 'Amount',135 'Balance Quan', 155 'Balance Amount'.
loop at t_out into w_out.
write: / w_out-matnr, 12 w_out-maktx, 40 w_out-lgort.
clear w_opstock.
read table t_opstock into w_opstock with key matnr = w_out-matnr.
if sy-subrc = 0.
write: 45 w_out-bmenge.
endif.
write: 70 w_out-bwart,75 w_out-rmenge,92 w_out-imenge,
110 w_out-bdmbtr, 130 w_out-bmenge, 150 w_out-bdmbtr.
endloop.
*& Form SUB_VALIDATE_DATE
FORM SUB_VALIDATE_DATE.
select budat
from mkpf
into table t_date
where budat = p_date.
if t_date is initial.
message e001(zks) with 'select another date range'.
endif.
ENDFORM. " SUB_VALIDATE_DATE
Edited by: Sri on Feb 18, 2009 8:31 AM -
Query for Opening And Closing Stock
Hi Experts...
I need a report for Opening and Closing stocks and Goods Receipt and Goods Issue for Raw Materials and Finished Goods and Consumbles ..instead of going for different reports for each we need a combined report which can display for all Raw Materials, Finished Goods and Consumbles and we need it for a specific date range Material type(Raw MAterials,Finished Goods, Consumbales)
and below is the format i needed.
RAW MATERIALS /FINISHED GOODS/CONSUMBALES
Opening Stock Closing Stock Goods Receipt Goods Issue
Qty Value Qty Value Qty Value Qty Value
Item Name
Regards,
Vamsi.Hi Guys.
I need an Inventory stock report with Item name, Opening Stock,Goods issue Quantity,Goods Received ,Item Price,Location ,(Closing Stock)Total Value.
We need the input by Date Range and Item Group and Location(if Possible) Below is the Code i used to run the report.
Pls Update the Query...
Declare @FromDate Datetime
Declare @ToDate Datetime
Declare @Group nvarchar(10)
Declare @Whse nvarchar(10)
Set @FromDate = (Select min(S0.Docdate) from dbo.OINM S0 where S0.Docdate >='[%0]')
Set @ToDate = (Select max(S1.Docdate) from dbo.OINM s1 where S1.Docdate <='[%1]')
Set @Group = (Select Max(s2.ItmsGrpCod) from dbo.OITB S2 Where S2.ItmsGrpNam = '[%2]')
Set @Whse = (Select Max(s3.Warehouse) from dbo.OINM S3 Where S3.Warehouse = '[%3]')
Select @Whse as 'Warehouse', a.Itemcode, max(a.Dscription), sum(a.[Opening Balance]) as [Opening Balance], sum(a.[IN]) as [IN], sum(a.OUT) as OUT,max(a.Price) as 'Price', ((sum(a.[Opening Balance]) + sum(a.[IN])) - Sum(a.OUT)) as Closing from dbo.OITM I1
Left JOIN (Select N1.Warehouse, N1.Itemcode, N1.Dscription,N1.Price, (sum(N1.inqty)-sum(n1.outqty)) as [Opening Balance], 0 as [IN], 0 as OUT
From dbo.OINM N1
Where N1.DocDate < @FromDate and N1.Warehouse = @Whse
Group By N1.Warehouse,N1.ItemCode,N1.Dscription,N1.Price
Union All
select N1.Warehouse, N1.Itemcode, N1.Dscription,N1.price, 0 as [Opening Balance], sum(N1.inqty) as [IN], 0 as OUT From dbo.OINM N1 Where N1.DocDate >= @FromDate and N1.DocDate <= @ToDate and N1.Inqty >0 and N1.Warehouse = @Whse Group By N1.Warehouse,N1.ItemCode,N1.Dscription,N1.price
Union All
select N1.Warehouse, N1.Itemcode, N1.Dscription,N1.price, 0 as [Opening Balance], 0 as [IN], sum(N1.outqty) as OUT From dbo.OINM N1 Where N1.DocDate >= @FromDate and N1.DocDate <=@ToDate and N1.OutQty > 0 and N1.Warehouse = @Whse Group By N1.Warehouse,N1.ItemCode,N1.Dscription,N1.price) a ON a.ItemCode=I1.ItemCode
where I1.ItmsGrpCod = @Group
Group By a.Itemcode
Order By a.Itemcode
Regards,
Vamsi. -
Dear all
iam trying to generate the opening and closing stock report for normal materials and sub contract material , so what logic i have to uss to generate the report
1) opening stock its movement type
2)recived movement types
3) issues movement type
4) closing stock
standard t-code mb5b
i want to make new report,
waiting for replyHave you tried with MB51 / MB52 ??
Lakshmipathi -
Opening and closing stock from mb5b
Hi Experts
I am writing a code which will display goods reciept, issue, transfer, etc according to movement type .
I have done the coding but the problem is I am not getting the opening stock by period , I want to get sum (lbkum) sum (salk3) into some formulae column .. I want to get the sum of lbkum from mbewh joining mseg,mkpf as period -1
ie if I select 04.03.2009 , I want the sum of stock from mbewh based on period -1 . so what formale I have to write
to get the opening stock on the date selected . The date range is selected from mkpf .
I want to get stock on whatever date selected from mkpf.
SELECT SINGLE * FROM mardh
WHERE matnr = p_matnr
AND werks = p_werks
AND lfmon = p_buper
AND lfgja = p_gjahr.
Regards
Pirozyou can get all data using MC.9 report
here you can get opening and closing stock with values based on material, plant, storage location
Kindly make sure while giving period
here it will take period in month and year i.e if you want opening stock for April then you have to give it as 03.2008 to 03.2008 and closing as 04.2008 to 04.2008
Regards
Edited by: WISH on Apr 23, 2008 1:15 PM -
Opening and Closing Stock Monthwise
hi,
I need to display month wise Stock details like below
month-year Opening-Stock STock-In Stock-Out closing-Stock
I have made the query, but this query gives only monthwise stock-in and stock-out. How do i get Opening-Stock and closing-Stock.
SELECT e.STORE, months.month,
SUM( (CASE WHEN trunc(e.MAT_IN_DATE,'MM') = months.month THEN MVALUE ELSE 0 END) )
Mat_Rcvd,
SUM( (CASE WHEN trunc(E.MAT_OUT_DATE,'MM') = months.month THEN MVALUE ELSE 0 END) ) Mat_Out
FROM
SELECT STORE,ITEM_CODE, SUM(NVL(MQTY,0)) M_QTY, SUM(NVL(MVALUE,0)) MVALUE,
MAT_OUT_DATE, MAT_IN_DATE
FROM
SELECT GD.TO_STORE STORE , GD.ITEM_CODE,
GD.QUANTITY MQTY, GD.AED_RATE * GD.QUANTITY MVALUE, NULL MAT_OUT_DATE , GRN_DATE MAT_IN_DATE
FROM GRN_DETAILS GD , GRN_MASTER GM
WHERE GD.GRN_NO = GM.GRN_NO
UNION ALL
SELECT MI.STORE, MI.ITEM_CODE, (NVL(MI.QUANTITY,0)) MQTY,
MI.QUANTITY * UNIT_RATE MVALUE , mi.ISSUE_DATE MAT_OUT_DATE , NULL MAT_IN_DATE
FROM MATERIAL_ISSUE MI , MINR_MASTER MM
WHERE MI.MIN_NO = MM.MIN_NO
WHERE STORE='ABC'
GROUP BY STORE, ITEM_CODE, MAT_OUT_DATE, MAT_IN_DATE
) E ,
(SELECT add_months( date '2007-07-01', level ) month,
FROM dual
WHERE add_months( date '2007-07-01', level ) < SYSDATE
CONNECT BY level <= 30 )months
GROUP BY e.STORE, months.month
ORDER BY MONTH
/Please consider the following when you post a question. This would help us help you better
1. New features keep coming in every oracle version so please provide Your Oracle DB Version to get the best possible answer.
You can use the following query and do a copy past of the output.
select * from v$version 2. This forum has a very good Search Feature. Please use that before posting your question. Because for most of the questions
that are asked the answer is already there.
3. We dont know your DB structure or How your Data is. So you need to let us know. The best way would be to give some sample data like this.
I have the following table called sales
with sales
as
select 1 sales_id, 1 prod_id, 1001 inv_num, 120 qty from dual
union all
select 2 sales_id, 1 prod_id, 1002 inv_num, 25 qty from dual
select *
from sales 4. Rather than telling what you want in words its more easier when you give your expected output.
For example in the above sales table, I want to know the total quantity and number of invoice for each product.
The output should look like this
Prod_id sum_qty count_inv
1 145 2 5. When ever you get an error message post the entire error message. With the Error Number, The message and the Line number.
6. Next thing is a very important thing to remember. Please post only well formatted code. Unformatted code is very hard to read.
Your code format gets lost when you post it in the Oracle Forum. So in order to preserve it you need to
use the {noformat}{noformat} tags.
The usage of the tag is like this.
<place your code here>\
7. If you are posting a *Performance Related Question*. Please read
{thread:id=501834} and {thread:id=863295}.
Following those guide will be very helpful.
8. Please keep in mind that this is a public forum. Here No question is URGENT.
So use of words like *URGENT* or *ASAP* (As Soon As Possible) are considered to be rude.
Maybe you are looking for
-
Using iMac with OSX 10.7.5. Can send but not receive emails. No problem with internet account. Server rep tried everything and suggested perhaps a corrupted file in the op syst. Any ideas?
-
Is there anyone at all here who has successfully compiled and deployed an SSRS custom report item in VS2012? Is there a demo out there that actually works in VS2012? Is there anyone who has actually been able to compile and deploy that apparently o
-
Fonts Not Available in Photoshop CS3 (Windows 7)?
Hello, My desktop computer crashed yesterday and I had to run out last night and pick up a new unit as I'm trying to meet a number of deadlines (and not having much luck getting the work done in my laptop). The new computer uses Windows 7 as the Oper
-
Convert Excel to PDF using specific font Avant Garde ends up with missing text
Hello, hopefully someone can help me out. I have a problem with converting a specific Excel document to PDF using Acrobat 6.0.6. Whenever this document is converted to PDF, on one specific computer there is are missing lines of text. The font of t
-
Loving the translucency in KDE 3.5.8
Did a pacman -Syu last night, and suddenly today, all my KDE windows have this cool translucency thing going on. I never even noticed an option for such behavior before, but this is very cool. Anyone else notice/like/dislike?