cancel
Showing results for 
Search instead for 
Did you mean: 

Query-Frage, Ausrechnen des verfügbaren Bestandes

Former Member
0 Kudos

Hallöchen,

ich benötige für eine FMS einen Query, der im Grunde selbiges zeigt wie ATP-Funktion, nur eben nicht über alle Läger, sondern über nur das Versandlager.

Ich bin schon soweit, dass die Abfrage die nötigen Informationen zeigt, und wenn man sich das Tabellen-Ergebnis in Excel kopiert, so kann man die Zeile "SALDO" verwenden, um den jeweils verfügbaren Bestand (wie ATP) zu errechnen. (einige UDFs sind drin)


SELECT 'Lagerbestand 01' AS Type,'' AS Source,

'0' as 'Abgang', '0' as 'Zugang',

T0.onHand AS SALDO, '2000-01-01 00:00:000' AS Date,

'' as 'Empfänger extern', '' as 'INTERN' 

FROM OITW T0

WHERE T0.ItemCode = '16500.01' AND T0.WhsCode IN ('01') 

UNION ALL 

SELECT CASE WHEN T0.Status = 'P' THEN 'Eingang aus Produktion - geplant' ELSE 'Eingang aus Produktion' END AS Type ,T0.DocNum AS Source,

'0', CASE WHEN (T0.PlannedQty - T0.CmpltQty) < '0' THEN '0' ELSE (T0.PlannedQty - T0.CmpltQty)END ,

CASE WHEN (T0.PlannedQty - T0.CmpltQty) < '0' THEN '0' ELSE (T0.PlannedQty - T0.CmpltQty)END AS SALDO, CONVERT(DATETIME,T0.DueDate, 104) AS Date, '', 'LAGER'

FROM OWOR T0 

WHERE T0.ItemCode = '16500.01' AND T0.Status NOT IN ('L','C') and T0.Warehouse = '01'

UNION ALL 

SELECT 'Eingang aus Einkauf'AS Type,T0.DocNum AS Source,

'0', T1.OpenQty,

T1.OpenQty AS SALDO, CONVERT(DATETIME,T1.ShipDate, 104) AS Date, '', 'LAGER'

FROM OPOR T0 

INNER JOIN POR1 T1 ON T0.DocEntry = T1.DocEntry 

WHERE T1.ItemCode = '16500.01' AND T1.LineStatus = 'O' 

UNION ALL 

SELECT 'Abgang für Produktion' AS Type, T0.DocNum AS Source,

(T1.PlannedQty - T1.IssuedQty)*-1, '0',

(T1.PlannedQty - T1.IssuedQty)*-1 AS SALDO, Date = 

CASE 'Y'

WHEN 'Y' THEN CONVERT(DATETIME,T1.U_BXPDueDt, 104) 

ELSE 

CASE ISNull(T2.LeadTime,0) 

WHEN 0 THEN CONVERT(DATETIME,T0.DueDate, 104) 

ELSE DATEADD(day,T2.LeadTime,CONVERT(DATETIME,T0.DueDate, 104)) 

END 

END, '', 'Produktion'  

FROM OWOR T0 

INNER JOIN WOR1 T1 ON T0.DocEntry = T1.DocEntry 

INNER JOIN OITM T2 ON T0.ItemCode = T2.ItemCode 

WHERE T1.ItemCode = '16500.01' AND T0.Status NOT IN ('L','C') and T1.wareHouse = '01'

UNION ALL

SELECT 'Abgang für Verkauf' AS Type, T0.U_BaseDocNum AS Source,

T1.OpenQty * -1, '0',

T1.OpenQty * -1 AS SALDO, CONVERT(DATETIME,T1.ShipDate, 104) AS Date,

T0.U_CustCardName, ''

FROM ORDR T0 

INNER JOIN RDR1 T1 ON T0.DocEntry = T1.DocEntry 

WHERE T1.ItemCode = '16500.01' AND T1.LineStatus = 'O'

order by date

Ich möchte aber gerne direkt im Query je Zeile den verfügbaren Bestand errechnen lassen, damit ich den Export nach Excel spare.

Query-Ergebnis (bis jetzt)

ATP-Funkion:

Nun hätte ich gerne auch die Errechnung im Query -  wie in der Spalte "Verfügbar".

Vielen Dank für Eure Wissenswerte.

Gruß

Markus

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hallo Markus,

das ist ein beliebtes SQL - Problem, und hat nichts mit SAP oder dem ATP zu tun. Das was Du brauchst ist einfach eine "Running Sum". Das geht auf verschiedene Wege, und ist nicht trivial.

AberGoogle hilft wie immer...

https://www.google.de/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=t%20sql%20running%20sum

hdh

Answers (0)