Postman-Collection
Orderlines Schreiben

pixiSetOrderlineLocation

Setzt das Lager (LocID) einer Auftragsposition oder einer Bundle-Position samt zugehöriger Bundle-Positionen um.

Ändert das Lager (LocationID und LastOrdLocationID) von Auftragspositionen. Der Aufruf übergibt an die interne Prozedur Pixi_UpdateOrderLocation mit dem Benutzernamen API und liefert eine Statuszeile.

Welche Datensätze geändert werden

  • Nur OrderlineKey angegeben: Die Auftragsposition selbst wird umgesetzt. Gehört sie zu einem Bundle, werden auch alle weiteren Positionen desselben Bundles und die Bundle-Position (BundleOrderlines) umgesetzt.
  • Nur BundleOrderlineKey angegeben: Alle Komponentenpositionen des Bundles und die Bundle-Position selbst werden umgesetzt. Die Komponentenpositionen werden nur umgesetzt, wenn die Bundle-Position einen zulässigen Status hat.
  • Kein Schlüssel angegeben: Der Aufruf schlägt fehl, da kein Auftrag ermittelt werden kann.

Nur Positionen mit zulässigem Status werden aktualisiert. Zulässig sind alle nicht finalen Status aus OrderStates (FinalState = 'N') außer EIN, FUT und FUS. Positionen mit anderem Status werden ohne Meldung übergangen; der Aufruf liefert trotzdem OK.

Prüfungen

Die interne Prozedur prüft Folgendes und lehnt den Aufruf ab, wenn eine Prüfung fehlschlägt:

  • Die Auftragsposition bzw. Bundle-Position existiert.
  • LocationId existiert in Location.
  • Mindestens eine Position des Auftrags hat den Status NEW, ANG, HAL, MIN, BES, STO oder NLB.
  • Keine der betroffenen Auftragspositionen liegt auf einer Pickliste (PLitem).

POS-/Reservierungslager

Hat das Ziellager eine ResLocID, wird ResOnLocDate im Auftragskopf auf NULL gesetzt. Danach betrachtet die Prozedur andere Aufträge, die zulässige Positionen mit denselben Artikeln auf diesem Lager haben. Liegt das späteste ResOnLocDate dieser Aufträge vor dem frühesten Reservierungsdatum dieses Auftrags, erhalten alle Reservierungen dieses Auftrags dieses späteste ResOnLocDate plus eine Sekunde als neues ResDate.

Ergebnis

Bei Erfolg liefert der Aufruf ReturnCode = 'OK'. Andernfalls liefert er ReturnCode = 'ERROR' mit der allgemeinen Meldung Ilegal parameters.

Hinweise

  • Alle Fehlerursachen der internen Prozedur münden in die eine Meldung Ilegal parameters. Die genauen Gründe werden nur per PRINT ausgegeben, z. B. ERROR: Wrong LocationID: ... oder ... must not be on Picklist. Ob ein SOAP-Client diese Texte erhält, ist aus dem Code nicht ersichtlich.

  • UpdateEmp wird auf API und UpdateDate auf die aktuelle Zeit gesetzt, und zwar bei allen aktualisierten Zeilen.

  • Die interne Prozedur läuft in einer eigenen Transaktion oder nutzt einen Savepoint, falls bereits eine Transaktion offen ist. Bei einem Laufzeitfehler erfolgt ein Rollback, der Fehler wird über log.InsertError protokolliert und der Aufruf liefert ERROR.

  • Während des Updates von BundleOrderlines wird CONTEXT_INFO vorübergehend auf 0x30000 gesetzt. Laut Code-Kommentar wird damit eine Neuberechnung der Bundles vermieden; die auswertenden Trigger liegen nicht vor.

  • Prüfungen lesen mit NOLOCK; Updates verwenden ROWLOCK.

  • Die gleichzeitige Angabe von OrderlineKey und BundleOrderlineKey ist nicht zu empfehlen:

    • Der Bundle-Schlüssel bestimmt den Auftrag.
    • Die Bundle-Position selbst wird nicht aktualisiert.
    • Dieselben Positionen können doppelt erfasst werden, sodass der eindeutige Index auf der internen Temp-Tabelle fehlschlägt und der Aufruf ERROR liefert.

    Es sollte nur einer der beiden Schlüssel übergeben werden.

  • Die Statusprüfung (NEW, ANG, HAL, ...) verlangt nur eine Position des gesamten Auftrags in einem solchen Status, nicht zwingend die Zielposition.

Parameter

Parameter Typ Standardwert Beschreibung
OrderlineKey
int NULL

Schlüssel der umzusetzenden Auftragsposition. Gehört sie zu einem Bundle, werden auch die übrigen Bundle-Positionen und die Bundle-Position umgesetzt. Dieser Schlüssel oder BundleOrderlineKey muss angegeben werden.

Beispiel: 123456

BundleOrderlineKey
int NULL

Schlüssel der Bundle-Position (BundleOrderlines), die mit allen Komponentenpositionen umgesetzt wird. Dieser Schlüssel oder OrderlineKey muss angegeben werden.

Beispiel: 4711

LocationId
Pflicht
char(3)
string
–

Ziellager (LocID aus Tabelle Location). Muss existieren.

Beispiel: 001

Antwort

Result-Set 1 · Immer

Statuszeile des Aufrufs.

Spalte Typ Beschreibung
ReturnCode varchar(5)
string

OK bei Erfolg, ERROR bei Fehler.

ErrorMessage varchar(17)
string

Leer bei Erfolg, sonst Ilegal parameters.

Fehlermeldungen

Status Meldung Ursache
ERROR Ilegal parameters Weder `OrderlineKey` noch `BundleOrderlineKey` wurde übergeben, oder die angegebene Auftragsposition bzw. Bundle-Position existiert nicht.
ERROR Ilegal parameters `LocationId` existiert nicht in Tabelle `Location`. Eine gültige `LocID` übergeben.
ERROR Ilegal parameters Keine Position des Auftrags hat den Status `NEW`, `ANG`, `HAL`, `MIN`, `BES`, `STO` oder `NLB`.
ERROR Ilegal parameters Eine der betroffenen Auftragspositionen liegt bereits auf einer Pickliste (`PLitem`).
ERROR Ilegal parameters Beim Update ist ein Laufzeitfehler aufgetreten, z. B. doppelte Positionen bei Angabe beider Schlüssel. Die Transaktion wird zurückgerollt und der Fehler protokolliert.

Beispiele

POST https://apigateway.descartes.com/tms/pixi/
Content-Type: text/xml; charset=utf-8
Authorization: Basic BASE64(USERNAME:PASSWORD)

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="https://apigateway.descartes.com/tms/pixi/">
  <SOAP-ENV:Body>
    <ns1:pixiSetOrderlineLocation>
      <!-- <OrderlineKey>123456</OrderlineKey> -->
      <!-- <BundleOrderlineKey>4711</BundleOrderlineKey> -->
      <LocationId>001</LocationId>
    </ns1:pixiSetOrderlineLocation>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Verwendete Tabellen

Orderlines · Schreiben BundleOrderlines · Schreiben OrderHeader · Schreiben Reservation · Schreiben Location · Lesen PLitem · Lesen OrderStates · Lesen
SQL-Objekt:
dbo.pipiSetOrderlineLocation
Prozedur zuletzt geändert am 2026-10-05
Dokumentation von claude-opus-5-5 am 2026-10-30 geschrieben