pixiSetBoxRangeForPicklist
Setzt oder ändert den Kistenbereich (erste und letzte Kistennummer) einer Pickliste nach Prüfung von Kisten, Überschneidungen und Kistenanzahl.
Weist der Pickliste Picklist den Kistenbereich BoxNrFrom–BoxNrTo zu.
Die Eingaben werden in dieser Reihenfolge geprüft; beim ersten Fehler wird eine Zeile mit Status = Error und Message zurückgegeben:
- Die Pickliste muss in
PLHeaderexistieren. BoxNrFrommuss als Kiste inboxesexistieren.BoxNrTomuss als Kiste inboxesexistieren.BoxNrTodarf nicht kleiner alsBoxNrFromsein.- Ist die Einstellung
Picklist_Creation_Allow_BoxRange_OverLapgleich0, darf keine Kistennummer des angeforderten Bereichs im Kistenbereich einer anderen Pickliste liegen. - Die Anzahl der verschiedenen Aufträge auf der Pickliste (über Picklistenpositionen und Auftragspositionen) darf die Anzahl freier Kisten im Bereich nicht übersteigen. Eine Kiste gilt als frei, wenn
BOrderNrNULLoder0ist.
Sind alle Prüfungen erfolgreich, wird:
- jede bestehende Kistenzuordnung der Pickliste aus
pixi.PicklistBoxgelöscht, - der neue Bereich in
PLHeader.PLHfromBox/PLHeader.PLHtoBoxgeschrieben, - eine Zeile mit Picklistenschlüssel, neuem Bereich und Statustext zurückgegeben. Der Text lautet set, wenn die Pickliste vorher keinen vollständigen Bereich hatte, sonst changed.
Hinweise
- Löschen und Aktualisieren laufen in einer Transaktion. Läuft der Aufruf bereits in einer offenen Transaktion, wird stattdessen ein Savepoint gesetzt und die äußere Transaktion nicht committet.
- Bei einem unerwarteten SQL-Fehler wird die Transaktion (bzw. der Savepoint) zurückgerollt. Es wird eine Zeile mit
Status=Errorund dem SQL-Fehlertext zurückgegeben, und der Fehler wird überlog.InsertErrorprotokolliert (Definition nicht beigefügt). - Die Prüfabfragen verwenden
NOLOCK, gleichzeitige Änderungen werden daher eventuell nicht erkannt. - Die Überschneidungsprüfung läuft nur, wenn der Einstellungswert
0ist. Fehlt die Einstellung (NULL) oder hat sie einen anderen Wert, sind überlappende Bereiche erlaubt. Die Prüfung nutzt die HilfstabelleNumbers; Kistennummern außerhalb ihres Bereichs werden nicht geprüft. - Kisten, die bereits einem Auftrag zugeordnet sind (
BOrderNrgesetzt), gelten als belegt, auch wenn der Auftrag zur selben Pickliste gehört. - Eine frühere Prüfung, die Änderungen verhinderte, sobald Artikel der Pickliste bereits in Kisten gelegt wurden, wurde aus Gründen der Abwärtskompatibilität entfernt. Der Bereich kann daher auch danach geändert werden; bestehende Zuordnungen in
pixi.PicklistBoxwerden in jedem Fall gelöscht. - Der Erfolgs-Statustext enthält die Schreibweise
succesfullygenau so, wie sie vom Code erzeugt wird.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
Picklist
Pflicht
|
int | – |
Schlüssel der Pickliste ( Beispiel: |
BoxNrFrom
Pflicht
|
int | – |
Erste Kistennummer des Bereichs. Muss in Beispiel: |
BoxNrTo
Pflicht
|
int | – |
Letzte Kistennummer des Bereichs. Muss in Beispiel: |
Antwort
Result-Set 1 · Wenn eine Prüfung fehlschlägt oder ein unerwarteter SQL-Fehler auftritt
Fehlerzeile mit dem Grund, warum der Kistenbereich nicht gesetzt wurde.
| Spalte | Typ | Beschreibung |
|---|---|---|
Status
|
varchar(5) string |
Immer |
Message
Kann leer sein |
nvarchar(4000) string |
Fehlertext der Prüfung oder SQL-Fehlermeldung. |
Result-Set 2 · Bei Erfolg
Die Pickliste mit ihrem neuen Kistenbereich und einem Statustext.
| Spalte | Typ | Beschreibung |
|---|---|---|
Picklist
|
int |
Picklistenschlüssel ( |
BoxNrFrom
Kann leer sein |
int |
Neue erste Kistennummer ( |
BoxNrTo
Kann leer sein |
int |
Neue letzte Kistennummer ( |
Status
|
varchar(70) string |
|
Beispielantwort
<SqlRowSet1>
<row>
<Picklist>4711</Picklist>
<BoxNrFrom>1</BoxNrFrom>
<BoxNrTo>20</BoxNrTo>
<Status>BoxRange for picklist(4711) was succesfully changed</Status>
</row>
</SqlRowSet1>
Fehlermeldungen
| Status | Meldung | Ursache |
|---|---|---|
| Error | Picklist ({Picklist}) does not exist. | Es existiert keine Pickliste mit dem angegebenen Schlüssel in `PLHeader` oder `Picklist` ist NULL. Einen vorhandenen Picklistenschlüssel übergeben. |
| Error | Box number ({BoxNrFrom}) provided by BoxNrFrom parameter does not exist. | Die Kiste `BoxNrFrom` existiert nicht in `boxes` oder ist NULL. |
| Error | Box number ({BoxNrTo}) provided by BoxNrTo parameter does not exist. | Die Kiste `BoxNrTo` existiert nicht in `boxes` oder ist NULL. |
| Error | Parameter BoxNrTo ({BoxNrTo}) is smaller than parameter BoxNrFrom ({BoxNrFrom}). | Der Bereich ist vertauscht. `BoxNrTo` >= `BoxNrFrom` übergeben. |
| Error | BoxRange for picklist could not be changed since some boxes in the range are already reserved for another picklist. | Überlappende Bereiche sind nicht erlaubt (Einstellung `Picklist_Creation_Allow_BoxRange_OverLap` = 0) und mindestens eine Kiste im Bereich gehört zum Bereich einer anderen Pickliste. Einen freien Bereich wählen. |
| Error | There are more orders on the picklist than available boxes in the selected box range. | Die Anzahl der verschiedenen Aufträge auf der Pickliste übersteigt die Anzahl der Kisten im Bereich ohne zugeordneten Auftrag. Den Bereich vergrößern oder Kisten freigeben. |
| Error | {ERROR_MESSAGE()} | Beim Löschen der Kistenzuordnungen oder beim Aktualisieren der Pickliste trat ein unerwarteter SQL-Fehler auf. Die Änderungen werden zurückgerollt und der Fehler wird 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:pixiSetBoxRangeForPicklist>
<Picklist>4711</Picklist>
<BoxNrFrom>1</BoxNrFrom>
<BoxNrTo>20</BoxNrTo>
</ns1:pixiSetBoxRangeForPicklist>
</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:pixiSetBoxRangeForPicklist>
<Picklist>4711</Picklist>
<BoxNrFrom>1</BoxNrFrom>
<BoxNrTo>20</BoxNrTo>
</ns1:pixiSetBoxRangeForPicklist>
</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 = [
'Picklist' => '4711',
'BoxNrFrom' => '1',
'BoxNrTo' => '20',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiSetBoxRangeForPicklist', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiSetBoxRangeForPicklist