pixiImportFindXML
Liefert den neuesten XML-Importlog-Eintrag zu einem Auftrag (über ORDER_ID) oder einem Artikel (über SUPPLIER_AID).
Durchsucht das XML-Importlog C_XMLLog nach dem neuesten Eintrag, der eine angegebene ID enthält, und liefert ihn mit Request-, Response- und Statusinformationen.
- Ist
Idleer oderNULL, wird eine Statuszeile mitStatusCode400 zurückgegeben; weitere Schritte erfolgen nicht. Typewird ohne Beachtung der Groß-/Kleinschreibung ausgewertet:order: Ermittelt den OperationstypOrderImportausC_OperationTypesund sucht Logeinträge, derenXmlResponseXmlein ElementORDER_ID(in beliebiger Tiefe) mit dem Wert vonIdenthält.item: Ermittelt den OperationstypItemImportund sucht nach einem ElementSUPPLIER_AID(in beliebiger Tiefe) mit dem Wert vonId.- Jeder andere Wert liefert eine Statuszeile mit
StatusCode400.
- Zusätzliche Filter für beide Typen:
- Ist
Channelangegeben, werden nur Einträge mit dieserChannelRefberücksichtigt; beiNULLwerden alle Kanäle durchsucht. - Einträge mit
Status=XNIwerden ausgeschlossen.
- Ist
- Das Ergebnis wird absteigend nach
XMLLogKeysortiert, und nur die erste Zeile (der neueste passende Logeintrag) wird geliefert. Gibt es keinen Treffer, ist die Ergebnismenge leer.
Hinweise
- Alle Lesezugriffe verwenden
NOLOCK; nicht festgeschriebene Logeinträge können daher geliefert werden. - Der ID-Vergleich ist ein exakter Zeichenkettenvergleich mit dem Elementwert in
XmlResponseXmlper XPath-exist()mit Nachfahrensuche (//). Dies wird für jede in Frage kommende Logzeile ausgewertet und kann bei großen Logtabellen langsam sein; die Angabe vonChannelschränkt die Suche ein. - Die Prüfung von
Iderfolgt vor der Prüfung vonType; bei leererIdwird daher immer die ID-Fehlermeldung geliefert, auch wennTypeungültig ist. - Existiert der Operationstyp
OrderImportbzw.ItemImportnicht inC_OperationTypes, werden keine Zeilen geliefert. - Die Bedeutung des Statuswerts
XNIist im Code nicht definiert. Responseist die XML-SpalteXmlResponseXml, konvertiert nachvarchar(max).
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
Type
Pflicht
|
varchar(10) string |
– |
Art des Imports, in dem gesucht wird (ohne Beachtung der Groß-/Kleinschreibung). Erlaubte Werte
Beispiel: |
Id
Pflicht
|
varchar(50) string |
– |
Gesuchter Wert: die Auftrags-ID ( Beispiel: |
Channel
|
int | NULL |
Optionaler Kanalschlüssel ( Beispiel: |
Antwort
Result-Set 1 · Wenn Id leer oder NULL ist oder Type weder order noch item ist
Statuszeile mit der Beschreibung des Validierungsfehlers.
| Spalte | Typ | Beschreibung |
|---|---|---|
StatusCode
|
int |
Immer 400. |
StatusMessage
|
varchar(55) string |
Fehlertext. |
Result-Set 2 · Wenn Id gesetzt ist und Type order oder item ist; null oder eine Zeile
Der neueste passende XML-Importlog-Eintrag.
| Spalte | Typ | Beschreibung |
|---|---|---|
XMLLogKey
|
int |
Schlüssel des Logeintrags in |
Request
Kann leer sein |
string |
Ursprünglicher Import-Request ( |
Response
Kann leer sein |
varchar(max) string |
Inhalt von |
Status
Kann leer sein |
string |
Verarbeitungsstatus des Logeintrags (nie |
CreateDate
Kann leer sein |
dateTime |
Erstellungszeitpunkt des Logeintrags. |
UpdateDate
Kann leer sein |
dateTime |
Zeitpunkt der letzten Änderung des Logeintrags. |
Error
Kann leer sein |
string |
Zum Import gespeicherte Fehlerinformation. |
XmlResponseCastErrorNr
Kann leer sein |
int |
Fehlernummer bei der Konvertierung der Response in XML, falls vorhanden. |
XmlResponseCastErrorMessage
Kann leer sein |
string |
Fehlermeldung bei der Konvertierung der Response in XML, falls vorhanden. |
Beispielantwort
<SqlRowSet1>
<row>
<XMLLogKey>58231</XMLLogKey>
<Request><ORDER>...</ORDER></Request>
<Response><ORDER><ORDER_HEADER><ORDER_INFO><ORDER_ID>100004711</ORDER_ID></ORDER_INFO></ORDER_HEADER></ORDER></Response>
<Status>OK</Status>
<CreateDate>2024-03-12T10:15:22</CreateDate>
<UpdateDate>2024-03-12T10:15:25</UpdateDate>
<Error/>
<XmlResponseCastErrorNr>0</XmlResponseCastErrorNr>
<XmlResponseCastErrorMessage/>
</row>
</SqlRowSet1>
Fehlermeldungen
| Status | Meldung | Ursache |
|---|---|---|
| 400 | You have to specify an ID to search for | `Id` ist leer oder `NULL`. Eine nicht leere Auftrags-ID bzw. Lieferantenartikelnummer übergeben. |
| 400 | You have to specify XML type (either "order" or "item") | `Type` ist weder `order` noch `item`. Einen dieser beiden Werte übergeben. |
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:pixiImportFindXML>
<Type>order</Type>
<Id>100004711</Id>
<!-- <Channel>3</Channel> -->
</ns1:pixiImportFindXML>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
curl -X POST 'https://apigateway.descartes.com/tms/pixi/' \
--user 'USERNAME:PASSWORD' \
--header 'Content-Type: text/xml; charset=utf-8' \
--data-binary @- <<'XML'
<?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:pixiImportFindXML>
<Type>order</Type>
<Id>100004711</Id>
<!-- <Channel>3</Channel> -->
</ns1:pixiImportFindXML>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
XML
<?php
$soapClient = new SoapClient(null, [
'login' => 'USERNAME',
'password' => 'PASSWORD',
'location' => 'https://apigateway.descartes.com/tms/pixi/',
'uri' => 'https://apigateway.descartes.com/tms/pixi/',
]);
$arguments = [
'Type' => 'order',
'Id' => '100004711',
// 'Channel' => '3',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiImportFindXML', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiImportFindXML