pixiCreatePicklist
Erstellt eine Pickliste auf Basis eines Picklistenprofils, entweder sofort oder über einen Eintrag in der Ausführungs-Warteschlange.
Startet die Erstellung einer Pickliste mit den Einstellungen eines gespeicherten Picklistenprofils. Einzelne Profilwerte lassen sich über Parameter übersteuern.
- Premium-API-Prüfung. Die Einstellung
Premium_APImuss aktiv sein. Andernfalls wird eineERROR-Zeile geliefert. - Profil. Ist
ProfileIdangegeben (0 gilt als nicht angegeben), muss das Profil inPL_Profileexistieren. Ohne Angabe wird das zuletzt geänderte Standardprofil (PLP_Default = 1) verwendet, das kein 1SS-Profil ist (PLP_1SS = 0). - Lager. Eine leere
LocationIdwird zu001. - Auftragseinschränkung (optional).
- Nur
OrderNr: Der Auftrag muss inOrderHeaderexistieren. - Nur
OrderNrExternal: Ein Auftrag mit dieser externen Nummer muss existieren. - Beide: Ein Auftrag mit beiden Werten muss existieren. Danach wird nur
OrderNrverwendet undOrderNrExternalgeleert. OrderNr = 0und eine leereOrderNrExternalgelten als nicht angegeben.
- Nur
- Lagerplatzbereich (optional).
BinFromundBinTomüssen Lagerplatznamen (InvBin.BinName) im gewählten Lager sein. IhreBinSortNumersetzt den Lagerplatz-Sortierbereich des Profils. - Benutzer und Kommentar.
UserNamewird getrimmt; ist er leer, wirdAPIverwendet.Commentwird getrimmt und als Picklistenkommentar übernommen. - Profilparameter. Alle Parameter des Profils werden geladen. Danach werden Lager, Profil-ID, Auftragseinschränkung, Lagerplatzbereich, Benutzername und Kommentar mit den Werten aus den Schritten 2–6 überschrieben.
- Exklusive Sperre. Der Aufruf fordert die Application-Lock
ExclusivePickListCreationohne Wartezeit an. Hält eine andere Session die Sperre, wird eineERROR-Zeile geliefert. - Ausführung. Aus der aktuellen Zeit wird eine Ausführungsnummer im Format
yyMMddHHmmssgebildet.ExecuteAsynchronous = 1(Standard): Eine AnweisungEXEC dbo.Pixi_CreatePickList …mit allen Parametern wird inExecQueriesgeschrieben. Es wird eineINFO-Zeile geliefert.ExecuteAsynchronous = 0:Pixi_CreatePickListwird sofort ausgeführt. Die Prozedur liest ihre Parameter aus der temporären Parametertabelle.
Anschließend wird die Sperre freigegeben.
Hinweise
Synchroner Modus (ExecuteAsynchronous = 0)
- Es wird keine
INFO-Zeile geliefert. - Der Aufrufer erhält die Rückgabe von
Pixi_CreatePickList. Diese Prozedur ist nicht beigefügt, daher sind ihre Ergebnismengen und weitere Nebeneffekte hier nicht dokumentiert. - Die Sperre ist an die Session gebunden. Bricht
Pixi_CreatePickListmit einem Fehler ab, kann die Freigabe entfallen. Die Sperre bleibt dann bis zum Ende der Datenbank-Session bestehen.
Asynchroner Modus (Standard)
- Die Sperre wird nur während des Schreibens in die Warteschlange gehalten. Sie verhindert nicht, dass mehrere Picklistenerstellungen aus der Warteschlange gleichzeitig laufen.
- Die Anweisung für die Warteschlange wird als Text zusammengesetzt. Hochkommas in Werten wie
CommentoderUserNamewerden nicht maskiert und können die Anweisung ungültig machen. - Die Profilwerte
OlderThanHour,OlderThanMinute,NewerThanHour,NewerThanMinuteundDisablePicklistSplitOnBatchManagementwerden in der Anweisung nicht übergeben.
Stolperfallen
- Die Lagerprüfung schlägt nie fehl. Existiert
LocationIdnicht, bleibt der übergebene Wert erhalten und die Lager-Fehlermeldung wird nie geliefert. Commentüberschreibt immer den Profilkommentar. Ohne Angabe wird der Kommentar aus dem Profil geleert.- Ein Leerstring für
BinFromoderBinTogilt nicht als fehlend. Er wird als Lagerplatzname gesucht und führt zu einem Fehler. - Die Fehlermeldung zur Profil-ID lautet "could be found", gemeint ist jedoch, dass das Profil nicht gefunden wurde.
Sonstiges
- Alle Abfragen verwenden
NOLOCK.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
ProfileId
|
smallint int |
NULL |
Schlüssel des Picklistenprofils ( Beispiel: |
LocationId
|
varchar(3) string |
NULL |
Lager für die Pickliste. Bei NULL oder Leerstring wird Beispiel: |
OrderNr
|
int | NULL |
Beschränkt die Pickliste auf diese Auftragsnummer. Bei NULL oder 0 gibt es keine Einschränkung. Der Auftrag muss existieren. Beispiel: |
BinFrom
|
varchar(50) string |
NULL |
Name des ersten Lagerplatzes des Bereichs im gewählten Lager. Seine Beispiel: |
BinTo
|
varchar(50) string |
NULL |
Name des letzten Lagerplatzes des Bereichs im gewählten Lager. Seine Beispiel: |
UserName
|
varchar(50) string |
NULL |
Benutzer, der für die Picklistenerstellung vermerkt wird. Bei NULL oder Leerstring wird Beispiel: |
Comment
|
varchar(8000) string |
NULL |
Kommentar der Pickliste (getrimmt). Ersetzt immer den Profilkommentar, auch wenn er leer ist. Beispiel: |
ExecuteAsynchronous
|
bit boolean |
1 |
Steuert, ob die Pickliste sofort erstellt oder in die Warteschlange gestellt wird. Erlaubte Werte
Beispiel: |
OrderNrExternal
|
varchar(50) string |
NULL |
Beschränkt die Pickliste auf den Auftrag mit dieser externen Auftragsnummer. Leer bedeutet keine Einschränkung. Ist auch Beispiel: |
Antwort
Result-Set 1 · Bei einem Validierungsfehler, wenn die Sperre nicht verfügbar ist, oder nach dem Einreihen (asynchroner Modus).
Statuszeile des Aufrufs.
| Spalte | Typ | Beschreibung |
|---|---|---|
Status
|
varchar(5) string |
|
Message
Kann leer sein |
varchar(max) string |
Meldungstext. |
Result-Set 2 · Synchroner Modus (ExecuteAsynchronous = 0), nachdem alle Prüfungen bestanden wurden.
Ergebnismengen von Pixi_CreatePickList. Diese Prozedur ist nicht beigefügt, daher ist ihre Struktur unbekannt.
Beispielantwort
<SqlRowSet1>
<row>
<Status>INFO</Status>
<Message>Picklist creation added to the queue.</Message>
</row>
</SqlRowSet1>
Fehlermeldungen
| Status | Meldung | Ursache |
|---|---|---|
| ERROR | Setting "Premium_API" is not enabled. | Die Einstellung `Premium_API` ist nicht aktiv. Sie muss in Pixi aktiviert werden, bevor der Aufruf genutzt werden kann. |
| Error | Profile ID "{ProfileId}" could be found. Please provide a profile ID that you want tu use for creating the picklist. | Die angegebene `ProfileId` existiert nicht in `PL_Profile`. Einen vorhandenen Profilschlüssel übergeben. |
| Error | No default Profile ID could be found. Please provide a profile ID that you want tu use for creating the picklist. | Es wurde keine `ProfileId` übergeben und es existiert kein Standardprofil, das kein 1SS-Profil ist. Eine `ProfileId` explizit übergeben. |
| Error | Location "{LocationId}" could be found. Please provide a different Location ID that you want tu use for creating the picklist. | Gedacht für ein unbekanntes Lager. Aufgrund der Art der Prüfung wird diese Meldung praktisch nie geliefert. |
| Error | Order "{OrderNr}" could not be found. Please provide a different OrderNr that you want tu use for creating the picklist. | Nur `OrderNr` wurde übergeben und es existiert kein Auftrag mit dieser Nummer. |
| Error | OrderNrExternal "{OrderNrExternal}" could not be found. Please provide a different OrderNrExternal that you want tu use for creating the picklist. | Nur `OrderNrExternal` wurde übergeben und es existiert kein Auftrag mit dieser externen Nummer. |
| Error | OrderNr "{OrderNr}" and OrderNrExternal "{OrderNrExternal}" could not be found. Please provide a different parameters that you want tu use for creating the picklist. | Beide Auftragsnummern wurden übergeben, aber kein Auftrag passt zu beiden Werten. |
| Error | Bin place "{BinFrom}" for paramter @BinFrom could not be found. Please provide a different BinName that you want tu use for creating the picklist. | Im gewählten Lager existiert kein Lagerplatz mit dem Namen `BinFrom`. Auch ein Leerstring löst diesen Fehler aus. |
| Error | Bin place "{BinTo}" for paramter @BinTo could not be found. Please provide a different BinName that you want tu use for creating the picklist. | Im gewählten Lager existiert kein Lagerplatz mit dem Namen `BinTo`. Auch ein Leerstring löst diesen Fehler aus. |
| ERROR | Another instance of picklist creation already running. Try again later. | Eine andere Session hält die Application-Lock `ExclusivePickListCreation`. Später erneut versuchen. |
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:pixiCreatePicklist>
<!-- <ProfileId>3</ProfileId> -->
<!-- <LocationId>001</LocationId> -->
<!-- <OrderNr>1045873</OrderNr> -->
<!-- <BinFrom>A-01-01</BinFrom> -->
<!-- <BinTo>A-10-05</BinTo> -->
<!-- <UserName>shopsync</UserName> -->
<!-- <Comment>Express wave 14:00</Comment> -->
<!-- <ExecuteAsynchronous>1</ExecuteAsynchronous> -->
<!-- <OrderNrExternal>SHOP-100234</OrderNrExternal> -->
</ns1:pixiCreatePicklist>
</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:pixiCreatePicklist>
<!-- <ProfileId>3</ProfileId> -->
<!-- <LocationId>001</LocationId> -->
<!-- <OrderNr>1045873</OrderNr> -->
<!-- <BinFrom>A-01-01</BinFrom> -->
<!-- <BinTo>A-10-05</BinTo> -->
<!-- <UserName>shopsync</UserName> -->
<!-- <Comment>Express wave 14:00</Comment> -->
<!-- <ExecuteAsynchronous>1</ExecuteAsynchronous> -->
<!-- <OrderNrExternal>SHOP-100234</OrderNrExternal> -->
</ns1:pixiCreatePicklist>
</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 = [
// 'ProfileId' => '3',
// 'LocationId' => '001',
// 'OrderNr' => '1045873',
// 'BinFrom' => 'A-01-01',
// 'BinTo' => 'A-10-05',
// 'UserName' => 'shopsync',
// 'Comment' => 'Express wave 14:00',
// 'ExecuteAsynchronous' => '1',
// 'OrderNrExternal' => 'SHOP-100234',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiCreatePicklist', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiCreatePicklist