std.edi.inventory
Lagerbestand und Absatzdaten per EDIFACT. Alle drei Nachrichtentypen bauen auf einfachen Positionsstrukturen auf. Umsätze werden als int64 × 100 (Festkomma) gespeichert.
- INVRPT (BGM 35) — Inventory Report: Lagerbestand pro Artikel und Lagerort
- SLSRPT (BGM 843) — Sales Report: Absatzdaten pro Artikel und Verkaufsstelle
- SLSFCT (BGM 844) — Sales Forecast: Absatzprognose mit optionaler Konfidenzangabe (0–100) pro Position
Bestandstypen (INVRPT):
| Konstante | QTY-Qualifier | Bedeutung |
|---|---|---|
| 1 | 1 | On-hand (verfügbar) |
| 2 | 2 | On-order (bestellt, noch nicht geliefert) |
| 3 | 3 | In-transit (unterwegs) |
Periodenqualifikatoren (SLSRPT/SLSFCT):
| Wert | Bedeutung |
|---|---|
| 617 | Woche |
| 610 | Monat |
| 102 | Tag |
import std.edi.inventory;
// INVRPT mit 1 Lagerbestandsposition
var lines: int64 := alloc(EDI_INV_LINE_SIZE);
poke64(lines + EDI_INV_LINE_GTIN, "04012345678901" as int64);
poke64(lines + EDI_INV_LINE_GTINLEN, 14);
poke64(lines + EDI_INV_LINE_WAREHOUSE, "4012345000009" as int64); // GLN Lager
poke64(lines + EDI_INV_LINE_WHLEN, 13);
poke64(lines + EDI_INV_LINE_QTY, 1500);
poke64(lines + EDI_INV_LINE_TYPE, 1); // on-hand
var out: int64 := alloc(8192);
var n: int64 := EdiInvrptWrite(
"INV-2026-W49" as int64,
"20261207" as int64,
lines, 1, out, 8192);
free(lines, EDI_INV_LINE_SIZE);
free(out, 8192);
Imports
std.edi.corestd.alloc
Structs
EdiInventoryLine (EDI_INV_LINE_SIZE = 64 Bytes)
| Offset-Konstante | Inhalt |
|---|---|
EDI_INV_LINE_GTIN / EDI_INV_LINE_GTINLEN | GTIN-Zeiger und -Länge |
EDI_INV_LINE_WAREHOUSE / EDI_INV_LINE_WHLEN | GLN des Lagerorts |
EDI_INV_LINE_QTY | Bestandsmenge |
EDI_INV_LINE_UNIT / EDI_INV_LINE_UNITLEN | Mengeneinheit (optional) |
EDI_INV_LINE_TYPE | Bestandstyp: 1=on-hand, 2=on-order, 3=in-transit |
EdiSalesLine (EDI_SLS_LINE_SIZE = 96 Bytes)
| Offset-Konstante | Inhalt |
|---|---|
EDI_SLS_LINE_GTIN / EDI_SLS_LINE_GTINLEN | GTIN-Zeiger und -Länge |
EDI_SLS_LINE_POSGLN / EDI_SLS_LINE_POSGLNLEN | GLN Verkaufsstelle (POS) |
EDI_SLS_LINE_PERIOD | Periodenqualifikator: 617=Woche, 610=Monat, 102=Tag |
EDI_SLS_LINE_DATE / EDI_SLS_LINE_DATELEN | Periodenanfangsdatum |
EDI_SLS_LINE_QTY | Verkaufte/prognostizierte Menge |
EDI_SLS_LINE_REVENUE | Umsatz × 100 (Festkomma) |
EDI_SLS_LINE_CURRENCY / EDI_SLS_LINE_CURRENCYLEN | Währungscode |
EDI_SLS_LINE_CONFIDENCE | Konfidenz 0–100 (nur SLSFCT, sonst 0) |
Funktionen
| Write-Funktion | Read-Funktion | Beschreibung |
|---|---|---|
EdiInvrptWrite(refNum, date, lines, lineCount, out, outMax) | EdiInvrptRead(buf, bufLen, lines, maxLines) | Lagerbestand |
EdiSlsrptWrite(refNum, date, lines, lineCount, out, outMax) | EdiSlsrptRead(buf, bufLen, lines, maxLines) | Absatzbericht |
EdiSlsfctWrite(refNum, date, lines, lineCount, out, outMax) | EdiSlsfctRead(buf, bufLen, lines, maxLines) | Absatzprognose |
Alle Write-Funktionen setzen automatisch den BGM-Qualifier. Alle Read-Funktionen geben die Anzahl der gelesenen Zeilen zurück. Zero-Copy: Zeiger in lines zeigen in buf.
Codebeispiel — Wöchentliche Absatzprognose
import std.edi.inventory;
var lines: int64 := alloc(3 * EDI_SLS_LINE_SIZE);
// KW49 Prognose Artikel A, 87 % Konfidenz
poke64(lines + 0 * EDI_SLS_LINE_SIZE + EDI_SLS_LINE_GTIN, "04012345678901" as int64);
poke64(lines + 0 * EDI_SLS_LINE_SIZE + EDI_SLS_LINE_GTINLEN, 14);
poke64(lines + 0 * EDI_SLS_LINE_SIZE + EDI_SLS_LINE_PERIOD, 617);
poke64(lines + 0 * EDI_SLS_LINE_SIZE + EDI_SLS_LINE_DATE, "20261207" as int64);
poke64(lines + 0 * EDI_SLS_LINE_SIZE + EDI_SLS_LINE_QTY, 120);
poke64(lines + 0 * EDI_SLS_LINE_SIZE + EDI_SLS_LINE_REVENUE, 239880); // 2398,80 EUR
poke64(lines + 0 * EDI_SLS_LINE_SIZE + EDI_SLS_LINE_CURRENCY, "EUR" as int64);
poke64(lines + 0 * EDI_SLS_LINE_SIZE + EDI_SLS_LINE_CURRENCYLEN,3);
poke64(lines + 0 * EDI_SLS_LINE_SIZE + EDI_SLS_LINE_CONFIDENCE, 87);
var out: int64 := alloc(8192);
var n: int64 := EdiSlsfctWrite(
"FCT-2026-W49" as int64,
"20261201" as int64,
lines, 1, out, 8192);
free(lines, 3 * EDI_SLS_LINE_SIZE);
free(out, 8192);
Quelldatei
| Unit | Datei |
|---|---|
std.edi.inventory | std/edi/inventory.lyx |
Letzte Aktualisierung: 2026-06-16
