Besondere Beispiele für die Eingabe von IDs können mit einem gespeicherten
Verfahren durchgeführt werden, das den Eintrag (in der Regel gescannter Wert) in Daten
umwandelt, die das Programm benötigt, um normal zu funktionieren. Auf diese Weise können Sie
die folgenden Fälle behandeln:
- EAN/UCC 128-Code
- Codes mit einer Produktvariation
- Atypische Codes oder
- Andere Kombinationen.
Wenn ein gespeichertes Verfahren auf dem Server existiert, wird das
Programm es definitiv ausführen. Wenn das Verfahren nicht auf dem Server existiert,
wird das Programm auf übliche Weise funktionieren.
Die Parameter für das Verfahren sind festgelegt. Achten Sie darauf, dass das Verfahren
das Datensatzset mit mindestens folgenden Feldern zurückgibt:
- ISOK: es kann T oder F sein und meldet, ob die Operation erfolgreich war;
- ERRMSG: ist eine Benutzerwarnung, wenn ein Fehler auftritt;
- IDENT: Artikel-ID;
- KOLICINA: Menge;
- SERIALNO: Seriennummer.
Das Programm kann neben diesen Feldern auch andere Felder zurückgeben, die in Pantheon
sind, außer Benutzerfeldern, die in der Tabelle
PROMETPOZ sind.
 |
Wenn Sie Artikel über das gespeicherte Verfahren eingeben, können Sie mit der ENTER-
Taste nicht zum nächsten Feld wechseln.
Die Funktionen der Cursor- und TAB-Tasten ändern sich nicht.
|
 |
Wenn das Verfahren einen Artikel zurückgibt, überprüft das Programm, ob dieser Artikel korrekt ist (ob er im Artikelregister eingegeben ist).
Das Gleiche gilt für die Überprüfung von Seriennummern.
|
 |
set nocount on
ist ein obligatorischer Befehl, da das Verfahren immer nur ein
Datensatzset zurückgeben muss.
|
 |
Der Bereich der Zeichen im ERRMSG-Feld wird immer angezeigt, wenn ISOK =
'T' oder 'F'.
Auf diese Weise können Sie diese Möglichkeit nutzen, um eine bestimmte Warnung anzuzeigen.
|
 |
Wenn Sie diese Art der Suche (Eingabe) von IDs verwenden, können Sie nicht:
und müssen es manuell in das Verfahren integrieren!
|
Beispiel eines gescannten Codes mit einem Identifikator, ID, Menge und
Seriennummer
Angenommen, es gibt einen Artikel mit folgendem ID-Format (d.h. Lebensmittelartikel):
01EEEEEEEEEEEEEEKKKKKDDDDDDD
wobei
- 01 - ein Identifikator für einen zusammengesetzten Artikel ist;
- EEEEEEEEEEEEEE - ein 14-stelliger EAN-Code des
Artikels ist;
- KKKKK - eine 5-stellige Menge in Gramm (ARTIKEL
ist in KG standardisiert);
- DDDDDDD - ein Verfallsdatum des Artikels ist.
Wenn ein Artikel am Anfang keinen 01-Identifikator hat, wird der Artikel
als normaler Artikel betrachtet und in das Pantheon übertragen.
Das gespeicherte Verfahren, das für diesen Fall eingerichtet werden muss, ist wie folgt:
create procedure [dbo].[dl_HE_MSIdentSetText]
@cKljuc Char(13), -- der Schlüssel für das Dokument, auf dem Sie die Eingabe des Codes ausgeführt haben
@nPoz SmallInt, -- Zeile, in der die Eingabe des Codes aktiviert wurde (nicht erforderlich!!)
@cSubjekt Char(30), -- Kunde oder Lieferant des Dokuments
@cText VarChar(512) -- eingegebener Wert
as
set nocount on
if Left(@cText,2) = '01' -- ist dies ein zusammengesetzter Code?
select 'T' as acISOK, '' as acERRMSG, SubString(@cText,3,14) as acIDENT,
(cast(SubString(@cText,18,5) as money) / 1000) as anQty,
SubString(@cText,24,10) as acSERIALNO
else -- nein, dann den gescannten Artikel zurückgeben
select 'T' as acISOK, '' as acERRMSG, @cText as acIDENT,0 as anQty,'' as acSERIALNO
Beispiel eines gescannten Codes mit einer Produktvariation
Angenommen, es gibt einen Artikel mit folgendem ID-Format (d.h. Schuhe):
EEEEEEEEEEEEEEBBBBVVV
wobei:
- EEEEEEEEEEEEEE - ein 14-stelliger EAN-Code des Artikels ist;
- BBBB - ein 4-stelliger Farbcode ist;
- VVV - ein 3-stelliger Größen-Code ist.
Artikel sind durcheinander, sodass Sie jeden der Artikel scannen können. Der Artikel wird Ihnen mitteilen, ob
er eine Produktvariation enthält oder nicht.
Das gespeicherte Verfahren, das für diesen Fall eingerichtet werden muss, ist wie folgt:
create procedure [dbo].[dl_HE_MSIdentSetText]
@cKljuc Char(11), -- der Schlüssel für das Dokument, auf dem Sie die Eingabe des Codes ausgeführt haben
@nPoz SmallInt, -- Zeile, in der die Eingabe des Codes aktiviert wurde (nicht erforderlich!!)
@cSubjekt Char(30), -- Kunde oder Lieferant des Dokuments
@cText VarChar(512) -- eingegebener Wert
as
set nocount on
declare
@cIdent char(16),
@cTipSerijske char(1)
set @cIdent = Left(@cText,14)
set @cTipSerijske = null
select @cTipSerijske = SERIALNO
from IDENT
where IDENT = @cIdent
if @cTipSerijske is null
select 'F' as ISOK, 'Ni identa' as ERRMSG, '' as IDENT,0 as KOLICINA,'' as SERIALNO
else
if @cTipSerijske = 'P' then
select 'T' as ISOK, '' as ERRMSG, @cIdent as IDENT,0 as KOLICINA,Right(@cText,7) as SERIALNO
else
select 'T' as ISOK, '' as ERRMSG, @cText as IDENT,0 as KOLICINA,'' as SERIALNO