Tabella OITW in SAP Business One (Giacenze degli articoli per magazzino)
OITW è la tabella di SAP Business One che contiene la giacenza di ogni articolo in ogni magazzino: disponibile, impegnata negli ordini cliente e ordinata ai fornitori. La chiave è ItemCode più WhsCode, e si collega a OITM tramite ItemCode e a OWHS tramite WhsCode.
Campi chiave di OITW
| Campo | Contenuto |
|---|---|
ItemCode | Articolo. Si collega a OITM.ItemCode. |
WhsCode | Magazzino. Si collega a OWHS.WhsCode. |
OnHand | Giacenza fisica in questo magazzino. |
IsCommited | Quantità impegnata negli ordini cliente aperti in questo magazzino. |
OnOrder | Quantità negli ordini d’acquisto aperti per questo magazzino. |
MinStock | Livello minimo di giacenza di questo articolo in questo magazzino. |
AvgPrice | Costo dell’articolo in questo magazzino quando i costi sono gestiti per magazzino. |
Locked | Y se l’articolo è bloccato in questo magazzino. |
Come OITW si collega alle altre tabelle
OITW è figlia di OITM: un articolo ha una riga in OITW per ogni magazzino a cui è collegato, anche con giacenza zero. Non è una tabella di righe di documento, quindi non c’è DocEntry; la coppia ItemCode + WhsCode identifica una riga. Le ubicazioni, se attive, aggiungono un ulteriore livello in OIBQ e OBIN.Il magazzino stesso (nome, indicatore di magazzino nettificabile, ubicazioni) si trova nellatabella OWHS.
Join più comuni
OITW T0 INNER JOIN OITM T1 ON T0.ItemCode = T1.ItemCode (descrizione dell’articolo, gruppo)OITW T0 INNER JOIN OWHS T2 ON T0.WhsCode = T2.WhsCode (nome del magazzino)
Quando si usa la tabella OITW
Legga OITW ogni volta che la domanda è «quanto c’è di questo articolo in quel magazzino»: disponibilità per le vendite, elenchi di giacenze per filiale, riordino per magazzino e valorizzazione del magazzino per sede. La disponibilità di solito è OnHand - IsCommited + OnOrder, oppure OnHand - IsCommited se non conta gli ordini d’acquisto aperti.
Query di esempio: giacenza disponibile per articolo e magazzino
SQL Server
SELECT T0.ItemCode, T1.ItemName, T0.WhsCode, T2.WhsName, T0.OnHand, T0.IsCommited, T0.OnOrder, T0.OnHand - T0.IsCommited + T0.OnOrder AS Available FROM OITW T0 INNER JOIN OITM T1 ON T0.ItemCode = T1.ItemCode INNER JOIN OWHS T2 ON T0.WhsCode = T2.WhsCode WHERE T0.OnHand <> 0 OR T0.IsCommited <> 0 ORDER BY T0.ItemCode, T0.WhsCode
SAP HANA (nomi delle colonne tra virgolette doppie)
SELECT T0."ItemCode", T1."ItemName", T0."WhsCode", T2."WhsName", T0."OnHand", T0."IsCommited", T0."OnOrder", T0."OnHand" - T0."IsCommited" + T0."OnOrder" AS "Available" FROM OITW T0 INNER JOIN OITM T1 ON T0."ItemCode" = T1."ItemCode" INNER JOIN OWHS T2 ON T0."WhsCode" = T2."WhsCode" WHERE T0."OnHand" <> 0 OR T0."IsCommited" <> 0 ORDER BY T0."ItemCode", T0."WhsCode"
Incolli una delle due versioni in Strumenti → Query → Generatore di query. Le serve l’altro dialetto per una Sua query? Usi il convertitore da SQL a HANA.
Giacenza totale su più magazzini (solo nettificabili)
Per ottenere un’unica cifra di giacenza per articolo su più magazzini, sommi le righe di OITW per articolo. Unisca OWHS tramite WhsCode e tenga solo i magazzini nettificabili (OWHS.Nettable = 'Y', quelli che l’MRP considera), così i magazzini resi o qualità contrassegnati come non nettificabili restano esclusi. La giacenza meno l’impegnato è ciò che può ancora promettere; aggiunga OnOrder per la cifra disponibile che tiene conto degli ordini d’acquisto aperti.
SQL Server
SELECT T0.ItemCode, T1.ItemName, SUM(T0.OnHand) AS InStock, SUM(T0.IsCommited) AS Committed, SUM(T0.OnHand - T0.IsCommited) AS FreeStock, SUM(T0.OnHand - T0.IsCommited + T0.OnOrder) AS Available FROM OITW T0 INNER JOIN OITM T1 ON T0.ItemCode = T1.ItemCode INNER JOIN OWHS T2 ON T0.WhsCode = T2.WhsCode WHERE T2.Nettable = 'Y' GROUP BY T0.ItemCode, T1.ItemName ORDER BY T0.ItemCode
SAP HANA
SELECT T0."ItemCode", T1."ItemName", SUM(T0."OnHand") AS "InStock", SUM(T0."IsCommited") AS "Committed", SUM(T0."OnHand" - T0."IsCommited") AS "FreeStock", SUM(T0."OnHand" - T0."IsCommited" + T0."OnOrder") AS "Available" FROM OITW T0 INNER JOIN OITM T1 ON T0."ItemCode" = T1."ItemCode" INNER JOIN OWHS T2 ON T0."WhsCode" = T2."WhsCode" WHERE T2."Nettable" = 'Y' GROUP BY T0."ItemCode", T1."ItemName" ORDER BY T0."ItemCode"
Errore frequente: IsCommited con una sola t e righe a giacenza zero
La colonna dell’impegnato si scrive IsCommited, quindi IsCommitted genera un errore «invalid column» (colonna non valida). Inoltre OITW contiene una riga per ogni magazzino collegato anche con giacenza zero, quindi filtri OnHand <> 0 (oppure OnHand, IsCommited e OnOrder) per mantenere l’elenco breve. Veda Query delle giacenze per magazzino con varianti.
Query pronte che usano OITW (pagine in inglese)
- Giacenze per magazzino: Quantità in giacenza, impegnata, ordinata e disponibile per articolo e per magazzino.
- Valore del magazzino per magazzino: Quantità in giacenza moltiplicata per il costo medio dell’articolo, totalizzata per magazzino.
Sta costruendo qualcosa su OITW?
Leggere OITW (Giacenze degli articoli per magazzino) con una query è la parte facile. Sviluppiamo app mobili per SAP Business One: scansione in magazzino, conteggi di inventario, ordini cliente e approvazioni sul Service Layer. Oppure guardi tutto il nostro sviluppo SAP Business One.
Domande sulla tabella OITW
Perché il totale di OITW è diverso dall’OnHand dell’articolo in OITM?
OITM.OnHand è la giacenza dell’articolo in tutti i suoi magazzini, mentre OITW contiene una riga per magazzino. La somma di OITW.OnHand su tutte le righe dell’articolo dà la stessa cifra, quindi una differenza dipende quasi sempre dalla query: un filtro sui magazzini (solo nettificabili, solo attivi, una filiale) o un join che scarta righe, ad esempio un INNER JOIN con OWHS con una condizione aggiuntiva. Confronti prima le due cifre senza alcun filtro sui magazzini, poi aggiunga di nuovo i filtri uno alla volta.
Tabelle correlate
OITM (Articoli (anagrafica articoli)) · OWHS (Magazzini) · OINM (Giornale di magazzino (audit delle giacenze)) · ORDR (Ordine cliente (testata)) · INV1 (Fattura cliente (righe)) · cerca tutte le tabelle di SAP Business One
Iniziamo?
Ci descriva di cosa ha bisogno. Riceverà una risposta tecnica chiara, un perimetro definito e un prezzo, di norma entro 24 ore.
