Postman-Collection
Stock Schreiben

pixiBinCreate

Legt einen oder mehrere Lagerplätze aus einer XML-Liste an, prüft jeden Eintrag und liefert pro Lagerplatz eine Statuszeile.

Legt neue Lagerplätze in der Tabelle InvBin aus dem in BinsXML übergebenen XML an. Jedes Element /Bins/Bin beschreibt einen Lagerplatz.

Prüfungen für die gesamte Anfrage

  • Ist BinsXML NULL oder leer oder enthält es kein Element /Bins/Bin, wird eine einzelne Statuszeile ERROR / XML contains no data. geliefert.
  • Kann der Text nicht in XML umgewandelt werden, wird ERROR / Cannot parse XML geliefert.

Prüfung je Lagerplatz (ein Lagerplatz, der eine Prüfung nicht besteht, erhält Status = ERROR und wird nicht angelegt):

  1. Duplikate innerhalb der Anfrage: Bei Einstellung FilterStockOperationsWithLocation = 0 muss der Lagerplatzname in der Anfrage eindeutig sein, bei Einstellung = 1 die Kombination aus Name und Lager. Transportlagerplätze (TransportBin = 1) mit gleichem Namen gelten unabhängig vom Lager immer als Duplikat.
  2. Name darf nicht leer sein.
  3. LocId darf nicht leer sein.
  4. SortNr muss eine ganze Zahl ≥ 0 sein (Pflicht).
  5. MaxItems muss eine ganze Zahl ≥ 0 sein (Pflicht).
  6. Duplikate in der Datenbank: Bei Einstellung = 0 darf kein vorhandener Lagerplatz in irgendeinem Lager denselben Namen haben, bei Einstellung = 1 kein vorhandener Lagerplatz mit demselben Namen im selben Lager.
  7. Das Lager LocId muss in Location existieren.

Anlage Alle fehlerfreien Lagerplätze werden in einer Transaktion in InvBin eingefügt (BinLocID, BinName, BinMaxItems, BinSortNum, BinGroup, TransportBin); CreateEmp/UpdateEmp erhalten den Wert von CreateEmp (Standard API), CreateDate/UpdateDate den aktuellen Zeitpunkt. Ein fehlendes Group wird als Leerstring, ein fehlendes TransportBin als 0 gespeichert.

Antwort Eine Zeile je Bin-Element, sortiert nach seiner Position im XML (Row). Erfolgreich angelegte Lagerplätze haben Status = CREATED, eine leere Message und den neuen BinKey (ermittelt über Name und Lager). Abgelehnte Lagerplätze haben Status = ERROR, den Grund in Message und BinKey = NULL.

Hinweise

  • Das Verhalten hängt von der Einstellung FilterStockOperationsWithLocation ab (gelesen über SettingGet, Standard 0): Bei 0 sind Lagerplatznamen systemweit eindeutig, bei 1 nur je Lager.
  • Je Lagerplatz wird nur eine Fehlermeldung behalten. Ein leerer Name überschreibt eine zuvor gesetzte Duplikatmeldung; spätere Prüfungen laufen nur für Zeilen ohne bisherigen Fehler.
  • Welcher von mehreren doppelten Einträgen der Anfrage angenommen wird, ist nicht garantiert der erste im XML, da die Nummerierung innerhalb einer Duplikatgruppe nur nach dem Lagerplatznamen sortiert.
  • SortNr und MaxItems werden mit TRY_PARSE (Kultur der Sitzungssprache) umgewandelt. Ein fehlender Wert scheitert bereits als Datatype error, daher werden die Meldungen SortNr is empty. / MaxItems is empty. praktisch nie geliefert. Die Spalten SortNr und MaxItems der Antwort zeigen den umgewandelten Eingabewert und sind bei nicht numerischen Werten NULL.
  • TransportBin wird direkt als bit gelesen. Ein nicht umwandelbarer Wert (z. B. yes) löst außerhalb der Fehlerbehandlung einen SQL-Fehler aus, der als SqlMessage zurückkommt.
  • Die Existenzprüfungen gegen InvBin und Location verwenden NOLOCK; parallele Aufrufe mit gleichen Lagerplatznamen können daher dennoch Duplikate erzeugen.
  • Das Einfügen läuft in einer eigenen Transaktion (bzw. einem Savepoint, wenn bereits eine Transaktion offen ist). Bei einem unerwarteten Fehler wird alles zurückgerollt, der Fehler über log.InsertError (nicht beigefügt) protokolliert und eine einzelne Zeile ERROR mit dem SQL-Fehlertext geliefert.

Parameter

Parameter Typ Standardwert Beschreibung
BinsXML
Pflicht
varchar(max)
xml
–

XML-Liste der anzulegenden Lagerplätze. Wurzel Bins, je Lagerplatz ein Element Bin mit den Unterelementen Name (max. 50 Zeichen, Pflicht), LocId (Lager-ID, max. 3 Zeichen, Pflicht), Group (Lagerplatzgruppe, max. 20 Zeichen, optional), SortNr (ganze Zahl ≥ 0, Pflicht), MaxItems (ganze Zahl ≥ 0, Pflicht) und TransportBin (0/1, optional, Standard 0).

Beispiel:

<Bins>
  <Bin>
    <Name>A-01-01</Name>
    <LocId>001</LocId>
    <Group>Regal A</Group>
    <SortNr>10</SortNr>
    <MaxItems>100</MaxItems>
    <TransportBin>0</TransportBin>
  </Bin>
  <Bin>
    <Name>TR-01</Name>
    <LocId>001</LocId>
    <Group/>
    <SortNr>900</SortNr>
    <MaxItems>0</MaxItems>
    <TransportBin>1</TransportBin>
  </Bin>
</Bins>
CreateEmp
varchar(50)
string
API

Benutzername, der als Ersteller und letzter Bearbeiter der neuen Lagerplätze gespeichert wird. Ein leerer Wert wird durch API ersetzt.

Beispiel: ShopSync

Antwort

Result-Set 1 · Wenn BinsXML leer ist, nicht geparst werden kann oder kein Element /Bins/Bin enthält.

Einzelne Statuszeile; es wird kein Lagerplatz angelegt.

Spalte Typ Beschreibung
Status varchar(5)
string

Immer ERROR.

Message varchar(21)
string

Fehlertext.

Result-Set 2 · Nach der Prüfung, sofern kein unerwarteter SQL-Fehler auftritt.

Eine Zeile je Bin-Element der Anfrage mit dem Ergebnis der Anlage, sortiert nach Row.

Spalte Typ Beschreibung
Row int

Position des Bin-Elements in der Anfrage (beginnend bei 1).

BinKey
Kann leer sein
int

Schlüssel des angelegten Lagerplatzes in InvBin; NULL, wenn der Lagerplatz abgelehnt wurde.

BinName
Kann leer sein
varchar(50)
string

Lagerplatzname aus der Anfrage.

LocId
Kann leer sein
varchar(3)
string

Lager-ID aus der Anfrage.

BinGroup
Kann leer sein
varchar(20)
string

Lagerplatzgruppe aus der Anfrage (Leerstring, wenn nicht angegeben).

SortNr
Kann leer sein
int

Aus der Anfrage umgewandelte Sortiernummer; NULL, wenn fehlend oder nicht numerisch.

MaxItems
Kann leer sein
int

Aus der Anfrage umgewandelte maximale Artikelanzahl; NULL, wenn fehlend oder nicht numerisch.

Status varchar(10)
string

CREATED, wenn der Lagerplatz angelegt wurde, ERROR, wenn er abgelehnt wurde.

Message varchar(50)
string

Ablehnungsgrund; Leerstring bei Erfolg.

TransportBin bit
boolean

Gibt an, ob es sich um einen Transportlagerplatz handelt.

Result-Set 3 · Wenn beim Einfügen oder Erstellen der Antwort ein unerwarteter SQL-Fehler auftritt.

Einzelne Statuszeile mit dem SQL-Fehlertext; alle Einfügungen des Aufrufs werden zurückgerollt.

Spalte Typ Beschreibung
Status varchar(5)
string

Immer ERROR.

Message
Kann leer sein
nvarchar(4000)
string

SQL-Fehlermeldung.

Fehlermeldungen

Status Meldung Ursache
ERROR XML contains no data. `BinsXML` ist NULL, leer oder enthält kein Element `/Bins/Bin`. Mindestens ein `Bin`-Element unter der Wurzel `Bins` senden.
ERROR Cannot parse XML `BinsXML` ist kein wohlgeformtes XML.
ERROR Bin not created (Duplicated). Der Lagerplatzname kommt mehrfach in der Anfrage vor (je Lager bei `FilterStockOperationsWithLocation` = 1; bei Transportlagerplätzen immer) oder bei Einstellung = 0 existiert bereits ein Lagerplatz mit diesem Namen in einem beliebigen Lager.
ERROR Bin Name not created (Duplicated). Bei `FilterStockOperationsWithLocation` = 1 existiert bereits ein Lagerplatz mit gleichem Namen im selben Lager.
ERROR Bin not created. Name is empty. `Name` fehlt oder ist leer.
ERROR Bin not created. Location is empty. `LocId` fehlt oder ist leer.
ERROR Bin not created. Datatype error (SortNr). `SortNr` fehlt oder ist keine gültige ganze Zahl.
ERROR Bin not created. SortNr is empty. `SortNr` ist nach der Umwandlung NULL; in der Praxis wird ein fehlender Wert bereits als Datentypfehler gemeldet.
ERROR Bin not created. SortNr should be positive. `SortNr` ist negativ. 0 oder eine positive ganze Zahl verwenden.
ERROR Bin not created. Datatype error (MaxItems). `MaxItems` fehlt oder ist keine gültige ganze Zahl.
ERROR Bin not created. MaxItems is empty. `MaxItems` ist nach der Umwandlung NULL; in der Praxis wird ein fehlender Wert bereits als Datentypfehler gemeldet.
ERROR Bin not created. MaxItems should be positive. `MaxItems` ist negativ. 0 oder eine positive ganze Zahl verwenden.
ERROR Bin not created (Location does not exist). Die angegebene `LocId` existiert nicht in der Lagertabelle.
ERROR {ERROR_MESSAGE()} Unerwarteter SQL-Fehler beim Einfügen der Lagerplätze oder Erstellen der Antwort; 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:pixiBinCreate>
      <BinsXML><![CDATA[<Bins><Bin><Name>A-01-01</Name><LocId>001</LocId><Group>Regal A</Group><SortNr>10</SortNr><MaxItems>100</MaxItems><TransportBin>0</TransportBin></Bin><Bin><Name>TR-01</Name><LocId>001</LocId><Group></Group><SortNr>900</SortNr><MaxItems>0</MaxItems><TransportBin>1</TransportBin></Bin></Bins>]]></BinsXML>
      <!-- <CreateEmp>ShopSync</CreateEmp> -->
    </ns1:pixiBinCreate>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Verwendete Tabellen

InvBin · Schreiben Location · Lesen Settings · Lesen
SQL-Objekt:
dbo.pipiBinCreate
Prozedur zuletzt geändert am 2026-10-05
Dokumentation von claude-opus-5-5 am 2026-10-30 geschrieben