importzugferd/docs/DATANORM_FORMAT.md
data 47fbc561f6 Version 3.3
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-12 15:38:09 +01:00

6.8 KiB
Executable file

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.