importzugferd/docs/DATANORM_FORMAT.md

6.8 KiB

Datanorm Format Dokumentation

Allgemeines

Datanorm ist ein Dateiformat für den Datenaustausch von Artikelstammdaten zwischen Produktlieferant, Fachgroßhandel und Handwerksbetrieb. Es wird vornehmlich im Baunebengewerbe (Sanitär, Heizung, Elektro, Maler) verwendet.

Wichtig: Datanorm ist kein offener Standard. Die offizielle Spezifikation ist kostenpflichtig über den Krammer Verlag erhältlich.

Datanorm Versionen

  • Datanorm 3.0: Feste Feldbreiten (128 Zeichen pro Satz), ASCII
  • Datanorm 4.0: Semikolon-getrennte Felder, erweiterte Funktionen
  • Datanorm 5.0: XML-basiert

Dateistruktur

Eine Datanorm-Lieferung besteht aus mehreren Dateien:

Datei Inhalt
DATANORM.001 - .999 Artikelstammdaten (A/B-Sätze)
DATPREIS.001 - .999 Preisdaten (P-Sätze)
DATANORM.WRG Warengruppen
DATANORM.RAB Rabattgruppen

Satzarten

Kennzeichen Typ Beschreibung
A Artikelsatz Stammdaten des Artikels
B Ergänzungssatz Zusatzinfos, EAN, VPE, Langtext
P Preissatz Preisinformationen
T Textsatz Mehrzeilige Texte
G Grafiksatz Bildverknüpfungen

A-Satz (Artikelstammdaten) - Datanorm 4.0 Semikolon-Format

Sonepar-Format

A;N;ArtNr;TextKz;Kurztext1;Kurztext2;PreisKz;PE;ME;Preis;RabGrp;WG;LangTextKey
Index Feld Beschreibung Beispiel
0 Satzart Immer "A" A
1 Aktionscode N=Neu, A=Ändern, L=Löschen N
2 Artikelnummer Eindeutige Nummer 0480145
3 Textkennzeichen Text-Typ 00
4 Kurztext 1 Erste Bezeichnung (max 40 Z.) OBO BETT. Verschraubung
5 Kurztext 2 Zweite Bezeichnung (max 40 Z.) V-TEC PG21 LGR
6 Preiskennzeichen 1=Brutto, 2=Netto 1
7 PE (Preiseinheit) CODE (siehe unten) 2
8 ME (Mengeneinheit) Einheit Stck
9 Preis In Cent (wenn vorhanden) 59085
10 Rabattgruppe Rabatt-Code A12N
11 Warengruppe Waren-Code 303
12 Langtextschlüssel Verknüpfung zu Texten

Preiseinheit-Codes (PE) - WICHTIG!

Die Preiseinheit ist ein CODE, nicht die tatsächliche Menge!

Code Bedeutung Divisor
0 (oder leer) Preis pro 1 Stück 1
1 Preis pro 10 Stück 10
2 Preis pro 100 Stück 100
3 Preis pro 1000 Stück 1000

Beispiel:

A;N;0480145;00;OBO BETT. Verschraubung;V-TEC PG21 LGR;1;2;Stck;...
                                                       ↑
                                                       PE-Code 2 = pro 100 Stück

Wenn DATPREIS den Preis 9997 (= 99,97 €) liefert:

  • Stückpreis = 99,97 € / 100 = 0,9997 €

Aktionscode - Artikelstatus

Der Aktionscode gibt an, ob ein Artikel neu ist, geändert wurde oder nicht mehr verfügbar ist:

Code Bedeutung Verhalten
N Neu Artikel wird angelegt
A Ändern Artikel wird aktualisiert
L Löschen Artikel wird als inaktiv markiert (active=0)

Wichtig: Bei L-Artikeln wird das Feld active auf 0 gesetzt. Diese Artikel erscheinen nicht mehr in Suchergebnissen und können beim Massenupdate als "nicht mehr verfügbar" gekennzeichnet werden.

B-Satz (Ergänzungssatz) - Sonepar-Format

B;N;ArtNr;Matchcode; ; ;;;;EAN; ; ;0;VPE;;;
Index Feld Beschreibung
0 Satzart B
1 Aktion N/L/A
2 Artikelnummer Bezug zum A-Satz
3 Matchcode Suchbegriff
8 EAN 13-stellige EAN/GTIN
13 VPE Verpackungseinheit (tatsächliche Menge)

Hinweis: Die VPE im B-Satz ist die Verpackungseinheit (z.B. 100 Stück pro Packung), während der PE-Code im A-Satz die Preisbasis definiert. Diese können unterschiedlich sein!

P-Satz (Preissatz) - DATPREIS-Datei

Format: Mehrere Artikel pro Zeile

P;A;ArtNr1;PreisKz1;Preis1;x;Zuschlag1;x;x;x;ArtNr2;PreisKz2;Preis2;x;Zuschlag2;...
Index Feld Beschreibung
0 P Satzkennung
1 A Aktionskennung
2 ArtNr Artikelnummer
3 PreisKz Preiskennzeichen (2=Nettopreis)
4 Preis Materialpreis in Cent (für A-Satz PE-Einheit!)
5 x Unbekannt (immer 1 bei Sonepar)
6 Zuschlag Metallzuschlag in Cent (Kupfer/Aluminium)
7-10 x Weitere Felder (Flags)

Wichtig: Der Preis in DATPREIS ist bereits für die PE-Einheit aus dem A-Satz angegeben! Keine Normalisierung nötig.

Metallzuschlag (für Kabel)

Bei Kabeln und metallhaltigen Produkten gibt es oft zwei Preiskomponenten:

  • Materialpreis (Preis): Grundpreis des Produkts
  • Metallzuschlag (Zuschlag): Zusatzkosten für Kupfer/Aluminium

Gesamtpreis = Materialpreis + Metallzuschlag

Beispiel Kabel NYM-J 5x1,5:

P;A;0110350;2;2920;2;7629;0;1;0;...
  • Materialpreis: 2920 Cent = 29,20 €/100m
  • Metallzuschlag: 7629 Cent = 76,29 €/100m
  • Gesamtpreis: 105,49 €/100m = 1,05 €/m

Beispiel ohne Metallzuschlag:

P;A;0480145;2;9997;1;0;1;0;1;0;0480146;2;20689;1;0;1;0;1;0;
  • Artikel 0480145: Preis = 9997 Cent = 99,97 €

Preisberechnung

Formel für Stückpreis

Stückpreis = Preis / PE_Divisor

Wobei PE_Divisor aus dem PE-Code berechnet wird:

  • Code 0 → Divisor 1
  • Code 1 → Divisor 10
  • Code 2 → Divisor 100
  • Code 3 → Divisor 1000

Beispiel

Artikel: 0480145
DATPREIS: 9997 (Cent) = 99,97 €
A-Satz PE-Code: 2 → Divisor 100

Stückpreis = 99,97 € / 100 = 0,9997 €

Datenbankfelder

Feld Typ Beschreibung
price DOUBLE Materialpreis aus DATPREIS (in Euro)
price_unit INT Konvertierter PE-Divisor (1, 10, 100, 1000)
price_unit_code TINYINT Originaler PE-Code (0, 1, 2, 3)
price_type TINYINT Preiskennzeichen (1=Brutto, 2=Netto)
metal_surcharge DOUBLE Metallzuschlag (Kupfer/Aluminium) in Euro
vpe INT VPE aus B-Satz (Verpackungseinheit)
action_code CHAR(1) Aktionscode (N=Neu, A=Ändern, L=Löschen)
active TINYINT Artikelstatus (1=aktiv, 0=gelöscht bei L)

Preisberechnung mit Metallzuschlag

Gesamtpreis = price + metal_surcharge
Stückpreis = Gesamtpreis / price_unit

Beispiel:

price = 29.20 €
metal_surcharge = 76.29 €
price_unit = 100

Gesamtpreis = 29.20 + 76.29 = 105.49 €
Stückpreis = 105.49 / 100 = 1.0549 €

Quellen

Hinweis

Diese Dokumentation basiert auf der Analyse von Sonepar-Datanorm-Dateien und öffentlich verfügbaren Informationen. Für die vollständige offizielle Spezifikation wird das Datanorm-Taschenbuch vom Krammer Verlag empfohlen.