identpro Logo
← Übersicht
WMS INTERFACE – TORD ERWEITERUNGEN

Ladelisten &
Transporte

SHIPMENTDELIVDELIVPOSPRE-CHECKPOST-CHECK
Ergänzung zu: Fahrauftrag anlegen (INBO · REAR · OUTB)
Schnittstelle: PUT /api/idptords
Version: 7.52

1. Übersicht

Über die TORD-Schnittstelle (Transaktionstypen INBO, REAR, OUTB) können Fahraufträge nicht nur einzeln, sondern auch in einer Hierarchie aus Ladelisten und Transporten übermittelt werden. Alle Ebenen sind optional — je nach Materialflusskonfiguration und Projektanforderung.

2. Hierarchie

TRANSPORT (shipment)
Übergeordnete Gruppe, die mehrere Ladelisten zusammenfasst. Entspricht z. B. einer LKW-Beladung oder einem Versandauftrag.
LADELISTE (deliv)
Fasst mehrere Positionen zusammen. Kann optional einen Pre-Check (vor Start) und Post-Check (vor Abschluss) enthalten.
LADELISTENPOSITION (delivPos)
Eine Position innerhalb einer Ladeliste. Definiert Material, Menge und Zielort für eine Gruppe von Fahraufträgen.
Fahrauftrag (tanum)
Einzelner Transportauftrag (INBO/REAR/OUTB) für eine konkrete Ladung. Wird einer Ladelistenposition zugeordnet.
Alle Ebenen sind optional:
Fahraufträge können ohne deliv, delivPos und shipment angelegt werden. Die Hierarchie wird nur genutzt, wenn der konfigurierte Materialfluss diese Gruppierung unterstützt. Die Felder können selektiv kombiniert werden: z. B. deliv ohne shipment, oder tanum ohne deliv.

3. Zuordnung im TORD-Request

Alle Hierarchiefelder werden pro TORD-Objekt übertragen. Mehrere TORDs mit demselben deliv-Wert werden zur selben Ladeliste zusammengefasst; mehrere deliv-Werte mit demselben shipment bilden einen Transport.

TORD-FeldEbeneBeschreibung
tanumFahrauftragEindeutige ID des Fahrauftrags. Pflichtfeld bei INBO/REAR/OUTB.
delivPosPositionID der Ladelistenposition. Pflicht wenn deliv gesetzt ist.
delivLadelisteID der Ladeliste. Mehrere TORDs mit gleichem Wert → gleiche Ladeliste.
shipmentTransportID des Transports. Mehrere deliv-Werte mit gleichem Wert → gleicher Transport.
createLorryLoadMapLadelisteBoolean – wenn true, sendet WES nach Abschluss des Transports automatisch eine LorryLoadMap ans WMS.
delivSeqNumberLadelisteReihenfolge der Ladeliste innerhalb des Transports (optional).

4. Felder auf Ladelisten-Ebene (deliv)

FeldTypPflichtBeschreibung
delivStringPflichtEindeutige ID der Ladeliste.
delivDescriptionStringOptionalBeschreibungstext der Ladeliste, wird dem Fahrer angezeigt (HTML möglich).
delivNoteStringOptionalZusätzliche Notiz zur Ladeliste (Freitext).
delivPropertiesMap<String,String>OptionalZusätzliche Schlüssel-Wert-Paare, die am Fahrzeugterminal angezeigt werden können.
delivSeqNumberIntegerOptionalReihenfolge der Ladeliste innerhalb eines Transports.
delivRestrictionsSet<Enum>OptionalEinschränkungen für die Ladeliste (z. B. APPROVAL_REQUIRED: Freigabe durch Vorgesetzten nötig).

5. Felder auf Positions-Ebene (delivPos)

