Postman-Collection
Items Schreiben

pixiSetItemInfo

Aktualisiert Stammdaten eines oder mehrerer Artikel (Name, Beschreibung, Kategorie, Preis, MwSt-Stufe, Maße, Zolldaten, Hersteller, interne Artikelnummer).

Ändert Artikelstammdaten in items und die interne Artikelnummer in ItemCode. Zwei Eingabewege sind möglich, einzeln oder kombiniert:

  • ItemKey + ItemDescription: setzt die Beschreibung eines einzelnen Artikels. Eine fehlende oder leere ItemDescription entfernt die Beschreibung.
  • ItemInfoXML: beliebig viele Item-Elemente unterhalb von /ItemInfo (elementbasiert). Jeder Eintrag bestimmt den Artikel über ItemKey; fehlt ItemKey oder ist er 0, wird der Artikel über ItemNrInt (Artikelcode vom Typ 2) gesucht.

Ablauf

  1. Leere Elemente gelten als nicht angegeben.
  2. Einträge, deren Enabled keine Ganzzahl oder deren PriceVK nicht numerisch ist, werden verworfen und mit einer Statuszeile gemeldet.
  3. Feldzuordnung (nicht angegebene Felder behalten ihren aktuellen Wert, außer ItemDescription):
    • ItemName → ItemName, PicLinkSmall/PicLinkLarge, CustomsTariffNumber, CustomsCountryOfOrigin, CustomsTariffText → gleichnamige Spalten, Manufacturer → Artist.
    • ItemDescription → ItemDescription, wird immer geschrieben; NULL, wenn der Eintrag keine enthält.
    • Enabled → Bit (0 = deaktiviert, jede andere Zahl = aktiviert).
    • PriceVK → Price (money, Dezimalpunkt).
    • VATLevel: HIGH, LOW, ZERO → MwStSatz 1, 2, 3; andere Werte werden ignoriert.
    • Weight → Ganzzahl decimal(10,0); Heigth, Width, Length → Ganzzahlen decimal(4,0); nicht konvertierbare Werte werden ignoriert.
    • Category: wird über den Text in TontrArten gesucht. Unbekannte Kategorien werden mit dem nächsten freien Hexadezimal-Code angelegt. Der Artikel erhält CategoryId und ConfigType dieser Kategorie.
    • InternalItemNumber: Artikelcode vom Typ 3 in ItemCode; wird angelegt, wenn der Artikel keinen hat, sonst bei Abweichung geändert.
  4. Ein Artikel wird nur aktualisiert, wenn er in items existiert und der Eintrag mindestens ein Feld außer ItemDescription/InternalItemNumber enthält oder es sich um den Artikel aus dem Parameter ItemKey handelt.
  5. Kommt derselbe Artikel in mehreren Einträgen mit unterschiedlichen Daten vor, wird er gar nicht aktualisiert.
  6. Aktualisierte Artikel erhalten UpdateDate = aktuelle Zeit und UpdateEmp = API user SetItemInfo.

Ergebnis

Wenn mindestens ein Artikel für die Aktualisierung in Frage kam und kein SQL-Fehler auftrat, wird pro Eintrag eine Zeile mit Status = Updated oder dem Grund für das Überspringen geliefert. Andernfalls wird eine einzelne Zeile mit Status (404 oder 500) und ErrorMsg geliefert. Die Zeilen sind nicht sortiert.

