Postman-Collection
Items Schreiben

pixiTagMatchAddForItems

Ordnet Artikeln per XML ein oder mehrere Artikel-Tags zu und liefert je angeforderter Tag-/Artikel-Zuordnung eine Statuszeile.

Legt Einträge in TagMatch an, die Tags vom Typ 1 (Artikel-Tags) mit Artikeln verknüpfen.

Verarbeitung der Eingabe

  • TagsXML wird mit OPENXML über den Pfad /Tags/Item/TagList/Tag (elementzentriert) gelesen. Jedes Tag-Element ist eine angeforderte Zuordnung.
  • TagId wird aus dem Tag-Element gelesen, ItemId und ItemNrInt aus dem übergeordneten Item-Element. Die Werte 0 und Leerstring gelten als nicht angegeben.
  • Der Artikel wird so ermittelt: Ist ItemId angegeben, wird dieser Wert verwendet. Andernfalls wird ItemNrInt in pixi.ItemCode (Code mit CodeTypeId = 2) gesucht, um den Artikelschlüssel zu bestimmen.

Prüfung, in dieser Reihenfolge

  1. Anforderungen, deren Artikelschlüssel nicht in items existiert oder deren Tag nicht in Tag mit TypeId = 1 existiert, erhalten einen Status:
    • TagId fehlt, oder TagId ist angegeben, aber weder ItemId noch ItemNrInt: Error / Mandatory parameter is missing.
    • ItemNrInt nicht gefunden, ItemId unbekannt oder Tag unbekannt bzw. kein Artikel-Tag: Error / One of the provided values is not valid.
  2. Verbleibende Anforderungen, deren Tag-/Artikel-Paar bereits in TagMatch existiert (für ein Tag vom Typ 1): Warning / Tag is already assigned to that item.
  3. Alle übrigen Anforderungen: Success / Tag was successfully assigned to item. Diese Paare werden in TagMatch eingefügt (Duplikate innerhalb des XML nur einmal).

Ergebnis

Eine Zeile je angeforderter Zuordnung, sortiert nach der Position des Tag-Elements im XML, mit Tag-ID, ermittelter Artikel-ID, übergebener Artikelnummer sowie Status/Message.

Hinweise

  • Die Prozedur läuft in einer eigenen Transaktion oder setzt einen Savepoint, wenn der Aufrufer bereits eine Transaktion geöffnet hat.
  • Zugriffe auf items, Tag, TagMatch und pixi.ItemCode erfolgen mit NOLOCK; parallele Aufrufe können daher dasselbe Paar doppelt einfügen oder nicht festgeschriebene Daten sehen.
  • Bei einem unerwarteten Fehler wird die Transaktion zurückgerollt und der Fehler über log.InsertError (nicht beigefügt) protokolliert. Der CATCH-Block setzt intern eine "Unexpected error"-Meldung, gibt sie aber nicht als Zeile zurück; der Aufrufer erhält in diesem Fall kein Resultset. Ob log.InsertError den Fehler erneut auslöst, ist im Code nicht ersichtlich.
  • ItemId hat Vorrang vor ItemNrInt; sind beide angegeben, wird ItemNrInt nur zurückgegeben.
  • Passt eine ItemNrInt auf mehrere Einträge in pixi.ItemCode, kann eine Anforderung mehrere Ergebniszeilen erzeugen.
  • Tags mit einem TypeId ungleich 1 werden als ungültig abgewiesen.

Parameter

Parameter Typ Standardwert Beschreibung
TagsXML
varchar(max)
xml
NULL

XML-Dokument mit den Artikeln und den zuzuordnenden Tags. Jedes Item enthält ItemId und/oder ItemNrInt sowie eine TagList mit einem oder mehreren Tag-Elementen mit TagId.

Beispiel:

<Tags>
  <Item>
    <ItemId>1234</ItemId>
    <ItemNrInt/>
    <TagList>
      <Tag>
        <TagId>5</TagId>
      </Tag>
      <Tag>
        <TagId>7</TagId>
      </Tag>
    </TagList>
  </Item>
  <Item>
    <ItemId>0</ItemId>
    <ItemNrInt>ART-10001</ItemNrInt>
    <TagList>
      <Tag>
        <TagId>5</TagId>
      </Tag>
    </TagList>
  </Item>
</Tags>

Antwort

Result-Set 1 · Bei Erfolg (kein unerwarteter Fehler); eine Zeile je Tag-Element im XML.

Status jeder angeforderten Tag-Zuordnung, sortiert nach Position im XML.

Spalte Typ Beschreibung
TagId
Kann leer sein
int

Tag-ID aus dem XML (NULL, wenn fehlend oder 0).

ItemId
Kann leer sein
int

Artikelschlüssel, aus dem XML oder über ItemNrInt ermittelt; NULL, wenn nicht ermittelbar.

ItemNrInt
Kann leer sein
varchar(50)
string

Interne Artikelnummer wie im XML übergeben (NULL, wenn leer).

Status varchar(254)
string

Success, Warning oder Error.

Message varchar(2000)
string

Erläuterung zum Status.

Fehlermeldungen

Status Meldung Ursache
Error Mandatory parameter is missing Das `Tag`-Element hat keine `TagId` (oder 0), oder für den Artikel ist weder `ItemId` noch `ItemNrInt` angegeben. Tag und Artikelkennung angeben.
Error One of the provided values is not valid Die `ItemNrInt` wurde in `pixi.ItemCode` nicht gefunden, die `ItemId` existiert nicht, oder das Tag existiert nicht bzw. ist kein Artikel-Tag (`TypeId` 1).
Warning Tag is already assigned to that item Das Tag-/Artikel-Paar existiert bereits in `TagMatch`; für diese Anforderung wird nichts eingefügt.
Error Something went wrong, an undefined error occurred Rückfallstatus für ein undefiniertes Prüfergebnis; unter normalen Umständen nicht zu erwarten.

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:pixiTagMatchAddForItems>
      <!-- <TagsXML><![CDATA[<Tags><Item><ItemId>1234</ItemId><ItemNrInt></ItemNrInt><TagList><Tag><TagId>5</TagId></Tag><Tag><TagId>7</TagId></Tag></TagList></Item><Item><ItemId>0</ItemId><ItemNrInt>ART-10001</ItemNrInt><TagList><Tag><TagId>5</TagId></Tag></TagList></Item></Tags>]]></TagsXML> -->
    </ns1:pixiTagMatchAddForItems>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Verwendete Tabellen

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