Tabelle INV1 in SAP Business One (Ausgangsrechnung (Positionen))

INV1 ist die Tabelle in SAP Business One, in der die Positionen der Ausgangsrechnungen gespeichert werden: Artikel, Menge, Preis, Zeilenbetrag und Lager. Sie enthält selbst keine Kopfdaten, daher verknüpfen Sie sie über DocEntry mit OINV, um Datum, Kunde und Status zu erhalten.

Wichtige Felder der Tabelle INV1

FeldInhalt
DocEntrySchlüssel der Rechnung. Verknüpft mit OINV.DocEntry.
LineNumZeilennummer innerhalb der Rechnung, beginnend bei 0.
ItemCodeVerkaufter Artikel. Verknüpft mit OITM.ItemCode. Bei Servicerechnungen leer.
DscriptionPositionsbeschreibung (so geschrieben: mit einem i und ohne e nach dem s).
QuantityMenge in der Verkaufsmengeneinheit.
PriceStückpreis nach Zeilenrabatt.
PriceBefDiStückpreis vor Zeilenrabatt.
LineTotalZeilenbetrag in Hauswährung, vor Steuer und vor dem Belegrabatt.
WhsCodeLager, aus dem die Ware abging. Verknüpft mit OWHS.WhsCode.
SlpCodeVertriebsmitarbeiter der Position.
BaseType / BaseEntry / BaseLineBasisbeleg, aus dem die Position kopiert wurde (zum Beispiel 15 = Lieferung, 17 = Kundenauftrag).

Wie INV1 mit anderen Tabellen zusammenhängt

INV1 ist die Positionstabelle von OINV. Jede Zeile gehört über DocEntry zu genau einer Rechnung, und DocEntry + LineNum ist der eindeutige Schlüssel einer Position. Datum, Kunde, Stornostatus und Belegrabatt stehen in OINV, daher verknüpft fast jede INV1-Abfrage auch OINV.

Typische Joins

  • INV1 T1 INNER JOIN OINV T0 ON T1.DocEntry = T0.DocEntry (Belegkopf)
  • INV1 T1 LEFT JOIN OITM T2 ON T1.ItemCode = T2.ItemCode (Artikelstamm)
  • INV1 T1 LEFT JOIN OWHS T3 ON T1.WhsCode = T3.WhsCode (Lager)

Wann Sie die Tabelle INV1 verwenden

Verwenden Sie INV1 für alles, was pro Artikel ausgewertet wird: Topseller, Ladenhüter, Umsatz nach Artikelgruppe oder Lager und verkaufte Mengen in einem Zeitraum. Bei Werten denken Sie an den Belegrabatt, bei Mengen sind die Positionen die richtige Quelle.

Beispielabfrage: Verkaufte Menge und Nettowert pro Artikel

SQL Server

SELECT T1.ItemCode, T1.Dscription, SUM(T1.Quantity) AS QtySold,
  SUM(T1.LineTotal * (1 - T0.DiscPrcnt / 100.0)) AS NetValue
FROM OINV T0
INNER JOIN INV1 T1 ON T0.DocEntry = T1.DocEntry
WHERE T0.CANCELED = 'N' AND T0.DocDate >= '20260101'
GROUP BY T1.ItemCode, T1.Dscription
ORDER BY NetValue DESC

SAP HANA (Spaltennamen in doppelten Anführungszeichen)

SELECT T1."ItemCode", T1."Dscription", SUM(T1."Quantity") AS "QtySold",
  SUM(T1."LineTotal" * (1 - T0."DiscPrcnt" / 100.0)) AS "NetValue"
FROM OINV T0
INNER JOIN INV1 T1 ON T0."DocEntry" = T1."DocEntry"
WHERE T0."CANCELED" = 'N' AND T0."DocDate" >= '20260101'
GROUP BY T1."ItemCode", T1."Dscription"
ORDER BY "NetValue" DESC

Fügen Sie eine der beiden Versionen unter Extras → Abfragen → Abfragegenerator ein. Sie brauchen den anderen Dialekt für Ihre eigene Abfrage? Nutzen Sie den SQL-zu-HANA-Konverter.

Typischer Fallstrick: Die Summe von LineTotal weist zu viel Umsatz aus

LineTotal ist der Betrag vor dem Belegrabatt aus OINV.DiscPrcnt. Gewähren Ihre Anwender Rabatte im Belegkopf, ist SUM(LineTotal) höher als im Bericht Verkaufsanalyse. Multiplizieren Sie wie in der Abfrage oben mit (1 - T0.DiscPrcnt / 100) und ziehen Sie die Positionen der Ausgangsgutschriften (RIN1) mit demselben Faktor ab. Siehe Abweichung durch den Belegrabatt beheben.

Fertige Abfragen, die INV1 verwenden

Verwandte Tabellen

OINV (Ausgangsrechnung (Kopf)) · ORIN (Ausgangsgutschrift (Kopf)) · OITM (Artikel (Artikelstamm)) · OITW (Artikelbestand pro Lager) · alle SAP-Business-One-Tabellen durchsuchen

Quellen: Dokumentation und SDK zu SAP Business One (Referenz der DI-API-Datenbanktabellen), SAP Help Portal.

Bereit für den Start?

Sagen Sie uns, was Sie brauchen. Sie erhalten eine klare technische Antwort, einen festen Leistungsumfang und einen Preis, in der Regel innerhalb von 24 Stunden.