Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
27 views17 pages

Inventory Queries

Uploaded by

veeramani
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
27 views17 pages

Inventory Queries

Uploaded by

veeramani
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 17

--------------------------------------------------INVENTORY

QUERIES--------------------------------------------------------

--> Warehouse Item Master Data Table


SELECT
OITM.ItemCode AS 'Item Code',
OITM.ItemName AS 'Item Name',
OITW.WhsCode AS 'Warehouse Code',
OITW.OnHand AS 'Quantity On Hand'
FROM OITM -- Item Master Data Table
INNER JOIN OITW
ON
OITM.ItemCode = OITW.ItemCode
ORDER BY
OITM.ItemCode;

-----------------------------------------------------------------------------------
----------------------------------------

--> Replace 'WH1' with the desired warehouse code


SELECT
OITM.ItemCode AS 'Item Code',
OITM.ItemName AS 'Item Name',
OITW.WhsCode AS 'Warehouse Code',
OITW.OnHand AS 'Quantity On Hand'
FROM
OITM
INNER JOIN
OITW
ON
OITM.ItemCode = OITW.ItemCode
WHERE
OITW.WhsCode = 'WH1'
ORDER BY
OITM.ItemCode;

-----------------------------------------------------------------------------------
----------------------------------------
-->

SELECT
OITM.ItemCode AS 'Item Code',
OITM.ItemName AS 'Item Name',
OITW.WhsCode AS 'Warehouse Code',
OITW.OnHand AS 'Quantity On Hand',
OITW.MinStock AS 'Minimum Stock'
FROM
OITM
INNER JOIN OITW ON OITM.ItemCode = OITW.ItemCode
WHERE OITW.OnHand < OITW.MinStock
ORDER BY OITM.ItemCode;

-----------------------------------------------------------------------------------
----------------------------------------

--> Assuming valuation based on average price


SELECT
OITM.ItemCode AS 'Item Code',
OITM.ItemName AS 'Item Name',
OITW.WhsCode AS 'Warehouse Code',
OITW.OnHand AS 'Quantity On Hand',
OITW.OnHand * OITM.AvgPrice AS 'Inventory Value'
FROM OITM
INNER JOIN OITW ON OITM.ItemCode = OITW.ItemCode
ORDER BY OITM.ItemCode;

----------------------------------------RETRIEVING INVENTORY TRANSFER


QUERIES----------------------------------------------

--> Basic Inventory Transfer Information


SELECT
OWTR.DocNum AS 'Document Number',
OWTR.DocDate AS 'Document Date',
OWTR.CardCode AS 'Card Code',
OWTR.CardName AS 'Card Name',
OWTR.Filler AS 'From Warehouse',
OWTR.ToWhsCode AS 'To Warehouse'
FROM
OWTR
ORDER BY
OWTR.DocDate DESC;

-----------------------------------------------------------------------------------
----------------------------------------

-->Retrieve Detailed Inventory Transfer Information

SELECT
OWTR.DocNum AS 'Document Number',
OWTR.DocDate AS 'Document Date',
OWTR.CardCode AS 'Card Code',
OWTR.CardName AS 'Card Name',
OWTR.Filler AS 'From Warehouse',
OWTR.ToWhsCode AS 'To Warehouse',
WTR1.ItemCode AS 'Item Code',
WTR1.Dscription AS 'Item Description',
WTR1.Quantity AS 'Quantity',
WTR1.Price AS 'Price',
WTR1.LineTotal AS 'Line Total'
FROM
OWTR
INNER JOIN
WTR1
ON
OWTR.DocEntry = WTR1.DocEntry
ORDER BY
OWTR.DocDate DESC, OWTR.DocNum;

-----------------------------------------------------------------------------------
----------------------------------------

--> Retrieve Inventory Transfers for a Specific Warehouse

SELECT
OWTR.DocNum AS 'Document Number',
OWTR.DocDate AS 'Document Date',
OWTR.CardCode AS 'Card Code',
OWTR.CardName AS 'Card Name',
OWTR.Filler AS 'From Warehouse',
OWTR.ToWhsCode AS 'To Warehouse',
WTR1.ItemCode AS 'Item Code',
WTR1.Dscription AS 'Item Description',
WTR1.Quantity AS 'Quantity',
WTR1.Price AS 'Price',
WTR1.LineTotal AS 'Line Total'
FROM
OWTR
INNER JOIN
WTR1
ON
OWTR.DocEntry = WTR1.DocEntry
WHERE
OWTR.Filler = 'WH1' -- Replace 'WH1' with the desired warehouse code
OR OWTR.ToWhsCode = 'WH1' -- Include transfers where 'WH1' is the destination
ORDER BY
OWTR.DocDate DESC, OWTR.DocNum;

-----------------------------------------------------------------------------------
----------------------------------------

-->Retrieve Inventory Transfers for a Specific Item

SELECT
OWTR.DocNum AS 'Document Number',
OWTR.DocDate AS 'Document Date',
OWTR.CardCode AS 'Card Code',
OWTR.CardName AS 'Card Name',
OWTR.Filler AS 'From Warehouse',
OWTR.ToWhsCode AS 'To Warehouse',
WTR1.ItemCode AS 'Item Code',
WTR1.Dscription AS 'Item Description',
WTR1.Quantity AS 'Quantity',
WTR1.Price AS 'Price',
WTR1.LineTotal AS 'Line Total'
FROM
OWTR
INNER JOIN
WTR1
ON
OWTR.DocEntry = WTR1.DocEntry
WHERE
WTR1.ItemCode = 'A1000' -- Replace 'A1000' with the desired item code
ORDER BY
OWTR.DocDate DESC, OWTR.DocNum;

-----------------------------------------------------------------------------------
----------------------------------------

-->Retrieve Inventory Transfers within a Date Range

SELECT
OWTR.DocNum AS 'Document Number',
OWTR.DocDate AS 'Document Date',
OWTR.CardCode AS 'Card Code',
OWTR.CardName AS 'Card Name',
OWTR.Filler AS 'From Warehouse',
OWTR.ToWhsCode AS 'To Warehouse',
WTR1.ItemCode AS 'Item Code',
WTR1.Dscription AS 'Item Description',
WTR1.Quantity AS 'Quantity',
WTR1.Price AS 'Price',
WTR1.LineTotal AS 'Line Total'
FROM
OWTR
INNER JOIN
WTR1
ON
OWTR.DocEntry = WTR1.DocEntry
WHERE
OWTR.DocDate BETWEEN '2023-01-01' AND '2023-12-31' -- Replace with desired
date range
ORDER BY
OWTR.DocDate DESC, OWTR.DocNum;

-----------------------------------------------------------------------------------
----------------------------------------

-->Retrieve Inventory Transfers with Total Amounts

SELECT
OWTR.DocNum AS 'Document Number',
OWTR.DocDate AS 'Document Date',
OWTR.CardCode AS 'Card Code',
OWTR.CardName AS 'Card Name',
OWTR.Filler AS 'From Warehouse',
OWTR.ToWhsCode AS 'To Warehouse',
SUM(WTR1.LineTotal) AS 'Total Amount'
FROM
OWTR
INNER JOIN
WTR1
ON
OWTR.DocEntry = WTR1.DocEntry
GROUP BY
OWTR.DocNum, OWTR.DocDate, OWTR.CardCode, OWTR.CardName, OWTR.Filler,
OWTR.ToWhsCode
ORDER BY
OWTR.DocDate DESC, OWTR.DocNum;

----------------------------------------------------INVENTORY
AGING-------------------------------------------------------

----> AGEING INVENTORY

/* Select From Dbo.OITL XX */


Declare @FD Datetime
Declare @Whs Nvarchar(100)
--Select @FD=/* XX.DocDate */[%0]
--Select @FD='20220707'
SELECT ItemCode,ItemName,[Item Group],BatchNo,Location,
SUM(QTY) QTY
,SUM(Qty*Price) Value
,Sum(Case When AgingDay>=0 And AgingDay<=30 Then Qty Else 0 End) [0-30 Day Qty]
,Sum(Case When AgingDay>=0 And AgingDay<=30 Then Qty*Price Else 0 End) [0-30 Day
Value]
,Sum(Case When AgingDay>=31 And AgingDay<=60 Then Qty Else 0 End) [31-60 Day Qty]
,Sum(Case When AgingDay>=31 And AgingDay<=60 Then Qty*Price Else 0 End) [31-60 Day
Value]
,Sum(Case When AgingDay>=61 And AgingDay<=90 Then Qty Else 0 End) [61-90 Day Qty]
,Sum(Case When AgingDay>=61 And AgingDay<=90 Then Qty*Price Else 0 End) [61-90 Day
Value]
,Sum(Case When AgingDay>=91 And AgingDay<=120 Then Qty Else 0 End) [91-120 Day Qty]
,Sum(Case When AgingDay>=91 And AgingDay<=120 Then Qty*Price Else 0 End) [91-120
Day Value]
,Sum(Case When AgingDay>=121 And AgingDay<=150 Then Qty Else 0 End) [121-150 Day
Qty]
,Sum(Case When AgingDay>=121 And AgingDay<=150 Then Qty*Price Else 0 End) [121-150
Day Value]
,Sum(Case When AgingDay>=151 And AgingDay<=180 Then Qty Else 0 End) [151-180 Day
Qty]
,Sum(Case When AgingDay>=151 And AgingDay<=180 Then Qty*Price Else 0 End) [151-180
Day Value]
,Sum(Case When AgingDay>=181 And AgingDay<=360 Then Qty Else 0 End) [181-360 Day
Qty]
,Sum(Case When AgingDay>=181 And AgingDay<=360 Then Qty*Price Else 0 End) [181-360
Day Value]
,Sum(Case When AgingDay>=361 And AgingDay<=730 Then Qty Else 0 End) [361-730 Day
Qty]
,Sum(Case When AgingDay>=361 And AgingDay<=730 Then Qty*Price Else 0 End) [361-730
Day Value]
,Sum(Case When AgingDay>=731 Then Qty Else 0 End) [731 Above Qty]
,Sum(Case When AgingDay>=731 Then Qty*Price Else 0 End) [731 Above Value]
FROM(
SELECT C.DistNumber BatchNo,B.ItemCode,MAX(I.ItemName) ItemName,IG.ItmsGrpNam 'Item
Group',B.LocCode
,SUM(A.Quantity) Qty,DATEDIFF(DD,(C.INDate),@FD) AgingDay,X.AvgPrice 'Price'
,'Tamil Nadu' Location
FROM ITL1 A WITH(NOLOCK)
INNER JOIN OITL B WITH(NOLOCK) ON a.LogEntry = b.LogEntry
INNER JOIN OBTN c WITH(NOLOCK) ON a.ItemCode = c.ItemCode and a.SysNumber =
c.SysNumber AND A.MdAbsEntry=C.AbsEntry
INNER JOIN OITM I WITH(NOLOCK) ON B.ItemCode=I.ItemCode
INNER JOIN OITB IG WITH(NOLOCK) ON I.ItmsGrpCod=IG.ItmsGrpCod
INNER JOIN OITW X WITH(NOLOCK) ON X.WhsCode=B.LocCode AND X.ItemCode=B.ItemCode
INNER JOIN OWHS E WITH(NOLOCK) ON E.WhsCode=B.LocCode
WHERE E.Location=43 AND B.DocDate<=@FD
GROUP BY c.DistNumber,B.ItemCode,B.LocCode,IG.ItmsGrpNam,X.AvgPrice,DATEDIFF(DD,
(C.INDate),@FD)
HAVING SUM(A.Quantity)<>0
)X
Group By ItemCode,ItemName,[Item Group],BatchNo,Location

-----------------------------------------------------------------------------------
---------------
----> INVENTORY AUDIT REP

SELECT T0.[DocDate], case when T0.[TransType] = 13 then 'AR'

when T0.[TransType] = 14 then 'ARCredit'

when T0.[TransType] = 15 then 'Delivery'

when T0.[TransType] = 16 then 'SalesReturn'

when T0.[TransType] = 203 then 'ARDown'

when T0.[TransType] = 20 then 'Goods Receipt'

when T0.[TransType] = 21 then 'Goods Return'

when T0.[TransType] = 204 then 'APDown'

when T0.[TransType] = 18 then 'APInvoice'

when T0.[TransType] = 13 then 'AP Credit Memo'

when T0.[TransType] = 69 then 'LandedCost'

when T0.[TransType] = 24 then 'Incoming Payment'

when T0.[TransType] = 25 then 'Deposit'

when T0.[TransType] = 46 then 'VendorPayment'

when T0.[TransType] = 57 then 'Check for Payment'

when T0.[TransType] = 76 then 'Postdated Check'

when T0.[TransType] = 58 then 'Inventory list'

when T0.[TransType] = 59 then T0.JrnlMemo

when T0.[TransType] = 60 then T0.JrnlMemo

when T0.[TransType] = 67 then 'Inventory Transfer'

when T0.[TransType] = 68 then 'Work Instruction'

when T0.[TransType] = 162 then 'Inventory Valuation'

when T0.[TransType] = 202 then 'Production order'

when T0.[TransType] = -2 then 'Opening Balance'

when T0.[TransType] = -3 then 'Closing Balance'

when T0.[TransType] = 30 then 'Journal Entry'

when T0.[TransType] = 321 then 'Internal Reconilation'

when T0.[TransType] = 10000046 then 'Data archive'


when T0.[TransType] = 310000001 then 'Initial Qty'

when T0.[TransType] = 10000071 then 'Inventory posting' end as 'Doc Type',


T0.[BASE_REF] as Document, T0.[Warehouse] as Whse, T1.[FormatCode] as 'G/L Acct/BP
Code', T1.[AcctName] as 'G/L Acct/BP Name', T0.ItemCode, T0.Dscription,
sum(T0.[InQty]) as 'Rec.Qty', sum(T0.[OutQty]) as 'Iss. Qty', T0.[Currency], T0.
[Price] as 'Price after Disc.',sum(T0.[InQty] - T0.[OutQty]) as 'Balance.'
FROM OINM T0 INNER JOIN OACT T1 ON t0.cardcode = T1.AcctCode
--WHERE T0.DocDate >= [%1] and T0.DocDate <= [%2]
group by T0.[DocDate],T0.[TransType],T0.[BASE_REF],T0.[Warehouse],T1.
[FormatCode],T1.[AcctName],T0.[Currency], T0.
[Price],T0.ItemCode,T0.Dscription,T0.JrnlMemo

union

SELECT T0.[DocDate], case when T0.[TransType] = 13 then 'AR'

when T0.[TransType] = 14 then 'ARCredit'

when T0.[TransType] = 15 then 'Delivery'

when T0.[TransType] = 16 then 'SalesReturn'

when T0.[TransType] = 203 then 'ARDown'

when T0.[TransType] = 20 then 'Goods Receipt'

when T0.[TransType] = 21 then 'Goods Return'

when T0.[TransType] = 204 then 'APDown'

when T0.[TransType] = 18 then 'APInvoice'

when T0.[TransType] = 13 then 'AP Credit Memo'

when T0.[TransType] = 69 then 'LandedCost'

when T0.[TransType] = 24 then 'Incoming Payment'

when T0.[TransType] = 25 then 'Deposit'

when T0.[TransType] = 46 then 'VendorPayment'

when T0.[TransType] = 57 then 'Check for Payment'

when T0.[TransType] = 76 then 'Postdated Check'

when T0.[TransType] = 58 then 'Inventory list'

when T0.[TransType] = 59 then T0.JrnlMemo

when T0.[TransType] = 60 then T0.JrnlMemo

when T0.[TransType] = 67 then 'Inventory Transfer'

when T0.[TransType] = 68 then 'Work Instruction'

when T0.[TransType] = 162 then 'Inventory Valuation'


when T0.[TransType] = 202 then 'Production order'

when T0.[TransType] = -2 then 'Opening Balance'

when T0.[TransType] = -3 then 'Closing Balance'

when T0.[TransType] = 30 then 'Journal Entry'

when T0.[TransType] = 321 then 'Internal Reconilation'

when T0.[TransType] = 10000046 then 'Data archive'

when T0.[TransType] = 310000001 then 'Initial Qty'

when T0.[TransType] = 10000071 then 'Inventory posting' end as 'Doc Type',


T0.[BASE_REF] as Document, T0.[Warehouse] as Whse, T1.[cardCode] as 'G/L Acct/BP
Code', T1.[cardName] as 'G/L Acct/BP Name', T0.ItemCode, T0.Dscription,
sum(T0.[InQty]) as 'Rec.Qty', sum(T0.[OutQty]) as 'Iss. Qty', T0.[Currency], T0.
[Price] as 'Price after Disc.',sum(T0.[InQty] - T0.[OutQty]) as 'Balance.'
FROM OINM T0 INNER JOIN OCRD T1 ON t0.cardcode = T1.cardcode

----WHERE T0.DocDate >= [%1] and T0.DocDate <= [%2]


group by T0.[DocDate],T0.[TransType],T0.[BASE_REF],T0.[Warehouse],T1.[cardCode],T1.
[cardName],T0.[Currency], T0.[Price],T0.ItemCode,T0.Dscription,T0.JrnlMemo
Order by T0.DocDate, T0.ItemCode

-----------------------------------------------------------------------------------
---------------

----> INVENTORY AUDIT

--/* Select * from OINM X */


--Declare @FD Date,@TD Date

--Set @FD=/* X.DocDate */[%0]


--set @TD=/* X.DocDate */[%1]

Select ItemCode,Dscription,GroupName,Warehouse,WhsName,Sum(OB) 'OB',Sum(OBValue)'OB


Value'
,Sum([InQty])InQty,Sum(Invalue)Receipt_value,sum(OutQty)OutQty,Sum(outvalue)
Issue_Value
,Sum(OB+InQty)-sum(OutQty) 'Closing Balance',Sum(OBValue+Invalue)-Sum(outvalue)
'Closing value'

From
(
Select A.ItemCode,C.ItemName Dscription,d.itmsgrpnam groupname,Warehouse,Sum(InQty-
OutQty) 'OB',Sum((InQty*CalcPrice)-(OutQty*CalcPrice))
'OBValue',0'InQty',0'Invalue'
,0 'OutQty',0'outvalue' ,B.WhsName
from OINM A With(nolock)
Inner Join OWHS B With(nolock) On A.Warehouse=B.WhsCode
LEFT JOIN OITM C With(nolock) On A.ItemCode=C.ItemCode
left join OITB D WITH(nolock) on d.itmsgrpcod=c.itmsgrpcod
--Where DocDate <@FD
Group by A.ItemCode,C.ItemName,Warehouse,B.WhsName,d.itmsgrpnam

Union All
Select A.ItemCode,C.ItemName,d.itmsgrpnam groupname,Warehouse,0 'OB',0,Sum(InQty)
'In Qty',Sum(InQty*CalcPrice)'Invalue',Sum(OutQty) 'OutQty'
,Sum(OutQty*CalcPrice)'outvalue',B.WhsName
from OINM A With(nolock)
Inner Join OWHS B With(nolock) On A.Warehouse=B.WhsCode
LEFT JOIN OITM C With(nolock) On A.ItemCode=C.ItemCode
left join OITB D WITH(nolock) on d.itmsgrpcod=c.itmsgrpcod
--Where DocDate Between @FD and @TD
Group by A.ItemCode,C.ItemName,Warehouse,B.WhsName,d.itmsgrpnam
)Y
Group by ItemCode,Dscription,Warehouse,WhsName,groupname
Order by ItemCode,Warehouse

-----------------------------------------------------------------------------------
---------------

----> INVENTORY BASIC QUERY

SELECT
T0.ItemCode,
T0.ItemName,
T0.OnHand AS StockQuantity,
OWHS.WhsCode AS WarehouseCode,
OWHS.WhsName AS WarehouseName,
T0.*,
OITW.*

FROM OITM T0
LEFT JOIN OITW ON T0.ItemCode = OITW.ItemCode
LEFT JOIN OWHS ON OITW.WhsCode = OWHS.WhsCode

--------------------------------------------INVENTORY POSTING
QUERIES------------------------------------------------------

----> INVENTORY POSTING

--/* SELECT FROM OINM X */


--DECLARE @FD Date,@TD Date,@Itm NVARCHAR(50),@INa NVARCHAR(10),@ItmGrp
NVARCHAR(50)
--SET @FD =/* X.DocDate */[%0]
--SET @TD =/* X.DocDate */[%1]
--SET @Itm =/* X.ItemCode */'[%2]'
--/* SELECT FROM OITM Y */
--SET @INa =/* Y.ItemName */'[%3]'
--/* SELECT FROM OITB XX */
--SET @ItmGrp =/* XX.ItmsGrpNam */'[%4]'

----SET @FD ='20210401'


----SET @TD ='20210927'
----SET @Itm ='BIM 050'
------SET @DNo =/* X.BASE_REF */'[%3]'
------/* SELECT FROM OITB XX */
------SET @ItmGrp =/* XX.ItmsGrpNam */'[%4]'

Select A.ItemCode,C.Itemname,D.ItmsGrpNam,A.DocDate "Posting date",A.BASE_REF


DocNum
,case
when A.TransType=13 then 'AR Invoice'
when A.TransType=14 then 'AR Credit Note'
when A.TransType=15 then 'Delivery'
when A.TransType=16 then 'Returns'
when A.TransType=18 then 'AP Invoice'
when A.TransType=19 then 'AP Debit Note'
when A.TransType=20 then 'Goods Receipt Note'
when A.TransType=21 then 'Goods Return'
when A.TransType=24 then 'Incoming Payment'
when A.TransType=30 then 'Journal Entry'
when A.TransType=59 then 'Goods Receipt'
when A.TransType=46 then 'Outgoing Payment'
when A.TransType=60 then 'Goods Issue'
when A.TransType=67 then 'Inventory Transfer'
when A.TransType=162 then 'Inventory Revaluation'
when A.TransType=10000071 then 'Inventory Posting'
when A.TransType=310000001 then 'Opening' ELSE ''
End "Document catogry"
,A.Warehouse,E.CardCode "G/L Acct/BP Code",E.CardName "G/L Acct/BP Name"
,(ISNULL(A.InQty,0)) RecQty,(ISNULL(A.OutQty,0)) IssueQty
,Sum(A.InQty-A.OutQty) over(partition by a.itemcode order by A.DocDate,A.transnum)
Balance
,C.InvntryUom ,(A.Price) "Price Before DisCount",A.Comments
"Remarks",A.Ref1,X1.BatchNum
From OINM A with(nolock)
Left Join OITM C with(nolock) On C.ItemCode=A.ItemCode
left Join OITB D with(nolock) on C.ItmsGrpCod=D.ItmsGrpCod
Left Join OCRD E with(nolock) on A.CardCode=E.CardCode
LEFT JOIN (

SELECT A.ItemCode,A.[Product Group],A.WhsCode,A.BatchNum,A.InDate


,SUM(CASE WHEN A.Direction=1 then -1 else 1 END*A.Quantity) 'Quantity' FROM (SELECT
MIN(b.LogEntry) as LogEntry,MIN(b.ItemCode) as [ItemCode],MIN(c.DistNumber) as
[BatchNum],MIN(ISNULL(C.InDate,C.CreateDate)) InDate,
MIN(b.LocCode) as [WhsCode],MIN(b.ItemName) as [ItemName],MIN(IG.ItmsGrpNam)
'Product Group',MIN(b.ApplyType) as [BaseType],MIN(b.ApplyEntry) as [BaseEntry],
MIN(b.AppDocNum) as [BaseNum],MIN(b.ApplyLine) as [BaseLinNum],MIN(b.DocDate)
as [DocDate],
(CASE WHEN ABS(SUM(a.Quantity)) = 0 THEN SUM(a.AllocQty) ELSE ABS(SUM(a.Quantity))
END ) as [Quantity],
(CASE WHEN SUM(a.Quantity) > 0 THEN 0 WHEN SUM(a.Quantity) < 0 THEN 1 ELSE 2 END)
as [Direction]
FROM ITL1 a WITH(NOLOCK) INNER JOIN OITL b WITH(NOLOCK) ON a.LogEntry =
b.LogEntry
INNER JOIN OBTN c WITH(NOLOCK) ON a.ItemCode = c.ItemCode and a.SysNumber =
c.SysNumber AND A.MdAbsEntry=C.AbsEntry
INNER JOIN OITM I WITH(NOLOCK) ON B.ItemCode=I.ItemCode INNER JOIN OITB IG
WITH(NOLOCK) ON I.ItmsGrpCod=IG.ItmsGrpCod WHERE B.ItemCode='BIM 050'

GROUP BY b.ItemCode, a.SysNumber, b.ApplyType, b.ApplyEntry,


b.ApplyLine, b.LocCode, b.StockEff

having (SUM(b.DocQty) <> 0)

OR (SUM(b.DefinedQty) <> 0)

OR (SUM(b.DocQty) = 0 and b.StockEff = 2

and min(b.BaseType) <> 17 and min(b.BaseType) <>


13 ) ) A

GROUP BY A.ItemCode,A.WhsCode,A.BatchNum,A.InDate,A.[Product Group] HAVING SUM(CASE


WHEN A.Direction=1 then -1 else 1 END*A.Quantity)<>0)
X1 on X1.ItemCode=A.ItemCode and X1.WhsCode=A.Warehouse
--Where-- C.ItemCode= 'BIM 050'
--(A.DOCDATE>=@FD AND A.DocDate<=@TD) and
--(a.itemcode=@Itm or @Itm='')
--And (C.ItemName=@INa or @INa='') And
--(D.ItmsGrpNam=@ItmGrp or @ItmGrp='')

Group By
A.ItemCode,C.Itemname,D.ItmsGrpNam,A.DocDate ,A.BASE_REF,A.TransType,A.Warehouse,E.
CardCode
,E.CardName ,C.InvntryUom,A.Comments,A.InQty,A.OutQty,a.Price,A.TransNum,A.Ref1,X1.
BatchNum

-----------------------------------------------------------------------------------
---------------

----> INVENTORY POSTING(2)

--/* SELECT FROM OINM X */


--DECLARE @FD Date,@TD Date,@Itm NVARCHAR(50),@INa NVARCHAR(10),@ItmGrp
NVARCHAR(50)
--SET @FD =/* X.DocDate */[%0]
--SET @TD =/* X.DocDate */[%1]
--SET @Itm =/* X.ItemCode */'[%2]'
--/* SELECT FROM OITM Y */
--SET @INa =/* Y.ItemName */'[%3]'
--/* SELECT FROM OITB XX */
--SET @ItmGrp =/* XX.ItmsGrpNam */'[%4]'

--SET @FD ='20210401'


--SET @TD ='20210927'
--SET @Itm ='BIM 050'
----SET @DNo =/* X.BASE_REF */'[%3]'
----/* SELECT FROM OITB XX */
----SET @ItmGrp =/* XX.ItmsGrpNam */'[%4]'

Select A.ItemCode,C.Itemname,D.ItmsGrpNam,A.DocDate "Posting date",A.BASE_REF


DocNum
,case
when A.TransType=13 then 'AR Invoice'
when A.TransType=14 then 'AR Credit Note'
when A.TransType=15 then 'Delivery'
when A.TransType=16 then 'Returns'
when A.TransType=18 then 'AP Invoice'
when A.TransType=19 then 'AP Debit Note'
when A.TransType=20 then 'Goods Receipt Note'
when A.TransType=21 then 'Goods Return'
when A.TransType=24 then 'Incoming Payment'
when A.TransType=30 then 'Journal Entry'
when A.TransType=59 then 'Goods Receipt'
when A.TransType=46 then 'Outgoing Payment'
when A.TransType=60 then 'Goods Issue'
when A.TransType=67 then 'Inventory Transfer'
when A.TransType=162 then 'Inventory Revaluation'
when A.TransType=10000071 then 'Inventory Posting'
when A.TransType=310000001 then 'Opening' ELSE ''
End "Document catogry"
,A.Warehouse,E.CardCode "G/L Acct/BP Code",E.CardName "G/L Acct/BP Name"
,(ISNULL(A.InQty,0)) RecQty,(ISNULL(A.OutQty,0)) IssueQty
,Sum(A.InQty-A.OutQty) over(partition by a.itemcode order by A.DocDate,A.transnum)
Balance
,C.InvntryUom ,(A.Price) "Price Before DisCount",A.Comments
"Remarks",A.Ref1,X1.BatchNum
From OINM A with(nolock)
Left Join OITM C with(nolock) On C.ItemCode=A.ItemCode
left Join OITB D with(nolock) on C.ItmsGrpCod=D.ItmsGrpCod
Left Join OCRD E with(nolock) on A.CardCode=E.CardCode
LEFT JOIN (

SELECT A.ItemCode,A.[Product Group],A.WhsCode,A.BatchNum,A.InDate


,SUM(CASE WHEN A.Direction=1 then -1 else 1 END*A.Quantity) 'Quantity' FROM (SELECT
MIN(b.LogEntry) as LogEntry,MIN(b.ItemCode) as [ItemCode],MIN(c.DistNumber) as
[BatchNum],MIN(ISNULL(C.InDate,C.CreateDate)) InDate,
MIN(b.LocCode) as [WhsCode],MIN(b.ItemName) as [ItemName],MIN(IG.ItmsGrpNam)
'Product Group',MIN(b.ApplyType) as [BaseType],MIN(b.ApplyEntry) as [BaseEntry],
MIN(b.AppDocNum) as [BaseNum],MIN(b.ApplyLine) as [BaseLinNum],MIN(b.DocDate)
as [DocDate],
(CASE WHEN ABS(SUM(a.Quantity)) = 0 THEN SUM(a.AllocQty) ELSE ABS(SUM(a.Quantity))
END ) as [Quantity],
(CASE WHEN SUM(a.Quantity) > 0 THEN 0 WHEN SUM(a.Quantity) < 0 THEN 1 ELSE 2 END)
as [Direction]
FROM ITL1 a WITH(NOLOCK) INNER JOIN OITL b WITH(NOLOCK) ON a.LogEntry =
b.LogEntry
INNER JOIN OBTN c WITH(NOLOCK) ON a.ItemCode = c.ItemCode and a.SysNumber =
c.SysNumber AND A.MdAbsEntry=C.AbsEntry
INNER JOIN OITM I WITH(NOLOCK) ON B.ItemCode=I.ItemCode INNER JOIN OITB IG
WITH(NOLOCK) ON I.ItmsGrpCod=IG.ItmsGrpCod WHERE B.ItemCode='BIM 050'

GROUP BY b.ItemCode, a.SysNumber, b.ApplyType, b.ApplyEntry,


b.ApplyLine, b.LocCode, b.StockEff

having (SUM(b.DocQty) <> 0)

OR (SUM(b.DefinedQty) <> 0)

OR (SUM(b.DocQty) = 0 and b.StockEff = 2

and min(b.BaseType) <> 17 and min(b.BaseType) <>


13 ) ) A

GROUP BY A.ItemCode,A.WhsCode,A.BatchNum,A.InDate,A.[Product Group] HAVING SUM(CASE


WHEN A.Direction=1 then -1 else 1 END*A.Quantity)<>0)
X1 on X1.ItemCode=A.ItemCode and X1.WhsCode=A.Warehouse
--Where C.ItemCode= 'BIM 050'
--(A.DOCDATE>=@FD AND A.DocDate<=@TD) and
--(a.itemcode=@Itm or @Itm='')
--And (C.ItemName=@INa or @INa='') And
--(D.ItmsGrpNam=@ItmGrp or @ItmGrp='')

Group By
A.ItemCode,C.Itemname,D.ItmsGrpNam,A.DocDate ,A.BASE_REF,A.TransType,A.Warehouse,E.
CardCode
,E.CardName ,C.InvntryUom,A.Comments,A.InQty,A.OutQty,a.Price,A.TransNum,A.Ref1,X1.
BatchNum
-----------------------------------------------------------------------------------
---------------

----> INVENTORY POSTING LIST WITH BATCH

/* Select From Dbo.OINV XX */


Declare @FD DateTime
Declare @TD DateTime
/* Select From Dbo.OITM YY */
Declare @Item Nvarchar(100)
/* Select From Dbo.OITB XY */
Declare @ItemGrp Nvarchar(100)
/* Select From Dbo.OWHS ZZ */
Declare @Whs Nvarchar(100)

--Select @FD=/* XX.DocDate */[%0]


--Select @TD=/* XX.DocDate */[%1]
Select @ItemGrp=/* XY.ItmsGrpNam */'[%2]'
Select @Item=/* YY.ItemCode */'[%3]'
Select @Whs=/* ZZ.WhsCode */'[%4]'

SELECT ItemCode,ItemName,ItmsGrpNam,DocDate,Document,BatchNo,DocType,Whs Warehouse,


[G/L Acct/BP Code],[G/L Acct/BP Name],
[Rec.Qty],[Iss. Qty],
CASE WHEN Dir=1 THEN 0.00000 ELSE Qty END BatchInQty
,CASE WHEN Dir=1 THEN Qty ELSE 0.00000 END BatchOutQty,
UOM,[Price after Disc.],Balance
FROM
(SELECT T0.Itemcode,Null [DocDate],'OP' 'DocType',NUll as Document, Null
[Warehouse] ,Null 'G/L Acct/BP Code',
Null'G/L Acct/BP Name', 0 as 'Rec.Qty', 0 'Iss. Qty', NUll [Currency],
Null 'Price after Disc.'
,sum(T0.[InQty] - T0.[OutQty]) as 'Balance.' , NUll CalcPrice
,Sum(ISNULL(InQty,0)*ISNULL(CalcPrice,0))-
Sum(ISNULL(OutQty,0)*ISNULL(CalcPrice,0)) Ob,
sum(T0.[InQty] - T0.[OutQty]) as Balance,Null Whs,I.InvntryUom
UOM,I.ItemName,IG.ItmsGrpNam ,NUll BatchNo,0 Qty,0 Dir
FROM OINM T0
INNER JOIN OITM I WITH(NOLOCK) ON T0.ItemCode=I.ItemCode
INNER JOIN OITB IG WITH(NOLOCK) ON I.ItmsGrpCod=IG.ItmsGrpCod
--WHERE T0.DocDate>@FD AND (T0.ItemCode=@Item OR @Item='') AND
(IG.ItmsGrpNam=@ItemGrp OR @ItemGrp='')
-- And (T0.Warehouse=@Whs OR @Whs='')
--WHERE T0.Itemcode='100060' and T0.DocDate < '20220401' --and '20220405')--
and t0.BASE_REF='22230105'
GROUP BY T0.Itemcode,I.InvntryUom,I.ItemName,IG.ItmsGrpNam

UNION ALL

SELECT T0.Itemcode,T0.[DocDate],
CASE WHEN T0.[TransType] = 13 THEN 'AR'
WHEN T0.[TransType] = 14 THEN 'ARCredit'
WHEN T0.[TransType] = 15 THEN 'Delivery'
WHEN T0.[TransType] = 16 THEN 'SalesReturn'
WHEN T0.[TransType] = 203 THEN 'ARDown'
WHEN T0.[TransType] = 20 THEN 'Goods Receipt'
WHEN T0.[TransType] = 21 THEN 'Goods Return'
WHEN T0.[TransType] = 204 THEN 'APDown'
WHEN T0.[TransType] = 18 THEN 'APInvoice'
WHEN T0.[TransType] = 13 THEN 'AP Credit Memo'
WHEN T0.[TransType] = 69 THEN 'LandedCost'
WHEN T0.[TransType] = 24 THEN 'Incoming Payment'
WHEN T0.[TransType] = 25 THEN 'Deposit'
WHEN T0.[TransType] = 46 THEN 'VendorPayment'
WHEN T0.[TransType] = 57 THEN 'Check for Payment'
WHEN T0.[TransType] = 76 THEN 'Postdated Check'
WHEN T0.[TransType] = 58 THEN 'Inventory list'
WHEN T0.[TransType] = 59 THEN 'Good Receipt'
WHEN T0.[TransType] = 60 THEN 'Good Issue'
WHEN T0.[TransType] = 67 THEN 'Inventory Transfer'
WHEN T0.[TransType] = 68 THEN 'Work Instruction'
WHEN T0.[TransType] = 162 THEN 'Inventory Valuation'
WHEN T0.[TransType] = 202 THEN 'Production order'
WHEN T0.[TransType] = -2 THEN 'Opening Balance'
WHEN T0.[TransType] = -3 THEN 'Closing Balance'
WHEN T0.[TransType] = 30 THEN 'Journal Entry'
WHEN T0.[TransType] = 321 THEN 'Internal Reconilation'
WHEN T0.[TransType] = 10000046 THEN 'Data archive'
WHEN T0.[TransType] = 310000001 THEN 'Initial Qty'
WHEN T0.[TransType] = 10000071 THEN 'Inventory posting' end as
'Doc Type'
,T0.[BASE_REF] as Document, T0.[Warehouse] as Whse,
case WHEN isnull(T0.[cardCode],'')='' THEN T0.InvntAct else T0.CardCode
End as 'G/L Acct/BP Code',
Case WHEN isnull(T0.[cardName],'')='' THEN N.AcctName Else T0.CardName
End As 'G/L Acct/BP Name'
, (T0.[InQty]) as 'Rec.Qty', (T0.[OutQty]) as 'Iss. Qty', T0.
[Currency], T0.[Price] as 'Price after Disc.'
,0 as 'Balance.' ,T0.CalcPrice
,(ISNULL(InQty,0)*ISNULL(CalcPrice,0))-
(ISNULL(OutQty,0)*ISNULL(CalcPrice,0)) Ob,
(Select sum(XX.[InQty] - XX.[OutQty]) from OINM XX where XX.DocDate<@FD
and XX.itemcode=T0.Itemcode)+((T0.[InQty])-(T0.[OutQty])) N
,T0.Warehouse,I.InvntryUom UOM,I.ItemName,IG.ItmsGrpNam ,C.DistNumber
BatchNo
, (CASE WHEN ABS((a.Quantity)) = 0 THEN (a.AllocQty) ELSE
ABS((a.Quantity)) END ) as [Quantity]

,(CASE WHEN (a.Quantity) > 0 THEN 0 WHEN (a.Quantity) < 0 THEN 1


ELSE 2 END) as [Direction]
FROM OINM T0
INNER JOIN OITL B WITH(NOLOCK) ON T0.CreatedBy=b.ApplyEntry And
T0.TransType=b.ApplyType
And b.ApplyLine=T0.DocLineNum And b.LocCode=T0.Warehouse
INNER JOIN ITL1 A WITH(NOLOCK) ON a.LogEntry = b.LogEntry
INNER JOIN OBTN c WITH(NOLOCK) ON A.ItemCode = c.ItemCode and
A.SysNumber = c.SysNumber AND A.MdAbsEntry=C.AbsEntry
INNER JOIN OITM I WITH(NOLOCK) ON T0.ItemCode=I.ItemCode
INNER JOIN OITB IG WITH(NOLOCK) ON I.ItmsGrpCod=IG.ItmsGrpCod
LEFT JOIN OCRD S WITH(NOLOCK) ON S.CardCode=T0.CardCode
LEFT JOIN OACT N WITH(NOLOCK) ON N.AcctCode=T0.InvntAct

--WHERE B.DocDate>=@FD And B.DocDate<=@TD And (B.ItemCode=@Item OR


@Item='') And (B.LocCode=@Whs OR @Whs='') And (IG.ItmsGrpNam=@ItemGrp OR
@ItemGrp='')
--WHERE T0.Itemcode='100060' and (T0.DocDate Between '20220401' and
GETDATE())---and t0.BASE_REF='22230105'--'22240002'

) X

ORDER BY DocDate,Itemcode

-----------------------------------------INVENTORY TRANSFER
QUERIES--------------------------------------------------------

----> INVENTORY TRANS

SELECT T0.[DocNum], T0.[DocDate],T0.FILLER,T0.TOWHSCODE,


T1.[ItemCode], T1.[Dscription], T1.[Quantity], T1.[Price]
FROM OWTQ T0
INNER JOIN WTQ1 T1 ON T0.[DocEntry] = T1.[DocEntry]

-----------------------------------------------------------------------------------
---------------

----> INVENTORY TRANSFER(2)

SELECT a."DocNum", b."LineNum", a."CardName", a."NumAtCard" AS "RefNo",


a."Address", A."DocDate"
, b."ItemCode", b."Dscription" AS "ItemName", b."Quantity", b."StockPrice",
b."LineTotal", b."WhsCode" AS "ToWhs"
, b."FromWhsCod" AS "FromWhs", B."Text", b."TaxCode", a."NumAtCard", A."Comments"
, RTRIM(CAST(ISNULL(c2."Building", '') AS nvarchar(250))) AS "Building"
, RTRIM(CAST(ISNULL(c2."Block", '') AS nvarchar(250))) AS "block"
, RTRIM(CAST(ISNULL(c2."Street", '') AS nvarchar(100))) AS "STREET"
, rtrim(CAST(ISNULL(c2."City", '') AS nvarchar(100))) AS "CITY"
, RTRIM(CAST(ISNULL(c2."ZipCode", '') AS nvarchar(50))) AS "ZipCode"
, RTRIM(CAST(ISNULL(c2."County", '') AS nvarchar(50))) -- || ' District' AS
"COUNTY"
, RTRIM(CAST(ISNULL(m."Name", '') AS nvarchar(10))) AS "STATE"
, RTRIM(CAST(ISNULL(n."Name", '') AS nvarchar(10))) AS "Country", c2."CstNo",
c2."TinNo", q."TrnspName"
, c2."Location", a."DocCur",H1."GSTRegnNo",H2."CompnyName",
(B."Quantity")*(B."StockPrice")as"LineTotal"
FROM OWTR a INNER JOIN WTR1 b ON a."DocEntry" = b."DocEntry"
LEFT OUTER JOIN OITM c ON b."ItemCode" = c."ItemCode"
LEFT OUTER JOIN OWHS c1 ON c1."WhsCode" = b."WhsCode"
LEFT OUTER JOIN OLCT c2 ON c2."Code" = c1."Location"
LEFT OUTER JOIN OCST m ON m."Code" = c2."State" AND m."Country" = c2."Country"
LEFT OUTER JOIN OCRY n ON n."Code" = c2."Country"
LEFT OUTER JOIN NNM1 o ON o."Series" = a."Series"
LEFT OUTER JOIN OCTG p ON p."GroupNum" = a."GroupNum"
LEFT OUTER JOIN OSHP q ON q."TrnspCode" = a."TrnspCode"
LEFT OUTER JOIN OCRD H ON H."CardCode"=A."CardCode"
LEFT OUTER JOIN CRD1 H1 ON H."CardCode"=H1."CardCode" AND H1."AdresType"='B'
LEFT OUTER JOIN OADM H2 ON 1=1
--WHERE a."DocEntry" ={?DocKey@}
ORDER BY b."LineNum";
--[Note:Modifier] SAP HANA does not support function CONVERT; use the CAST function
or implicit casting functions
--and a.DocType = 'I'

-----------------------------------------------------------------------------------
---------------

----> INVENTORY TRANSFER QUERY

SELECT a."docnum", b."LineNum", a."CardName", a."NumAtCard" AS "RefNo",


a."Address", A."DocDate"
, b."ItemCode", b."Dscription" AS "ItemName", b."Quantity", b."Price",
b."LineTotal", b."WhsCode" AS "ToWhs"
, b."FromWhsCod" AS "FromWhs", B."Text", b."taxcode", a."NumAtCard", A.COMMENTS,
RTRIM(CAST(ISNULL(c2."building", '') AS nvarchar(250))) AS "Building"
, RTRIM(CAST(ISNULL(c2."block", '') AS nvarchar(250))) AS "block",
RTRIM(CAST(ISNULL(c2."Street", '') AS nvarchar(100))) AS "STREET"
, rtrim(CAST(ISNULL(c2."city", '') AS nvarchar(100))) AS "CITY",
RTRIM(CAST(ISNULL(c2."ZipCode", '') AS nvarchar(50))) AS "ZipCode"
, CONCAT(RTRIM(CAST(ISNULL(c2."county", '') AS nvarchar(50))), ' District') AS
"COUNTY", RTRIM(CAST(ISNULL(m."Name", '') AS nvarchar(10))) AS "STATE"
, RTRIM(CAST(ISNULL(n."Name", '') AS nvarchar(10))) AS "Country", c2."CSTNo",
c2."TinNo", q."TrnspName", c2."Location", a."DocCur"
FROM OWTR a INNER JOIN WTR1 b ON a."DocEntry" = b."DocEntry"
LEFT OUTER JOIN OITM c ON b."ItemCode" = c."ItemCode"
LEFT OUTER JOIN "owhs" c1 ON c1."whscode" = b."WhsCode"
LEFT OUTER JOIN "olct" c2 ON c2."code" = c1."Location"
LEFT OUTER JOIN OCST m ON m."Code" = c2."State" AND m."Country" = c2."Country"
LEFT OUTER JOIN OCRY n ON n."Code" = c2."Country"
LEFT OUTER JOIN NNM1 o ON o."Series" = a."Series"
LEFT OUTER JOIN OCTG p ON p."GroupNum" = a."GroupNum"
LEFT OUTER JOIN OSHP q ON q."TrnspCode" = a."TrnspCode"
-- WHERE a."docentry" = "Dockey@"
ORDER BY b."LineNum";
--[Note:Modifier] SAP HANA does not support function CONVERT; use the CAST function
or implicit casting functions
--and a.DocType = 'I'

-----------------------------------------------------------------------------------
---------------

----> INVENTORY TRANSFER

SELECT ISNULL(C.DocNum,'') "WI DocNum",c.cardcode "Vendor",c.CardName "Name1"


,a.ItemCode "Material",a.Dscription "Material Description",c.BPLName "Plant",
a.unitMsr "Base Unit of Measure",a.WhsCode "WI WhsCode",isnull(a.Quantity,0) "WI
QTY",
(a.Quantity*a.StockPrice) "Total Value",x.[SC QTY]
FROM OWTR C WITH(NOLOCK)
INNER JOIN WTR1 A WITH(NOLOCK) ON A.DocEntry=C.DocEntry
INNER JOIN OWHS B WITH(NOLOCK) ON A.WhsCode=B.WhsCode

left join (SELECT ISNULL(C.DocNum,'') "WI DocNum",c.cardcode "Vendor",c.CardName


"Name1"
,a.ItemCode "Material",a.Dscription "Material Description",c.BPLName "Plant",
a.unitMsr "Base Unit of Measure",a.FromWhsCod "WI WhsCode",isnull(a.Quantity,0) "SC
QTY",
(a.Quantity*a.StockPrice) "Total Value",a.docentry,a.ItemCode,a.LineNum
FROM OWTR C WITH(NOLOCK)
INNER JOIN WTR1 A WITH(NOLOCK) ON A.DocEntry=C.DocEntry
INNER JOIN OWHS B WITH(NOLOCK) ON A.WhsCode=B.WhsCode
where a.WhsCode='7205I-SC' and a.FromWhsCod= '7202I-WI' --and c.CardCode='150217'
and a.ItemCode='APD234135'
) x on x.ItemCode=a.ItemCode and x.[WI WhsCode]=a.WhsCode
where a.FromWhsCod='7205I-SC' and a.WhsCode= '7202I-WI' and c.CardCode='150217' and
a.ItemCode='APD234135'

You might also like