Hinweise

  • Beschreibung wird überschrieben: Jeder aktualisierte Artikel erhält ItemDescription aus seinem Eintrag. Ein XML-Eintrag ohne ItemDescription löscht daher die vorhandene Beschreibung. Soll sie erhalten bleiben, muss sie immer mitgesendet werden.
  • Wird derselbe Artikel über den Parameter ItemKey und im XML übergeben, entstehen in der Regel zwei unterschiedliche Einträge; der Artikel wird dann ohne Änderung als Duplicated entries found in input parameters gemeldet.
  • Ein Eintrag, der nur InternalItemNumber (und/oder ItemDescription) enthält, wird nicht verarbeitet und als No item/s found or have no data for update gemeldet, außer es handelt sich um den Artikel aus dem Parameter ItemKey.
  • Neue Kategorien in TontrArten werden vor und unabhängig von der Artikelaktualisierung angelegt, auch wenn der Artikel nicht existiert, der Eintrag doppelt ist oder die Aktualisierung später fehlschlägt.
  • Es gibt keine explizite Transaktion: Die Änderungen an ItemCode und das Update von items sind getrennte Anweisungen in einem TRY-Block. Schlägt eine spätere Anweisung fehl, bleiben frühere Änderungen bestehen und der Aufruf liefert 500 statt der Zeilen pro Artikel.
  • Während des Updates von items wird CONTEXT_INFO auf 0x11199 gesetzt, um die Artikel-Trigger zu unterdrücken; danach wird der vorherige Wert wiederhergestellt.
  • Das Element für die Höhe heißt im XML Heigth.
  • Weight und die Maße werden auf Ganzzahlen gerundet; Maße über 9999 werden ignoriert.
  • Fehlerhaftes XML oder ein Konvertierungsproblem vor dem TRY-Block führt zu einem SQL-Fehler (SqlMessage) statt einer Statuszeile. Der Code prüft nicht explizit, ob ItemInfoXML leer ist.
  • Kommt kein Eintrag für ein Update in Frage, wird nur 404 geliefert, auch wenn Einträge wegen nicht numerischem Enabled/PriceVK verworfen wurden.
  • Lesezugriffe auf items, ItemCode, TontrArten und Numbers erfolgen mit NOLOCK.

Parameter

Parameter Typ Standardwert Beschreibung
ItemKey
int NULL

Schlüssel eines einzelnen Artikels, dessen Beschreibung aus ItemDescription gesetzt wird. 0 gilt als nicht angegeben. Dieser Artikel wird auch ohne weitere Felder aktualisiert.

Beispiel: 12345

ItemDescription
varchar(4000)
string
NULL

Neue Beschreibung für den Artikel aus ItemKey. Wird nur zusammen mit ItemKey verwendet. Leer oder fehlend entfernt die Beschreibung.

Beispiel: Robust stainless steel water bottle, 750 ml

ItemInfoXML
varchar(max)
xml
NULL

XML-Dokument mit einem Item-Element pro Artikel unterhalb von /ItemInfo. Kindelemente: ItemKey, ItemNrInt, ItemName, ItemDescription, InternalItemNumber, Category, Enabled, PriceVK, PicLinkSmall, PicLinkLarge, VATLevel, Weight, Heigth, Width, Length, CustomsTariffNumber, CustomsCountryOfOrigin, CustomsTariffText, Manufacturer. Leere Elemente werden ignoriert.

Beispiel:

<ItemInfo>
  <Item>
    <ItemKey>12345</ItemKey>
    <ItemNrInt>ART-1001</ItemNrInt>
    <ItemName>Water bottle steel 750 ml</ItemName>
    <ItemDescription>Robust stainless steel water bottle, 750 ml</ItemDescription>
    <InternalItemNumber>INT-1001</InternalItemNumber>
    <Category>Outdoor</Category>
    <Enabled>1</Enabled>
    <PriceVK>19.90</PriceVK>
    <PicLinkSmall>https://shop.example.com/img/1001_s.jpg</PicLinkSmall>
    <PicLinkLarge>https://shop.example.com/img/1001_l.jpg</PicLinkLarge>
    <VATLevel>HIGH</VATLevel>
    <Weight>450</Weight>
    <Heigth>26</Heigth>
    <Width>8</Width>
    <Length>8</Length>
    <CustomsTariffNumber>73239300</CustomsTariffNumber>
    <CustomsCountryOfOrigin>DE</CustomsCountryOfOrigin>
    <CustomsTariffText>Table and kitchen articles of stainless steel</CustomsTariffText>
    <Manufacturer>Example GmbH</Manufacturer>
  </Item>
  <Item>
    <ItemNrInt>ART-1002</ItemNrInt>
    <ItemDescription>Lid for water bottle</ItemDescription>
    <PriceVK>4.50</PriceVK>
  </Item>
</ItemInfo>

Antwort

Result-Set 1 · Wenn mindestens ein Artikel für das Update in Frage kam und kein SQL-Fehler auftrat (Status 200)

Eine Zeile pro Eingabeeintrag mit dem Verarbeitungsergebnis.

Spalte Typ Beschreibung
ItemKey
Kann leer sein
int

Artikelschlüssel des Eintrags; leer, wenn er nicht ermittelt werden konnte.

Status varchar(255)
string

Updated, Value for Enable or Price is not numeric, No item/s found or have no data for update oder Duplicated entries found in input parameters.

ItemNrInt
Kann leer sein
varchar(50)
string

Artikelnummer aus der Eingabe; nur bei übersprungenen Einträgen gefüllt.

Result-Set 2 · Anstelle der ersten Ergebnismenge, wenn kein Artikel in Frage kam (404) oder beim Update ein SQL-Fehler auftrat (500)

Einzelne Statuszeile.

Spalte Typ Beschreibung
Status varchar(3)
string

404 oder 500.

ErrorMsg
Kann leer sein
varchar(2000)
string

Fehlertext.

Fehlermeldungen

Status Meldung Ursache
404 No item/s found. Kein Eintrag verweist auf einen existierenden Artikel mit zu ändernden Daten (falscher `ItemKey`/`ItemNrInt`, nur `InternalItemNumber` angegeben oder alle Einträge verworfen). Schlüssel prüfen und mindestens ein änderbares Feld senden.
500 {ERROR_MESSAGE()} Beim Schreiben von `ItemCode` oder `items` trat ein SQL-Fehler auf (z. B. Wert zu lang, Constraint-Verletzung). Vor dem Fehler gemachte Änderungen bleiben bestehen.
200 Value for Enable or Price is not numeric Zeile pro Eintrag: `Enabled` ist keine Ganzzahl oder `PriceVK` nicht numerisch (Dezimalpunkt verwenden). Der Eintrag wird übersprungen.
200 No item/s found or have no data for update Zeile pro Eintrag: Der Artikel existiert nicht, `ItemNrInt` konnte nicht aufgelöst werden oder der Eintrag enthält kein änderbares Feld.
200 Duplicated entries found in input parameters Zeile pro Artikel: Derselbe Artikel kommt in mehreren Einträgen mit unterschiedlichen Daten vor (auch in Kombination mit dem Parameter `ItemKey`). Der Artikel wird nicht aktualisiert; jeden Artikel nur einmal senden.

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:pixiSetItemInfo>
      <!-- <ItemKey>12345</ItemKey> -->
      <!-- <ItemDescription>Robust stainless steel water bottle, 750 ml</ItemDescription> -->
      <!-- <ItemInfoXML><![CDATA[<ItemInfo><Item><ItemKey>12345</ItemKey><ItemNrInt>ART-1001</ItemNrInt><ItemName>Water bottle steel 750 ml</ItemName><ItemDescription>Robust stainless steel water bottle, 750 ml</ItemDescription><InternalItemNumber>INT-1001</InternalItemNumber><Category>Outdoor</Category><Enabled>1</Enabled><PriceVK>19.90</PriceVK><PicLinkSmall>https://shop.example.com/img/1001_s.jpg</PicLinkSmall><PicLinkLarge>https://shop.example.com/img/1001_l.jpg</PicLinkLarge><VATLevel>HIGH</VATLevel><Weight>450</Weight><Heigth>26</Heigth><Width>8</Width><Length>8</Length><CustomsTariffNumber>73239300</CustomsTariffNumber><CustomsCountryOfOrigin>DE</CustomsCountryOfOrigin><CustomsTariffText>Table and kitchen articles of stainless steel</CustomsTariffText><Manufacturer>Example GmbH</Manufacturer></Item><Item><ItemNrInt>ART-1002</ItemNrInt><ItemDescription>Lid for water bottle</ItemDescription><PriceVK>4.50</PriceVK></Item></ItemInfo>]]></ItemInfoXML> -->
    </ns1:pixiSetItemInfo>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Verwendete Tabellen

items · Schreiben ItemCode · Schreiben TontrArten · Schreiben Numbers · Lesen
SQL-Objekt:
dbo.pipiSetItemInfo
Prozedur zuletzt geändert am 2026-10-05
Dokumentation von claude-opus-5-5 am 2026-10-30 geschrieben