FeldTypPflichtBeschreibung
delivPosStringPflicht*ID der Position innerhalb der Ladeliste. (*Pflicht wenn deliv gesetzt ist)
delivPosDescriptionStringOptionalBeschreibungstext der Position (HTML möglich).
delivPosQuantDoubleOptionalZielmenge für materialbasierte Positionen. WES erzeugt so viele Fahraufträge wie nötig.
delivPosEstimatedOrdersIntegerOptionalGeschätzte Anzahl der Fahraufträge zur Erreichung der Zielmenge.
tamatnumStringOptionalMaterialnummer zur Identifikation der Ladeeinheit, wenn keine lenum übergeben wird.
tabatchStringOptionalChargennummer zur weiteren Eingrenzung bei der materialbasierten Ladeeinheitensuche.
tamatquantDoubleOptionalMindestmenge des Materials, die sich auf der gesuchten Ladeeinheit befinden muss.
taquantStringOptionalDirekte Vorgabe der Anzahl der Fahraufträge für diese Material-/Charge-Kombination am Quellort. Alternative zu delivPosQuant/tamatquant.
shortDelivTolFloatOptionalToleranz für Unterlieferung in Prozent (z. B. 5 = 5 % weniger als Ziel akzeptiert).
overDelivTolFloatOptionalToleranz für Überlieferung in Prozent.
delivPositionRestrictionsSet<Enum>OptionalEinschränkungen für die Position (z. B. APPROVAL_REQUIRED).
delivPosQuant vs. tamatquant vs. taquant – Unterschied

Alle drei Felder steuern die Auftragserzeugung bei materialbasierter Ladeeinheitensuche, wirken aber auf unterschiedlichen Ebenen:
  • delivPosQuant ist die Zielmenge der Ladelistenposition. WES erzeugt dynamisch so viele Fahraufträge, bis diese kumulative Menge erreicht ist.
  • tamatquant ist die Mindestmenge auf der Ladeeinheit. Bei materialbasierter Ladeeinheitensuche (ohne lenum) muss jede Ladeeinheit mindestens diese Menge des gesuchten Materials enthalten.
  • taquant gibt direkt vor, wie viele Fahraufträge für die angegebene Material-/Charge-Kombination am Quellort angelegt werden sollen. Damit entfällt die Mengensteuerung über delivPosQuant/tamatquant.
Beispiel Mengenvorgabe: delivPosQuant: 16000 und tamatquant: 8000 → WES sucht zwei Ladeeinheiten à 8.000 Einheiten und legt zwei Fahraufträge an.
Beispiel Anzahlvorgabe: taquant: "3" → WES legt sofort drei Fahraufträge für das angegebene Material/Charge am Quellort an.

Automatische Benennung von Folgeaufträgen (tanum_x#y)

Wenn WES aus einem einzelnen TORD mehrere Fahraufträge erzeugt – gesteuert über delivPosQuant, tamatquant oder taquant – erhält der erste Auftrag den tanum-Wert aus dem TORD unverändert. Alle automatisch erzeugten Folgeaufträge werden nach folgendem Schema benannt:

{tanum}_{x}#{y}
PlatzhalterBedeutung
tanum Der originale tanum-Wert aus dem TORD-Request.
x Materialfluss-Schritt (0-basiert).
0 = Standardfall: einstufiger Transport ohne Materialfluss-Konfiguration.
1, 2, … = Folgeschritte einer mehrstufigen MaterialFlowPosition-Kette. Aufträge mit Schritt > 0 werden initial im Zustand INACTIVE angelegt und werden erst aktiv, wenn der vorangegangene Schritt abgeschlossen ist.
y Laufende Nummer des Auftrags innerhalb des Schritts, zweistellig nullgefüllt (01, 02, …).
Beispiel: TORD mit tanum = "TA-100" und taquant = "3" – WES legt drei Fahraufträge an:
  1. TA-100  – erster Auftrag, tanum unverändert
  2. TA-100_0#01  – zweiter Auftrag, Schritt 0, Zähler 01
  3. TA-100_0#02  – dritter Auftrag, Schritt 0, Zähler 02

Übermittelter Name im TOCO an SAP

Bei der Quittierung eines Fahrauftrags sendet WES den vollständigen tanum-Wert – inklusive des _x#y-Suffix – als Transferauftragsnummer an SAP (IDoc-Typ /SCWM/WMTCID01, Segment E1LTCOI, Feld TANUM). Der Suffix wird nicht abgeschnitten.

Beispiel: Folgeauftrag TA-100_0#01 wird im TOCO mit TANUM = "TA-100_0#01" an SAP gemeldet. SAP muss diesen Namen daher als gültigen Transferauftrag kennen oder entsprechend verarbeiten können.

Beispiel 1 – TORD mit konkreter Ladeeinheit (lenum)

WES sucht die Ladeeinheit anhand der übergebenen lenum. Quellort, Material und Charge werden aus den Stammdaten der Ladeeinheit ermittelt.

[
  {
    "tatyp":    "REAR",
    "tanum":    "TA-0001",
    "shipment": "SHIP-2025-001",
    "deliv":    "PL-001",
    "delivPos": "POS-001",
    "delivSeqNumber": 1,
    "delivDescription": "<b>Ladeliste 1</b>",
    "delivProperties": { "Kunde": "Mustermann GmbH", "Tour": "T-42" },
    "lenum":    "LE-4711",
    "frpla":    "Lager-A-01",
    "topla":    "LKW-Rampe-3",
    "frstyp":   "Lager",
    "tostyp":   "Rampe"
  }
]

Beispiel 2 – TORD ohne lenum, Identifikation über Lagerort, Material und Charge

Ist keine konkrete Ladeeinheit bekannt, ermittelt WES passende Ladeeinheiten selbst anhand von frpla, tamatnum und tabatch. Über delivPosQuant und tamatquant wird die gewünschte Gesamtmenge gesteuert – WES erzeugt so viele Fahraufträge wie nötig.

[
  {
    "tatyp":           "OUTB",
    "tanum":           "12345",
    "shipment":        "SHIPMENT1",
    "deliv":           "DELIVNAME",
    "delivPos":        "DELIVPOSNAME",
    "delivProperties": { "Property 1": "ABC", "Property2": "DEF" },
    "delivPosQuant":   8000.0,
    "shortDelivTol":   0.0,
    "overDelivTol":    0.0,
    "frpla":           "PLA1",
    "frstyp":          "TYPE1",
    "topla":           "PLA2",
    "tostyp":          "TYPE2",
    "tamatnum":        "MAT1",
    "tabatch":         "BATCH1",
    "tamatquant":      8000.0
  }
]

Beispiel 3 – TORD ohne lenum, Anzahl der Fahraufträge direkt per taquant

Ist die gewünschte Stückzahl unbekannt oder irrelevant, kann über taquant direkt angegeben werden, wie viele Fahraufträge WES für die angegebene Material-/Charge-Kombination am Quellort anlegen soll. Eine Mengenschwelle (tamatquant) oder Gesamtzielmenge (delivPosQuant) ist in diesem Fall nicht erforderlich.

[
  {
    "tatyp":           "OUTB",
    "tanum":           "12345",
    "shipment":        "SHIPMENT1",
    "deliv":           "DELIVNAME",
    "delivPos":        "DELIVPOSNAME",
    "delivProperties": { "Property 1": "ABC", "Property2": "DEF" },
    "frpla":           "PLA1",
    "frstyp":          "TYPE1",
    "topla":           "PLA2",
    "tostyp":          "TYPE2",
    "tamatnum":        "MAT1",
    "tabatch":         "BATCH1",
    "taquant":         "3"
  }
]

6. Pre-Check & Post-Check

In identpro WES können Checklisten fest in der Systemkonfiguration hinterlegt werden. Sie werden als Vorlagen (Checklistenvorlagen) gepflegt und den Ladelistenvorlagen zugewiesen. Beim Anlegen einer Ladeliste übernimmt WES die zugehörigen Checks automatisch aus der Vorlage.

Konfiguration in WES

KonfigurationsobjektBeschreibung
Checklistenvorlage
(CheckListTemplate)
Definiert eine Checkliste mit beliebig vielen Fragen/Aufgaben. Wird in der WES-Administration gepflegt und kann mehreren Ladelistenvorlagen zugewiesen werden.
Ladelistenvorlage
(PickListTemplate)
Vorlage für eine Ladeliste. Hier wird je eine Checklistenvorlage für Pre-Check und Post-Check hinterlegt. Wenn ein TORD eine Ladeliste mit diesem Template anlegt, werden die Checks automatisch übernommen.

Fragetypen in der Checklistenvorlage

TypBedeutung
BOOLEANJa/Nein-Frage
INTEGERGanzzahlige Eingabe (z. B. Stückzahl, Temperatur)
STRINGFreitexteingabe
OPTIONSAuswahl aus vordefinierten Optionen

Jede Frage kann als Pflicht markiert werden — der Fahrer muss sie korrekt beantworten, bevor die Ladeliste gestartet (Pre-Check) oder abgeschlossen (Post-Check) werden kann.

Prozessablauf mit konfiguriertem Check

1TORD erstellt eine neue Ladeliste. WES erkennt die zugehörige Ladelistenvorlage und übernimmt die hinterlegten Pre-/Post-Check-Vorlagen.
A Pre-Check – vor Start der Ladeliste:
Der Fahrer muss alle Fragen der Checkliste beantworten, bevor er mit der ersten Transportaufgabe beginnen kann. Pflichtfragen müssen korrekt ausgefüllt sein.
2Fahrer arbeitet alle Fahraufträge der Ladeliste ab.
B Post-Check – vor Abschluss der Ladeliste:
Der Fahrer muss die Post-Check-Checkliste beantworten, bevor die Ladeliste in den Status "Abgeschlossen" wechseln kann. Bis dahin verbleibt die Ladeliste im Status "Post-Check".
Alle Checks abgeschlossen. Ladeliste wechselt in den Status "Abgeschlossen".

Weitere Ladelisten-Zustände

StatusBedeutung
VERIFICATIONDie Ladeliste wartet auf eine manuelle Verifikation (z. B. durch einen Vorgesetzten oder ein externes System), bevor sie weiter bearbeitet werden kann.
APPROVAL_REQUIREDDie Ladeliste oder eine ihrer Positionen erfordert eine explizite Freigabe. Wird ausgelöst, wenn delivRestrictions oder delivPositionRestrictions den Wert APPROVAL_REQUIRED enthält.
Pre- und Post-Check unabhängig voneinander:
Pro Ladelistenvorlage kann entweder nur ein Pre-Check, nur ein Post-Check, beide oder keiner konfiguriert werden. Checks auf Positionsebene (delivPos) sind ebenfalls konfigurierbar, aber noch nicht vollständig implementiert.

7. Transport separat anlegen

WMS → WES   PUT /wms/idpshipment

Transporte können entweder implizit über das TORD-Feld shipment erzeugt werden (WES legt den Transport automatisch an, wenn der erste TORD eingeht), oder explizit über diesen Endpoint – mit zusätzlichen Eigenschaften wie Gewichtsgrenzen, Kennzeichen oder einer vorgegebenen Ladelisten-Reihenfolge.

FeldTypPflichtBeschreibung
nameStringPflichtEindeutige ID des Transports.
sequenceEnabledBooleanOptionalAktiviert die geordnete Abarbeitung der Ladelisten innerhalb des Transports.
singularActivePicklistBooleanOptionalNur eine Ladeliste kann gleichzeitig aktiv bearbeitet werden.
picklistSequenceArray<String>OptionalVorgegebene Reihenfolge der Ladelisten-Namen.
permittedMaxMassDoubleOptionalMaximal zulässige Gesamtmasse des Fahrzeugs in kg.
permittedCargoWeightDoubleOptionalMaximal zulässiges Ladegewicht in kg.
licensePlatesArray<String>OptionalKennzeichen der zugeordneten Fahrzeuge.
certificatesArray<String>OptionalErforderliche Zertifikate (z. B. HAZMAT, COLD-CHAIN, FRAGILE-GOODS).
driverNameStringOptionalName des Fahrers.
parkingSpacesArray<String>OptionalParklokationen für den Transport.
annotationsMap<String,String>OptionalZusatzinformationen ohne Geschäftslogik.

8. Stornierung über REST

Neben dem CATO-Interface gibt es direkte REST-Endpoints für die Stornierung:

EndpointBeschreibung
WMS → WES   PUT
/wms/cancel_picklist/{picklistName}
Storniert eine einzelne Ladeliste. Alle noch offenen Fahraufträge der Liste werden abgebrochen.
WMS → WES   PUT
/wms/cancel_shipment/{shipmentName}
Storniert alle Ladelisten eines Transports auf einmal.
Query-Parameter forceCancel (Boolean, default: false):
Bei forceCancel=true werden auch aktive Ladelisten bzw. laufende Fahraufträge abgebrochen. Ohne diesen Parameter schlägt die Stornierung fehl, wenn noch aktive Aufträge existieren.

9. Transport abschließen – SHIPCO

WES → WMS   PUT /wms/idpshipco

Sobald alle Ladelisten eines Transports abgeschlossen sind, sendet WES eine SHIPCO-Nachricht an das WMS. Sie enthält alle Ladelisten mit ihren Positionen, Fahraufträgen und – falls konfiguriert – die Antwortdaten der Pre-/Post-Checks.

FeldTypBeschreibung
shipmentStringID des abgeschlossenen Transports.
shipcoPosArrayListe der enthaltenen Ladelisten (ShipcoPos).
↳ delivStringID der Ladeliste.
↳ delivPropertiesMapEigenschaften der Ladeliste.
↳ precheckMapAntwortdaten des Pre-Checks (falls konfiguriert).
↳ postcheckMapAntwortdaten des Post-Checks (falls konfiguriert).
↳ delivPosArrayPositionen der Ladeliste.
↳ delivMaterialStringMaterialnummer der Position.
↳ orderPosArrayFahraufträge der Position: tanum, lenum, material, topla, resource, status.

10. Ladekarte – LorryLoadMap

Die Ladekarte beschreibt die physische Position aller Ladungen im LKW und kann in beide Richtungen übertragen werden.

RichtungEndpointBeschreibung
WMS → WES PUT /wms/idplorryloadmap WMS übermittelt eine Ladekarte an WES (z. B. Soll-Belegung vor Beladung).
WES → WMS POST /wms/idplorryloadmap WES sendet die fertige Ladekarte nach Abschluss des Transports. Wird ausgelöst, wenn im TORD createLorryLoadMap = true gesetzt ist.

Felder – LorryLoadMapDto

FeldTypPflichtBeschreibung
shipmentStringPflichtName des zugehörigen Transports.
indexIntegerOptionalIndex zur Unterscheidung mehrerer Koordinatensysteme (z. B. bei bewegtem LKW).
loadsArrayPflichtListe der Ladungspositionen im LKW (LoadPositionDto: name, x, y, z, o).
TORD-Feld createLorryLoadMap:
Wird im TORD-Request createLorryLoadMap = true gesetzt, sendet WES nach Abschluss des Transports automatisch eine LorryLoadMap an das WMS (POST /wms/idplorryloadmap).

11. Anhang – Vollständige Beispiele

Beispiel 4 – Mehrere Ladelisten mit je mehreren Positionen und Fahraufträgen

Dieses Beispiel basiert auf dem Muster von Beispiel 2 (Identifikation über Lagerort, Material und Charge). Es zeigt einen Transport mit zwei Ladelisten, je zwei Positionen und je zwei expliziten Fahraufträgen pro Position. Jede Position verwendet ein einheitliches Material (tamatnum); unterschiedliche Positionen verweisen auf unterschiedliche Materialien. Die Felder delivPosQuant und tamatquant steuern Zielmenge und Einzelmenge je Fahrauftrag.

Überblick der Hierarchie:
1 Transport (Lieferung 1)  →  2 Ladelisten (Ladeliste 1, Ladeliste 2)  →  je 2 Positionen  →  je 2 Fahraufträge
Ladeliste Position Fahrauftrag (tanum) Material Charge Menge/TA Zielmenge Pos.
Ladeliste 1Ladelistenposition 1AAuftrag 1A1MAT-001BATCH-2025-A1500 kg1.000 kg
Auftrag 1A2MAT-001BATCH-2025-A1500 kg
Ladeliste 1Ladelistenposition 1BAuftrag 1B1MAT-002BATCH-2025-B1750 kg1.500 kg
Auftrag 1B2MAT-002BATCH-2025-B1750 kg
Ladeliste 2Ladelistenposition 2AAuftrag 2A1MAT-003BATCH-2025-A2600 kg1.200 kg
Auftrag 2A2MAT-003BATCH-2025-A2600 kg
Ladeliste 2Ladelistenposition 2BAuftrag 2B1MAT-004BATCH-2025-C1800 kg1.600 kg
Auftrag 2B2MAT-004BATCH-2025-C1800 kg
[
  {
    "tatyp":         "OUTB",
    "tanum":         "Auftrag 1A1",
    "shipment":      "Lieferung 1",
    "deliv":         "Ladeliste 1",
    "delivPos":      "Ladelistenposition 1A",
    "delivPosQuant": 1000.0,
    "frpla":         "LAGER-A-01",
    "frstyp":        "Lager",
    "topla":         "RAMPE-2",
    "tostyp":        "Rampe",
    "tamatnum":      "MAT-001",
    "tabatch":       "BATCH-2025-A1",
    "tamatquant":    500.0
  },
  {
    "tatyp":         "OUTB",
    "tanum":         "Auftrag 1A2",
    "shipment":      "Lieferung 1",
    "deliv":         "Ladeliste 1",
    "delivPos":      "Ladelistenposition 1A",
    "delivPosQuant": 1000.0,
    "frpla":         "LAGER-A-01",
    "frstyp":        "Lager",
    "topla":         "RAMPE-2",
    "tostyp":        "Rampe",
    "tamatnum":      "MAT-001",
    "tabatch":       "BATCH-2025-A1",
    "tamatquant":    500.0
  },
  {
    "tatyp":         "OUTB",
    "tanum":         "Auftrag 1B1",
    "shipment":      "Lieferung 1",
    "deliv":         "Ladeliste 1",
    "delivPos":      "Ladelistenposition 1B",
    "delivPosQuant": 1500.0,
    "frpla":         "LAGER-B-03",
    "frstyp":        "Lager",
    "topla":         "RAMPE-2",
    "tostyp":        "Rampe",
    "tamatnum":      "MAT-002",
    "tabatch":       "BATCH-2025-B1",
    "tamatquant":    750.0
  },
  {
    "tatyp":         "OUTB",
    "tanum":         "Auftrag 1B2",
    "shipment":      "Lieferung 1",
    "deliv":         "Ladeliste 1",
    "delivPos":      "Ladelistenposition 1B",
    "delivPosQuant": 1500.0,
    "frpla":         "LAGER-B-03",
    "frstyp":        "Lager",
    "topla":         "RAMPE-2",
    "tostyp":        "Rampe",
    "tamatnum":      "MAT-002",
    "tabatch":       "BATCH-2025-B1",
    "tamatquant":    750.0
  },
  {
    "tatyp":         "OUTB",
    "tanum":         "Auftrag 2A1",
    "shipment":      "Lieferung 1",
    "deliv":         "Ladeliste 2",
    "delivPos":      "Ladelistenposition 2A",
    "delivPosQuant": 1200.0,
    "frpla":         "LAGER-A-05",
    "frstyp":        "Lager",
    "topla":         "RAMPE-2",
    "tostyp":        "Rampe",
    "tamatnum":      "MAT-003",
    "tabatch":       "BATCH-2025-A2",
    "tamatquant":    600.0
  },
  {
    "tatyp":         "OUTB",
    "tanum":         "Auftrag 2A2",
    "shipment":      "Lieferung 1",
    "deliv":         "Ladeliste 2",
    "delivPos":      "Ladelistenposition 2A",
    "delivPosQuant": 1200.0,
    "frpla":         "LAGER-A-05",
    "frstyp":        "Lager",
    "topla":         "RAMPE-2",
    "tostyp":        "Rampe",
    "tamatnum":      "MAT-003",
    "tabatch":       "BATCH-2025-A2",
    "tamatquant":    600.0
  },
  {
    "tatyp":         "OUTB",
    "tanum":         "Auftrag 2B1",
    "shipment":      "Lieferung 1",
    "deliv":         "Ladeliste 2",
    "delivPos":      "Ladelistenposition 2B",
    "delivPosQuant": 1600.0,
    "frpla":         "LAGER-C-02",
    "frstyp":        "Lager",
    "topla":         "RAMPE-2",
    "tostyp":        "Rampe",
    "tamatnum":      "MAT-004",
    "tabatch":       "BATCH-2025-C1",
    "tamatquant":    800.0
  },
  {
    "tatyp":         "OUTB",
    "tanum":         "Auftrag 2B2",
    "shipment":      "Lieferung 1",
    "deliv":         "Ladeliste 2",
    "delivPos":      "Ladelistenposition 2B",
    "delivPosQuant": 1600.0,
    "frpla":         "LAGER-C-02",
    "frstyp":        "Lager",
    "topla":         "RAMPE-2",
    "tostyp":        "Rampe",
    "tamatnum":      "MAT-004",
    "tabatch":       "BATCH-2025-C1",
    "tamatquant":    800.0
  }
]