Postman-Collection
Stock Schreiben

pixiAssignBoxesForPicklist

Ordnet einer Pickliste eine Menge von Boxen zu und ersetzt die bisherige Zuordnung, nachdem Existenz und ausreichende Anzahl der Boxen geprüft wurden.

Ersetzt die Boxenzuordnung einer Pickliste durch die als XML übergebene Liste von Boxnummern.

Ablauf:

  1. Liest den Lagerort (PLHlocID) der Pickliste @PicklistNr aus PLHeader. Ist @PicklistNr NULL, <= 0 oder existiert die Pickliste nicht, wird eine Fehlerzeile geliefert.
  2. Prüft, dass @BoxNumbers nicht NULL oder leer ist.
  3. Wertet @BoxNumbers als XML aus und liest alle eindeutigen Werte /BoxNumbers/BoxNr als Ganzzahlen. Wird kein Wert ungleich 0 gefunden, wird eine Fehlerzeile geliefert.
  4. Sucht jede Boxnummer in boxes am Lagerort der Pickliste (LocationID = Lagerort der Pickliste). Fehlt eine Box dort, wird eine Fehlerzeile mit den fehlenden Nummern geliefert und nichts geändert.
  5. Ermittelt die Anzahl unterschiedlicher Aufträge auf der Pickliste (einschließlich daraus abgeteilter Picklisten über PLHOriginalKey). Sind weniger Boxen übergeben als Aufträge vorhanden, wird eine Fehlerzeile geliefert.
  6. In einer Transaktion:
    • werden bestehende PicklistBox-Zuordnungen der Pickliste gelöscht, deren Box nicht in der neuen Liste enthalten ist,
    • werden Zuordnungen für noch nicht zugeordnete Boxen der Liste angelegt (angelegt/geändert durch den über @UserName ermittelten Benutzer),
    • werden PLHfromBox und PLHtoBox der Pickliste auf 0 gesetzt.
  7. Liefert eine Zeile mit Status = 1 und Message = Success.

Das Ergebnis ist immer eine einzelne Status/Message-Zeile; Status = 0 bedeutet, dass die Prüfung fehlgeschlagen ist und keine Daten geändert wurden.

Hinweise

  • Der Aufruf ersetzt die Zuordnung vollständig: Boxen, die der Pickliste aktuell zugeordnet sind, aber in @BoxNumbers fehlen, werden entfernt.
  • @BoxNumbers wird vor der Transaktion und außerhalb der Fehlerbehandlung in XML umgewandelt. Fehlerhaftes XML oder nicht ganzzahlige BoxNr-Werte führen zu einem SQL-Konvertierungsfehler, der als SqlMessage zurückkommt.
  • Eine BoxNr mit Wert 0 wird nicht ignoriert, wenn weitere Nummern vorhanden sind; sie wird wie jede andere Nummer gesucht und löst in der Regel den Fehler "do not exist" aus.
  • Die Liste fehlender Boxen in der Fehlermeldung ist auf 100 Zeichen begrenzt (@ErrorDetails ist varchar(100)) und kann abgeschnitten werden.
  • In der Meldung "not enough boxes" wird die benötigte Anzahl in ein VARCHAR ohne Längenangabe (Länge 1) umgewandelt, daher erscheint nur die erste Ziffer der Auftragsanzahl (z. B. needed 1 bei 12 Aufträgen).
  • Wird @UserName nicht in UCS_USERS gefunden, wird der Benutzer pixiAdministration verwendet.
  • Läuft der Aufruf innerhalb einer bestehenden Transaktion, wird ein Savepoint gesetzt und kein Commit ausgeführt.
  • Bei einem Laufzeitfehler innerhalb der Transaktion werden die Änderungen zurückgerollt und der Fehler über log.InsertError protokolliert; in diesem Fall wird keine Status-Zeile geliefert.
  • Lesezugriffe auf PLHeader, PicklistBox und boxes erfolgen mit NOLOCK.

Parameter

Parameter Typ Standardwert Beschreibung
PicklistNr
Pflicht
int –

Schlüssel der Pickliste (PLHkey), der die Boxen zugeordnet werden. Muss > 0 sein und auf eine existierende Pickliste verweisen.

Beispiel: 45872

BoxNumbers
Pflicht
nvarchar(max)
xml
–

XML-Dokument mit den zuzuordnenden Boxnummern (BoxNr in boxes). Wurzelelement BoxNumbers mit einem BoxNr-Element pro Box. Doppelte Werte werden ignoriert. Alle Boxen müssen am Lagerort der Pickliste existieren, und ihre Anzahl muss mindestens der Anzahl der Aufträge auf der Pickliste entsprechen.

Beispiel:

<BoxNumbers>
  <BoxNr>1001</BoxNr>
  <BoxNr>1002</BoxNr>
  <BoxNr>1003</BoxNr>
</BoxNumbers>
UserName
varchar(50)
string
API

Pixi-Benutzername, der als Ersteller/Bearbeiter neuer Boxenzuordnungen gespeichert wird. Existiert der Benutzer nicht, wird pixiAdministration verwendet.

Beispiel: API

Antwort

Result-Set 1 · Immer (außer bei einem Laufzeitfehler innerhalb der Transaktion oder wenn das XML nicht umgewandelt werden kann)

Statuszeile mit dem Ergebnis des Aufrufs.

Spalte Typ Beschreibung
Status int

1 = Boxen erfolgreich zugeordnet, 0 = Prüfung fehlgeschlagen, nichts geändert.mo

Message varchar(1000)
string

Success oder die Fehlermeldung der Prüfung.

Fehlermeldungen

Status Meldung Ursache
0 Invalid PicklistNr provided. `@PicklistNr` ist NULL, <= 0 oder in `PLHeader` existiert keine Pickliste mit diesem Schlüssel. Den Schlüssel einer existierenden Pickliste übergeben.
0 BoxNumbers parameter is required. `@BoxNumbers` ist NULL oder leer. Ein XML-Dokument mit mindestens einem `BoxNr` übergeben.
0 No boxes provided in XML array. Das XML enthält kein Element `/BoxNumbers/BoxNr` mit einem Wert ungleich 0. Elementnamen und Werte prüfen.
0 Boxes {BoxNr}, {BoxNr}, do not exist and could not be added. Eine oder mehrere Boxnummern existieren in `boxes` nicht am Lagerort der Pickliste. Nur Boxen übergeben, die für diesen Lagerort angelegt sind.
0 There are not enough boxes (sent {NumberOfBoxes}) assigned to the picklist (needed {OrdersOnPicklist}). Es wurden weniger unterschiedliche Boxen übergeben, als Aufträge auf der Pickliste sind. Mindestens eine Box pro Auftrag übergeben. `{OrdersOnPicklist}` zeigt nur die erste Ziffer der Anzahl.

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:pixiAssignBoxesForPicklist>
      <PicklistNr>45872</PicklistNr>
      <BoxNumbers><![CDATA[<BoxNumbers><BoxNr>1001</BoxNr><BoxNr>1002</BoxNr><BoxNr>1003</BoxNr></BoxNumbers>]]></BoxNumbers>
      <!-- <UserName>API</UserName> -->
    </ns1:pixiAssignBoxesForPicklist>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Verwendete Tabellen

PLHeader · Schreiben PicklistBox · Schreiben boxes · Lesen PLitem · Lesen Orderlines · Lesen UCS_USERS · Lesen
SQL-Objekt:
dbo.pipiAssignBoxesForPicklist
Prozedur zuletzt geändert am 2026-10-05
Dokumentation von claude-opus-5-5 am 2026-10-30 geschrieben