Ü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.
shipment)deliv)delivPos)tanum)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.
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-Feld | Ebene | Beschreibung |
|---|---|---|
tanum | Fahrauftrag | Eindeutige ID des Fahrauftrags. Pflichtfeld bei INBO/REAR/OUTB. |
delivPos | Position | ID der Ladelistenposition. Pflicht wenn deliv gesetzt ist. |
deliv | Ladeliste | ID der Ladeliste. Mehrere TORDs mit gleichem Wert → gleiche Ladeliste. |
shipment | Transport | ID des Transports. Mehrere deliv-Werte mit gleichem Wert → gleicher Transport. |
createLorryLoadMap | Ladeliste | Boolean – wenn true, sendet WES nach Abschluss des Transports automatisch eine LorryLoadMap ans WMS. |
delivSeqNumber | Ladeliste | Reihenfolge der Ladeliste innerhalb des Transports (optional). |
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
deliv | String | Pflicht | Eindeutige ID der Ladeliste. |
delivDescription | String | Optional | Beschreibungstext der Ladeliste, wird dem Fahrer angezeigt (HTML möglich). |
delivNote | String | Optional | Zusätzliche Notiz zur Ladeliste (Freitext). |
delivProperties | Map<String,String> | Optional | Zusätzliche Schlüssel-Wert-Paare, die am Fahrzeugterminal angezeigt werden können. |
delivSeqNumber | Integer | Optional | Reihenfolge der Ladeliste innerhalb eines Transports. |
delivRestrictions | Set<Enum> | Optional | Einschränkungen für die Ladeliste (z. B. APPROVAL_REQUIRED: Freigabe durch Vorgesetzten nötig). |
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
delivPos | String | Pflicht* | ID der Position innerhalb der Ladeliste. (*Pflicht wenn deliv gesetzt ist) |
delivPosDescription | String | Optional | Beschreibungstext der Position (HTML möglich). |
delivPosQuant | Double | Optional | Zielmenge für materialbasierte Positionen. WES erzeugt so viele Fahraufträge wie nötig. |
delivPosEstimatedOrders | Integer | Optional | Geschätzte Anzahl der Fahraufträge zur Erreichung der Zielmenge. |
tamatnum | String | Optional | Materialnummer zur Identifikation der Ladeeinheit, wenn keine lenum übergeben wird. |
tabatch | String | Optional | Chargennummer zur weiteren Eingrenzung bei der materialbasierten Ladeeinheitensuche. |
tamatquant | Double | Optional | Mindestmenge des Materials, die sich auf der gesuchten Ladeeinheit befinden muss. |
taquant | String | Optional | Direkte Vorgabe der Anzahl der Fahraufträge für diese Material-/Charge-Kombination am Quellort. Alternative zu delivPosQuant/tamatquant. |
shortDelivTol | Float | Optional | Toleranz für Unterlieferung in Prozent (z. B. 5 = 5 % weniger als Ziel akzeptiert). |
overDelivTol | Float | Optional | Toleranz für Überlieferung in Prozent. |
delivPositionRestrictions | Set<Enum> | Optional | Einschränkungen für die Position (z. B. APPROVAL_REQUIRED). |
delivPosQuant vs. tamatquant vs. taquant – UnterschieddelivPosQuant 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.delivPosQuant: 16000 und tamatquant: 8000 →
WES sucht zwei Ladeeinheiten à 8.000 Einheiten und legt zwei Fahraufträge an.taquant: "3" →
WES legt sofort drei Fahraufträge für das angegebene Material/Charge am Quellort an.
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}
| Platzhalter | Bedeutung |
|---|---|
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, …).
|
tanum = "TA-100" und taquant = "3" –
WES legt drei Fahraufträge an:
TA-100 – erster Auftrag, tanum unverändertTA-100_0#01 – zweiter Auftrag, Schritt 0, Zähler 01TA-100_0#02 – dritter Auftrag, Schritt 0, Zähler 02
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.
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.
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"
}
]
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
}
]
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"
}
]
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.
| Konfigurationsobjekt | Beschreibung |
|---|---|
| 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. |
| Typ | Bedeutung |
|---|---|
BOOLEAN | Ja/Nein-Frage |
INTEGER | Ganzzahlige Eingabe (z. B. Stückzahl, Temperatur) |
STRING | Freitexteingabe |
OPTIONS | Auswahl 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.
| Status | Bedeutung |
|---|---|
VERIFICATION | Die Ladeliste wartet auf eine manuelle Verifikation (z. B. durch einen Vorgesetzten oder ein externes System), bevor sie weiter bearbeitet werden kann. |
APPROVAL_REQUIRED | Die Ladeliste oder eine ihrer Positionen erfordert eine explizite Freigabe. Wird ausgelöst, wenn delivRestrictions oder delivPositionRestrictions den Wert APPROVAL_REQUIRED enthält. |
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.
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
name | String | Pflicht | Eindeutige ID des Transports. |
sequenceEnabled | Boolean | Optional | Aktiviert die geordnete Abarbeitung der Ladelisten innerhalb des Transports. |
singularActivePicklist | Boolean | Optional | Nur eine Ladeliste kann gleichzeitig aktiv bearbeitet werden. |
picklistSequence | Array<String> | Optional | Vorgegebene Reihenfolge der Ladelisten-Namen. |
permittedMaxMass | Double | Optional | Maximal zulässige Gesamtmasse des Fahrzeugs in kg. |
permittedCargoWeight | Double | Optional | Maximal zulässiges Ladegewicht in kg. |
licensePlates | Array<String> | Optional | Kennzeichen der zugeordneten Fahrzeuge. |
certificates | Array<String> | Optional | Erforderliche Zertifikate (z. B. HAZMAT, COLD-CHAIN, FRAGILE-GOODS). |
driverName | String | Optional | Name des Fahrers. |
parkingSpaces | Array<String> | Optional | Parklokationen für den Transport. |
annotations | Map<String,String> | Optional | Zusatzinformationen ohne Geschäftslogik. |
Neben dem CATO-Interface gibt es direkte REST-Endpoints für die Stornierung:
| Endpoint | Beschreibung |
|---|---|
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. |
forceCancel (Boolean, default: false):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.
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.
| Feld | Typ | Beschreibung |
|---|---|---|
shipment | String | ID des abgeschlossenen Transports. |
shipcoPos | Array | Liste der enthaltenen Ladelisten (ShipcoPos). |
↳ deliv | String | ID der Ladeliste. |
↳ delivProperties | Map | Eigenschaften der Ladeliste. |
↳ precheck | Map | Antwortdaten des Pre-Checks (falls konfiguriert). |
↳ postcheck | Map | Antwortdaten des Post-Checks (falls konfiguriert). |
↳ delivPos | Array | Positionen der Ladeliste. |
↳ delivMaterial | String | Materialnummer der Position. |
↳ orderPos | Array | Fahraufträge der Position: tanum, lenum, material, topla, resource, status. |
Die Ladekarte beschreibt die physische Position aller Ladungen im LKW und kann in beide Richtungen übertragen werden.
| Richtung | Endpoint | Beschreibung |
|---|---|---|
| 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. |
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
shipment | String | Pflicht | Name des zugehörigen Transports. |
index | Integer | Optional | Index zur Unterscheidung mehrerer Koordinatensysteme (z. B. bei bewegtem LKW). |
loads | Array | Pflicht | Liste der Ladungspositionen im LKW (LoadPositionDto: name, x, y, z, o). |
createLorryLoadMap:createLorryLoadMap = true gesetzt, sendet WES nach
Abschluss des Transports automatisch eine LorryLoadMap an das WMS (POST /wms/idplorryloadmap).
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.
| Ladeliste | Position | Fahrauftrag (tanum) |
Material | Charge | Menge/TA | Zielmenge Pos. |
|---|---|---|---|---|---|---|
| Ladeliste 1 | Ladelistenposition 1A | Auftrag 1A1 | MAT-001 | BATCH-2025-A1 | 500 kg | 1.000 kg |
| Auftrag 1A2 | MAT-001 | BATCH-2025-A1 | 500 kg | |||
| Ladeliste 1 | Ladelistenposition 1B | Auftrag 1B1 | MAT-002 | BATCH-2025-B1 | 750 kg | 1.500 kg |
| Auftrag 1B2 | MAT-002 | BATCH-2025-B1 | 750 kg | |||
| Ladeliste 2 | Ladelistenposition 2A | Auftrag 2A1 | MAT-003 | BATCH-2025-A2 | 600 kg | 1.200 kg |
| Auftrag 2A2 | MAT-003 | BATCH-2025-A2 | 600 kg | |||
| Ladeliste 2 | Ladelistenposition 2B | Auftrag 2B1 | MAT-004 | BATCH-2025-C1 | 800 kg | 1.600 kg |
| Auftrag 2B2 | MAT-004 | BATCH-2025-C1 | 800 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
}
]