EAN 13

Hallo zusammen! Ich möchte EAN13-Barcodes aus NAVISION drucken. Das Erzeugen der Nummer (Ziffernfolge) mit ILN, Prüfziffer etc. ist kein Problem. Jetzt stelle ich aber fest, dass es beim Druck mit dem Fontwechsel auf EAN13 nicht getan ist, sondern dass auch hier eine besondere Zeichenfolge zu generieren ist! Die Frage ist: WIE ??? Oder was muss ich sonst noch beachten? Danke schon im Voraus! Gruß, Jörg Joerg A. Stryk Apollo-Optik, IT/ERP

Hallo nochmal! Ich hab’s geschafft !!! Es hat zwar einige Mühe gekostet, aber ich habe inzwischen 'rausgefunden, wie man den EAN-String zusammenbastelt! Funzt einwandfrei! Gruß, Jörg Joerg A. Stryk Apollo-Optik, IT/ERP

Jörg: Schön, dass du es jetzt weisst. Willst du nicht auch ein paar pfennige aus der schatzkiste deines wissens unters volk streuen? :o) Gruss Uwe

Wie bitte? Ich soll das Ergebnis endloser Stunden des mühevollen Studierens und Probierens einfach so unter’s Volk streuen??? Na gut … Das ganze basiert auf einen EAN13-Fontsatz von Chaos Microsystems (Shareware, 10,00 USD), die Beschreibung dazu enthält eigentlich auch die ganze Info. Das Ziel ist es, aus der EAN-Nummer einen String zu machen, der dann über den EAN13-Font als korrekter Barcode wiedergegeben wird. Bei meiner Lösung wird die Funktion EAN13_BarcodeErzeugen dazu verwendet:

Function EAN13_BarcodeErzeugen(EAN : Text[30]) BarcodeEAN : Text[30]

// Prüfung und Bereinigung
IF (EAN = '') THEN
  EXIT;
// Ziffernfolge (ohne Blank)
EAN := DELCHR(EAN, '=', ' ');
IF (STRLEN(EAN) <> 13) THEN
  ERROR('EAN %1 ist ungültig.', EAN);

// Sektionen finden
CLEAR(BarcodeEAN);
Flag1 := COPYSTR(EAN, 1, 1);  // Ländercode Ziffer 1
Flag2 := COPYSTR(EAN, 2, 1);  // Ländercode Ziffer 2
LinkerTeil := COPYSTR(EAN, 3, 5);
RechterTeil := COPYSTR(EAN, 8, 5);
Check := COPYSTR(EAN, 13, 1);  // Prüfziffer

// Muster festlegen
// Ländercode Ziffer 1 legt die Sequenz von A und B Zeichen fest
CASE Flag1 OF
  '0' : Muster := 'AAAAA';
  '1' : Muster := 'ABABB';
  '2' : Muster := 'ABBAB';
  '3' : Muster := 'ABBBA';
  '4' : Muster := 'BAABB';
  '5' : Muster := 'BBAAB';
  '6' : Muster := 'BBBAA';
  '7' : Muster := 'BABAB';
  '8' : Muster := 'BABBA';
  '9' : Muster := 'BBABA';
END;

// Flag 1. Zeichen umsetzen
// Zeichensatz Flag 1. Zeichen, vgl. Fontbeschreibung
CASE Flag1 OF
  '0' : Char := 33;
  '1' : Char := 34;
  '2' : Char := 35;
  '3' : Char := 36;
  '4' : Char := 37;
  '5' : Char := 38;
  '6' : Char := 39;
  '7' : Char := 40;
  '8' : Char := 41;
  '9' : Char := 42;
END;
Flag1[1] := Char;

// Flag 2. Zeichen umsetzen
// Zeichensatz Flag 2. Zeichen, vgl. Fontbeschreibung
CASE Flag2 OF
  '0' : Char := 96;
  '1' : Char := 97;
  '2' : Char := 98;
  '3' : Char := 99;
  '4' : Char := 100;
  '5' : Char := 101;
  '6' : Char := 102;
  '7' : Char := 103;
  '8' : Char := 104;
  '9' : Char := 105;
END;
Flag2[1] := Char;

// Linken Teil umsetzen
FOR i := 1 TO STRLEN(LinkerTeil) DO
  IF Muster[i] = 'A' THEN BEGIN

    // Zeichensatz Links A, vgl. Fontbeschreibung
    CASE LinkerTeil[i] OF
      '0' : Char := 48;
      '1' : Char := 49;
      '2' : Char := 50;
      '3' : Char := 51;
      '4' : Char := 52;
      '5' : Char := 53;
      '6' : Char := 54;
      '7' : Char := 55;
      '8' : Char := 56;
      '9' : Char := 57;
    END;
    LinkerTeil[i] := Char;
  END ELSE BEGIN

    // Zeichensatz Links B, vgl. Fontbeschreibung
    CASE LinkerTeil[i] OF
      '0' : Char := 64;
      '1' : Char := 65;
      '2' : Char := 66;
      '3' : Char := 67;
      '4' : Char := 68;
      '5' : Char := 69;
      '6' : Char := 70;
      '7' : Char := 71;
      '8' : Char := 72;
      '9' : Char := 73;
    END;
    LinkerTeil[i] := Char;
  END;

// Rechten Teil umsetzen
FOR i := 1 TO STRLEN(RechterTeil) DO BEGIN
  // Zeichensatz Rechts C, vgl. Fontbeschreibung
  CASE RechterTeil[i] OF
    '0' : Char := 80;
    '1' : Char := 81;
    '2' : Char := 82;
    '3' : Char := 83;
    '4' : Char := 84;
    '5' : Char := 85;
    '6' : Char := 86;
    '7' : Char := 87;
    '8' : Char := 88;
    '9' : Char := 89;
  END;
  RechterTeil[i] := Char;
END;

// Prüfziffer umsetzen
// Zeichensatz Prüfziffer, vgl. Fontbeschreibung
CASE Check OF
  '0' : Char := 112;
  '1' : Char := 113;
  '2' : Char := 114;
  '3' : Char := 115;
  '4' : Char := 116;
  '5' : Char := 117;
  '6' : Char := 118;
  '7' : Char := 119;
  '8' : Char := 120;
  '9' : Char := 121;
END;
Check[1] := Char;

BarcodeEAN := STRSUBSTNO('%1%2%3|%4%5', Flag1, Flag2, LinkerTeil, RechterTeil, Check);

EXIT(BarcodeEAN);

Beispiel: EAN : 50 00174 71589 7 50 : Ländercode (Muster BBAAB) 00174: Linker Teil 71589: Rechter Teil 7 : Prüfziffer Zeichenfolge: &`@@17D|WQUXYw Der hieraus resultierende Strichcode ist korrekt angedruckt (mit Scannern getested, von CCG überprüft, wenn auch die angedruckte EAN-Nummer etwas seltsam aussieht (liegt am Font). Schöne Grüße, Jörg Joerg A. Stryk Apollo-Optik, IT/ERP Edited by - stryk on 2001 Dec 06 13:44:58

Originally posted by stryk: > Ich soll das Ergebnis endloser Stunden des > mühevollen Studierens und Probierens > einfach so unter’s Volk streuen??? nur als Anmerkung: Möchte man einen Barcode auf ein Blatt Papier drucken, dann sollte man einen Barcodefont nehmen. Das ist billig, “einfach” zu implementieren und alles andere wäre zu viel Aufwand. Möchte man diesen Barcode aber auf ein Etikett und dann an die Ware bringen (“von CCG überprüft”), dann empfiehlt sich in den meissten Fällen ein Barcodedrucker. Die Vorteile sind darin begründet, das ein Barcodedrucker ein Etikett nach dem anderen druckt und keine Blattware wie Laserdrucker benötigt. Ab einer bestimmten Etikettenzahl sind Barcodedrucker generell günstiger (Tonerkosten etc.). Wer mal 10.000 Etiketten durch einen Laserdrucker geschickt hat, weiss, daß es danach einiges auszutauschen gibt, weil der Kleber der Etiketten unter der Hitze austritt und den Drucker nach und nach verschmutzt. Außerdem muß man bedenken, daß in kritischen Anwendungen der Barcodedrucker Vorteile hat, da der Barcode sauberer gedruckt wird. Ein Barcodedrucker hat den Font schon integriert. Die Anbindung an Navision ist daher etwas anders. Warum das Ganze als Antwort auf ein gelöstes EAN13 Problem? Ich denke, daß einige User in Zukunft auch vor dem “Barcode an Navision” Anbindungsproblem stehen und diesen Thread finden werden. Wer Infos braucht, kann sich unter http://www.helferlein.de/ einen ganz guten Einstieg verschaffen. Herausheben möchte ich hier die Firma Etimark (http://www.etimark.de). Etimark vertreibt Barcodedrucker, Etiketten und Software wie viele andere Firmen - setzt jedoch intern Navision ein. Das Thema Barcode an Navision ist hier daher ein Thema, das nicht nur in der Theorie existiert. Es gibt dort auch einige Softwarelösungen zum Thema Barcode / Navision Anbindung. Sprengt aber hier den Rahmen. Gruß Mario Paul