pixiDispoGetItemBinLog
Liefert verdichtete Lagerbewegungen aus dem Lagerplatz-Artikel-Log für eine externe Dispositionssoftware (LogControl), optional pro Artikel summiert im Inventurmodus.
Exportiert Lagerbewegungen aus InvBinItemLog für ein externes Dispositionswerkzeug (LogControl).
Auswahl
- Nur Log-Einträge mit
IBILKEY>@ItemBinLogKeyStart,Qty<> 0 undUpdateDatezwischen@DateStartund@DateEnd(jeweils inklusive). Ist@DateStartNULL, wird1900-01-01verwendet; ist@DateEndNULL, das aktuelle Datum mit Uhrzeit. - Die Einträge werden nach Änderungszeitpunkt,
ForOrderline, Lager, Artikel, Grund, ändernder Mitarbeiter und Lagerbewegungsart gruppiert. Gruppen mit Mengensumme 0 entfallen. - Es werden die ersten
@RowCountGruppen (Standard 10000) nach ihrem kleinsten Log-Schlüssel übernommen. Der kleinste Log-Schlüssel einer Gruppe wird alsItemBinLogKeyundPItemBinLogKeygeliefert.
Bewegungsart-Code Pro Gruppe wird eine fest codierte Art ermittelt:
0300: Abgang (negative Summe) ohne Bezug zu einer Auftragsposition2000: Abgang mit Bezug zu einer Auftragsposition (ForOrderlinegesetzt und nicht 0)0200: Zugang, gebucht von einem Mitarbeiter, dessen Name mit dem Wert der EinstellungDispoInventoryUserbeginnt1000: alle übrigen Bewegungen
Ist die Einstellung DispoExportAllImportTypes gleich 1, liefert Modus 0 stattdessen den Type des verknüpften StockMovementTypes-Datensatzes.
Lieferantenbestelldaten
Enthält der Grund Picco Del.Nr. gefolgt von einer numerischen Lieferscheinnummer und hat die Bewegung keine Auftragsposition, wird über die Lieferantenlieferung (SDelHeader/SDelDetail) und den Buying-Match die zugehörige Lieferantenbestellposition ermittelt. Bestelldatum, interne Lieferantenbestellnummer und voraussichtliches Lieferdatum werden ausgegeben; ohne Treffer enthalten diese Spalten '0'.
Ausgabemodi
@InventoryMode= 0: eine Zeile pro Gruppe, sortiert nachItemBinLogKey, mit absoluter Menge und Lager.@InventoryMode= 1: Bewegungen ohne Auftragsposition werden pro Artikel summiert (Art0300bei negativer Summe, sonst0200); Bewegungen mit Auftragsposition werden einzeln geliefert (Art2000für Abgang,1000für Zugang). Beide Teile werden perUNIONzusammengeführt und nachTypesortiert. Dieser Modus liefert wederEstimatedDeliveryDatenochLocationID.
Für einen inkrementellen Export wird der höchste ItemBinLogKey des vorherigen Aufrufs als @ItemBinLogKeyStart übergeben.
Hinweise
- Alle Lesezugriffe erfolgen mit
NOLOCK; nicht festgeschriebene Daten können enthalten sein. SET NOCOUNTist bewusst nicht gesetzt; die internenSELECT ... INTO-Anweisungen erzeugen Zeilenanzahl-Meldungen.fpixi_GetSettingliefert'0', wenn eine Einstellung nicht existiert. FehltDispoInventoryUser, ist das Präfix des Inventurbenutzers'0'statt NULL; Zugänge von Mitarbeitern, deren Name mit0beginnt, erhalten dann Art0200.@DateEndwird mit dem vollständigen Zeitstempel verglichen: ein Datum wie20110820bedeutet Mitternacht, spätere Bewegungen dieses Tages fehlen.UpdateDatewird als Text im Formatdd.mm.yyyygeliefert. Im Inventurmodus vergleichtMAX(UpdateDate)diese Texte alphabetisch; das Ergebnis ist daher nicht zwingend das jüngste Datum.- Im Inventurmodus wird über alle Lager eines Artikels summiert,
@RowCountbegrenzt die zugrunde liegenden Gruppen (nicht die Ausgabezeilen) undUNIONentfernt identische Zeilen. Die Spaltenreihenfolge weicht von Modus 0 ab (SupplOrderNrvorSupplOrderDate), und die Artikelspalte heißtItemKeystattITemKey. - Die Lieferscheinnummer wird ab Position 14 von
Reasongelesen; es wird vorausgesetzt, dass der Grund mitPicco Del.Nr.beginnt. - Ein nicht verwendeter
LEFT JOINaufSDelHeaderüber den Teil vonUpdateEmpnach/kann Zeilen vervielfachen und Summen verfälschen, wenn mehrere Lieferungen diese Nummer tragen. - Temporäre Tabellen werden über
util.TempTableDropgelöscht (Definition nicht beigefügt).
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
ItemBinLogKeyStart
Pflicht
|
int | – |
Nur Log-Einträge mit einem Schlüssel größer als dieser Wert werden exportiert. 0 für einen Vollexport oder den zuletzt exportierten Beispiel: |
DateStart
|
datetime dateTime |
NULL |
Frühester Änderungszeitpunkt (inklusive). NULL bedeutet 1900-01-01. Beispiel: |
DateEnd
|
datetime dateTime |
NULL |
Spätester Änderungszeitpunkt (inklusive). NULL bedeutet aktuelles Datum mit Uhrzeit. Beispiel: |
InventoryMode
|
bit boolean |
0 |
Wählt das Ausgabeformat: einzelne Bewegungen oder pro Artikel summierte Bewegungen. Erlaubte Werte
Beispiel: |
RowCount
|
int | 10000 |
Maximale Anzahl gruppierter Bewegungen, die aus dem Log übernommen werden. NULL bedeutet 10000. Beispiel: |
Antwort
Result-Set 1 · Wenn @InventoryMode = 0
Eine Zeile pro gruppierter Lagerbewegung, sortiert nach ItemBinLogKey.
| Spalte | Typ | Beschreibung |
|---|---|---|
PItemBinLogKey
|
int |
Kleinster Log-Schlüssel der Gruppe (identisch mit |
ItemBinLogKey
|
int |
Kleinster Log-Schlüssel der Gruppe; der höchste Wert dient als nächster |
ITemKey
|
int |
Artikelschlüssel. |
UpdateDate
|
varchar(10) string |
Datum der Bewegung als Text |
Qty
|
decimal |
Absolute Menge der Bewegung. |
Type
Kann leer sein |
string |
Bewegungsart-Code |
SupplNR
Kann leer sein |
string |
Lieferantennummer des Artikels. |
ItemNrInt
Kann leer sein |
string |
Interne Artikelnummer. |
ItemNrSuppl
Kann leer sein |
string |
Lieferanten-Artikelnummer, ersatzweise die interne Artikelnummer. |
SupplOrderDate
|
varchar(10) string |
Bestelldatum der zugehörigen Lieferantenbestellung als |
SupplOrderNr
|
string |
Interne Nummer der zugehörigen Lieferantenbestellung oder |
EstimatedDeliveryDate
|
varchar(10) string |
Voraussichtliches Lieferdatum der Lieferantenbestellposition als |
LocationID
Kann leer sein |
string |
Lager-ID der Bewegung. |
Result-Set 2 · Wenn @InventoryMode = 1
Bewegungen ohne Auftragsposition pro Artikel summiert sowie einzelne Bewegungen mit Auftragsposition, sortiert nach Type.
| Spalte | Typ | Beschreibung |
|---|---|---|
PItemBinLogKey
|
int |
Höchster Log-Schlüssel des summierten Artikels (bzw. Log-Schlüssel der Einzelbewegung). |
ItemBinLogKey
|
int |
Identisch mit |
ItemKey
|
int |
Artikelschlüssel. |
UpdateDate
|
varchar(10) string |
Datum als |
Qty
|
decimal |
Absolute (summierte) Menge. |
Type
|
varchar(4) string |
|
SupplNr
Kann leer sein |
string |
Lieferantennummer des Artikels. |
ItemNrInt
Kann leer sein |
string |
Interne Artikelnummer. |
ItemNrSuppl
Kann leer sein |
string |
Lieferanten-Artikelnummer oder interne Artikelnummer. |
SupplOrderNr
|
string |
Interne Lieferantenbestellnummer oder |
SupplOrderDate
|
varchar(10) string |
Lieferantenbestelldatum als |
Beispielantwort
<SqlRowSet1>
<row>
<PItemBinLogKey>154873</PItemBinLogKey>
<ItemBinLogKey>154873</ItemBinLogKey>
<ITemKey>4711</ITemKey>
<UpdateDate>02.08.2011</UpdateDate>
<Qty>5</Qty>
<Type>1000</Type>
<SupplNR>L100</SupplNR>
<ItemNrInt>ART-4711</ItemNrInt>
<ItemNrSuppl>SUP-998</ItemNrSuppl>
<SupplOrderDate>25.07.2011</SupplOrderDate>
<SupplOrderNr>BE-2011-0815</SupplOrderNr>
<EstimatedDeliveryDate>01.08.2011</EstimatedDeliveryDate>
<LocationID>001</LocationID>
</row>
<row>
<PItemBinLogKey>154880</PItemBinLogKey>
<ItemBinLogKey>154880</ItemBinLogKey>
<ITemKey>4711</ITemKey>
<UpdateDate>03.08.2011</UpdateDate>
<Qty>1</Qty>
<Type>2000</Type>
<SupplNR>L100</SupplNR>
<ItemNrInt>ART-4711</ItemNrInt>
<ItemNrSuppl>SUP-998</ItemNrSuppl>
<SupplOrderDate>0</SupplOrderDate>
<SupplOrderNr>0</SupplOrderNr>
<EstimatedDeliveryDate>0</EstimatedDeliveryDate>
<LocationID>001</LocationID>
</row>
</SqlRowSet1>
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:pixiDispoGetItemBinLog>
<ItemBinLogKeyStart>0</ItemBinLogKeyStart>
<!-- <DateStart>2011-08-01T00:00:00</DateStart> -->
<!-- <DateEnd>2011-08-20T23:59:59</DateEnd> -->
<!-- <InventoryMode>0</InventoryMode> -->
<!-- <RowCount>10000</RowCount> -->
</ns1:pixiDispoGetItemBinLog>
</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:pixiDispoGetItemBinLog>
<ItemBinLogKeyStart>0</ItemBinLogKeyStart>
<!-- <DateStart>2011-08-01T00:00:00</DateStart> -->
<!-- <DateEnd>2011-08-20T23:59:59</DateEnd> -->
<!-- <InventoryMode>0</InventoryMode> -->
<!-- <RowCount>10000</RowCount> -->
</ns1:pixiDispoGetItemBinLog>
</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 = [
'ItemBinLogKeyStart' => '0',
// 'DateStart' => '2011-08-01T00:00:00',
// 'DateEnd' => '2011-08-20T23:59:59',
// 'InventoryMode' => '0',
// 'RowCount' => '10000',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiDispoGetItemBinLog', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiDispoGetItemBinLog