Skip to content

Artikel Import Wizard (BAS13) ​

Transaktion: BAS13 Artikel Import Wizard
UI-Pfad: /materialImport
Backend-Domain: MaterialImport, MaterialImportItem

Business-Zweck ​

BAS13 ist der geführte Artikel-Import in reybex. Partner legen eine Import-Vorlage an, konfigurieren Quelle und Verhalten, ordnen CSV-Spalten reybex-Feldern zu und starten den Import mit Fortschrittsanzeige und Protokoll.

Im Gegensatz zu BAS05 (reine Vorlagenverwaltung im gleichen technischen Modul) ist BAS13 die Standard-Transaktion für den Wizard-Flow: zweistufiger Dialog, Spaltenabgleich, Speichern & Import, Live-Progress und Import-Log.

Typische Einsatzfälle:

  • Erst- oder Delta-Import aus PIM/ERP als CSV
  • Wiederkehrender Abruf per FTP/SFTP (mit Job-Intervall)
  • Branchenformate DATANORM, DATPREIS, PRICAT, FASHION
  • Fulfillment-Rückmeldungen (Import-Typ 8)
  • Bestands- oder Preis-Schnellimport, wenn nur wenige Zielspalten gemappt sind

Abgrenzung zu BAS05 und BAS22 ​

TransaktionFokus
BAS13Wizard: Vorlage anlegen, Mapping, Import starten, Fortschritt & Log
BAS05Gleiche Datenbasis (MaterialImport), Fokus auf Vorlagenpflege ohne Wizard-Transaktionscode
BAS22Bildimport zu Artikeln/Varianten (eigene Endpoints)

Technisch teilen BAS05 und BAS13 dieselbe API (/api/materialImport) und Domain-Modelle; die UI unter BAS13 öffnet den Wizard (TemplateDialog).

Oberflächen-Flow ​

Startseite ​

  • Tab CSV-Import → Liste gespeicherter Import-Vorlagen
  • Button Neu → Wizard im Erstellmodus
  • Zeile bearbeiten → Wizard mit bestehender Vorlage
  • Löschen → soft-delete der Vorlage inkl. Mapping-Zeilen

Schritt 1 – Import-Einstellungen ​

Pflichtfelder vor dem Weiter-Klick:

  • Name der Vorlage
  • Material-Template (Vorlage-Artikel als Default-Werte)
  • Lager (Ziel-Lager für Bestandsbuchungen)

Optionale und Verhaltens-Felder siehe Vorlagenfelder (MaterialImport).

Schritt 2 – Datei-Einstellungen & Spalten-Mapping ​

Abhängig vom Import-Typ:

  1. Datei-Parameter (Encoding, Trennzeichen, Anführungszeichen)
  2. Quelle (Datei-Upload, FTP/HTTP, Branchenformat)
  3. Button Spalten aus Datei lesen → automatisches Mapping via matchColumns
  4. Manuelle Korrektur: Quellspalte → Ziel-Feld
  5. Speichern oder Speichern & Import

Nach Speichern & Import erscheint der Fortschrittsdialog (Progress, succeeded, skipped, Abbruch).

Vorlagenfelder (MaterialImport) ​

Stammdaten der Vorlage ​

FeldTypPflichtBeschreibung
nameStringJaBezeichnung der Import-Vorlage
materialTemplateReferenz MaterialJaDefault-Werte für neu angelegte Artikel
warehouseReferenz WarehouseJaLager für Bestandsimport/-buchungen
brandReferenz BrandNeinStandard-Marke für neue Artikel
customerReferenz CustomerNeinKundenbezug (z. B. kundenspezifische Artikelnummern)
validFrom / validUntilDateNeinGültigkeit der Vorlage (optional)

Import-Modus (importMode) ​

WertBedeutung
1Anlegen und Aktualisieren – bestehende Artikel werden gematcht und aktualisiert, fehlende neu angelegt
2Nur Anlegen – vorhandene Treffer werden übersprungen
3Nur Aktualisieren – nur bestehende Artikel werden geändert

Artikel-Matching (materialMatchingType) ​

Steuert, welches Feld zum Finden bestehender Artikel verwendet wird:

WertMatch-Feld
0matCode (Artikelnummer)
1eanCode (EAN der Basiseinheit)
2description (Bezeichnung)
3vendorMatCode (Lieferanten-Artikelnummer)
4gtin
5manufacturerNumber (Herstellernummer)
6variant_sku (Varianten-SKU)

Import-Typ (importType) ​

WertBezeichnungQuelle / Verhalten
0CSV/XMLDatei-Upload, manuelles Mapping
1FTPFTP/SFTP-Abruf (Port 22 = SFTP)
2HTTPHTTP-Abruf mit Job-Intervall
3DATANORMBranchenformat, eigene Parser-Logik
4DATPREISBranchenformat Preise
5PRICATBranchenformat Katalog
6FASHIONFashion-Schnittstelle (Passwort + Artikelnummern)
7Custom XMLIndividuelles XML (reybex-Kontakt nötig)
8FulfillmentFulfillment-Rückmeldungen, eigenes Feld-Set

Datei- und FTP-Parameter ​

FeldTypBeschreibung
characterEncodingStringZeichensatz (z. B. UTF-8, ISO-8859-1)
delimiterCharacterCSV-Trennzeichen (Standard ;)
quoteModeBooleanAnführungszeichen-Modus für CSV-Parser
hasHeaderBooleanErste Zeile enthält Spaltenüberschriften
serverStringFTP/HTTP-Host
portIntegerPort (22 → SFTP)
username / passwordStringZugangsdaten
pathStringRemote-Pfad
filenameStringDateiname auf dem Server
jobIntervalShortAutomatik: 0 manuell, 1–5 alle 2/4/8/12/24 h, 6 periodisch (hours)
hoursStringStundenangabe bei jobInterval = 6
moveProcessedFilesBooleanVerarbeitete Dateien verschieben
readAllFilesBooleanAlle Dateien im Pfad lesen

Verhaltens-Schalter (Booleans) ​

FeldWirkung
matCodeFromExternArtikelnummer aus Importdatei übernehmen (statt Nummernkreis)
isGrossPriceImportierte Preise als Bruttopreise interpretieren
isSetImportStücklisten-/Set-Import (Komponenten aus set:*-Feldern)
createMissingLookupDataFehlende Lookup-Werte (Gruppe, Einheit, …) automatisch anlegen
isExternalStockClearedVor Import externen Bestand im Ziel-Lager auf 0 setzen
isStockExclusiveImportNur Bestand importieren (Spezialfall)
setAllMaterialCategoryLevelsMaterialkategorie-Hierarchie vollständig setzen
isDebugDebug-Modus
isReworkedImportBeta-Flag für überarbeiteten Import
materialFieldsToImportKomma-getrennte Feld-IDs für Marktplatz/Custom-XML (siehe unten)
customXmlTemplateReferenz auf Custom-XML-Vorlage (Typ 7)

Marktplatz-Feldfilter (materialFieldsToImport) ​

Bei Import-Typ Custom XML (7) kann eingeschränkt werden, welche Datenbereiche aktualisiert werden. Mögliche Werte (Enum MaterialImportFields):

IDBereich
1Name
2Attribute
3Lieferanten-Artikelnummer
4SKU
5Preis
6Bestand
7Beschreibung
8Detailbeschreibung
9Bilder
10Varianten
11Varianten-SKU
12Kategorie
13MwSt-Satz
14Hersteller
15SEO
16GTIN
17Varianten-EAN

Spalten-Mapping (MaterialImportItem) ​

Jede Mapping-Zeile verbindet eine Quellspalte der Datei mit einem Ziel-Feld in reybex:

FeldBeschreibung
sourceColumnSpaltenname/-index aus CSV (z. B. Artikelnr oder Column_1)
targetColumnTechnischer Feldname (siehe Importierbare Ziel-Felder)
columnOrderReihenfolge der Spalten
isConstantKonstante Zuordnung (nicht aus Datei)

Beim Speichern sendet die UI pro Spalte sourceColumn{n} und targetColumn{n} sowie columnAmount.

Regeln:

  • Jedes targetColumn darf pro Import nur einmal vorkommen (Ausnahme: materialAttributeValue)
  • Ohne Mapping-Zeilen bricht der CSV-Import ab
  • Auto-Mapping (matchColumns) erkennt Spalten anhand Domain-Feldnamen oder Übersetzungen (Localization)

Spezial-Import-Pfade ​

Der Service erkennt anhand der gemappten Felder alternative Importwege:

Gemappte FelderVerhalten
stockItems, stockItems_batchnum, stockItems_stockPlaceCode, stockItems_licenseKey, stockItems_expiryDate, variant_skuBestands-Schnellimport (importStock)
purPrice, salesPriceGrossPreis-Schnellimport (importPrice)
importType = 8Fulfillment-Import
isSetImport = trueSet-/Stücklisten-Import

Importierbare Ziel-Felder ​

Die Liste wird dynamisch über listMaterialProperties() erzeugt. Partner sehen in der UI die übersetzte Beschreibung, technisch relevant ist der name-Wert.

Artikel-Stammdaten (Material) ​

Alle persistenten Material-Felder außer System-/Relationsfelder:

lastUpdated, dateCreated, createdBy, updatedBy, salesItems, variants, stocks, attachments, tenantId, prices, isDelete, materialStockStatistics, translations, stock, transfers, purItems, materialBoms, rawMaterials, marktplaces, collectibles, materialAttributes, materialClones, salesCustomerPrices, variant, hasPictures, uniqueName, isVoucher, isMaterialEditable

Identifikation & Texte ​

Ziel-FeldTypHinweis
matCodeStringInterne Artikelnummer
printMatCodeStringDruck-Artikelnummer
skuStringSKU (eindeutig inkl. Varianten)
masterSkuStringMaster-SKU (Intercompany)
asinStringAmazon ASIN
gtinStringGTIN
pznStringPharmazentralnummer
vendorMatCodeStringLieferanten-Artikelnummer
manufacturerNumberStringHerstellernummer
nameStringBezeichnung
descriptionStringKurzbeschreibung
detailDescriptionStringLangtext
setupManualStringAufbauanleitung
noteStringNotiz
contentStringInhalt (z. B. Mengenangabe)
searchKey / searchValueStringSuchbegriffe
productLinkStringProdukt-URL
customNumStringFreies Kennzeichen
statMatNumStringStatistik-Artikelnummer

Preise & Bewertung ​

Ziel-FeldTypHinweis
purPriceDoubleEinkaufspreis
aquisitionPriceDoubleBezugspreis
costPriceDoubleEinstandspreis
salesPriceDoubleVK netto
salesPriceGrossDoubleVK brutto
cashRegisterPriceDoubleKassenpreis
averagePriceDoubleDurchschnittspreis
lastPurPriceDoubleLetzter EK
lowestPurPriceDoubleNiedrigster EK
rrpDoubleUVP
rrpIsLockedBooleanUVP gesperrt
accessoryPriceDoubleZubehörpreis
productionCostDoubleHerstellkosten
evaluationTypeShort1 Standard-EK, 2 letzter EK, 3 Ø-Preis
surchage1toAquisition … surcharge2toSalesDoubleAufschläge
priceUnitDoublePreiseinheit (Menge)
balanceDiscountSurchargeReasonStringRabatt-/Zuschlagsgrund

Maße & Gewichte ​

Ziel-FeldTyp
netWeight, grossWeight, volumeDouble
width, height, lengthDouble
hazardousVolume, hazardousWeightDouble
bottleCountInBoxInteger

Referenz-Felder (Lookup per Code/Name): netWeightUnit, grossWeightUnit, warehouseUnit, secondWarehouseUnit, purUnit, salUnit, baseUnit, basePriceUnit, capacityUnit, packUnit

Lager & Disposition ​

Ziel-FeldTypHinweis
safetyStockLevelDoubleSicherheitsbestand
reorderStockLevelDoubleMeldebestand
maxStockLevelDoubleMaximalbestand
fixOrderQuantityDoubleFixbestellmenge
minOrderQuantityDoubleMindestbestellmenge
maxOrderQuantityDoubleMaximalbestellmenge
batchSize / salesBatchSizeDoubleLosgrößen
abcCategoryStringABC-Klasse
deliveryDaysIntegerLieferzeit
automaticOrderDaysIntegerAuto-Bestellung
stockCarrierSkuStringTräger-Artikel-SKU
stockCarrierBookingMultiplierDoubleBuchungsfaktor
parentVariantSkuStringEltern-Variante

Status & Flags (Boolean/Short) ​

isStocked, isSet, isNotDiscountable, isSerialManagement, isSerialNumberRequired, isLotEnabled, isShelfLife, isService, isTemplate, isDiverse, isCollectible, isProvisionable, isPrePayment, isThirdParty, isPackaging, isPacked, isAutomaticOrder, isGroupOrdersByVendor, isAttributeStocked, isAutoPrintIncomingGoodsLabel, isSoftSerialManagement, isStockFreeze, ignoreExternalStocks, isZeroPriceMaterial, isVatKeyReduced, isDemoData, hasVariants, justInTimeProduction

Referenzen (Lookup) ​

Ziel-FeldDomain
matGroupArtikelgruppe
matStatusArtikelstatus
materialTypeMaterialtyp
brandMarke
vatKeyMwSt-Schlüssel
countryOrigin / countryHomeLand
mrpMethodDispositionsverfahren
substituteMaterial / replacementMaterialErsatzartikel
costCenterKostenstelle
accountPurchaseInland … accountSalesOverseasKonten
danger / dangerousCodeGefahrgut
purDepartmentEinkaufsabteilung
prodDocTypeProduktionsbelegart
qualityPlanPrüfplan
packagingVerpackung
vendorLieferant
materialEnergyEfficiencyEnergieeffizienz
alternativeBomHeadStückliste

Technische / Zeichnungs-Felder ​

drawNumber, drawVersion, drawingDate, revisionNumber, salesUnitCode, salesPositionsTypeText, bookingNotes, customsName, warrantyPeriod, weeeNumber, ktbl, planHorizontType

Gültigkeit ​

validFrom, validUntil

Einheiten & EAN ​

Ziel-FeldTypBeschreibung
eanCodeMaterialUnitEAN der Basiseinheit
material_materialUnitsMaterialUnitsEinheitsdefinitionen

Stücklisten (Set-Import) ​

Ziel-FeldTyp
set:matCodeMaterialBom – Komponenten-Artikelnummer
set:descriptionMaterialBom – Bezeichnung
set:amountMaterialBom – Menge
set:unitMaterialBom – Einheit

Merkmale & Attribute ​

Ziel-FeldTyp
materialAttributeValueFreies Merkmal (mehrfach erlaubt)
attribute_{id}Merkmal an Artikel (ID aus Attribut-Stamm)
variant_attribute_{id}Merkmal an Variante

Bilder ​

Ziel-FeldTyp
picture1 … picture10Bild-URL oder Pfad

Varianten (variant_*) ​

Ziel-FeldBeschreibung
variant_nameVariantenname
variant_eanCodeEAN
variant_skuSKU (auch Matching-Typ 6)
variant_asinASIN
variant_orderSortierung
variant_marketplaceVariantIdMarktplatz-Varianten-ID
variant_volumeVolumen
variant_stockCarrierSkuTräger-SKU
variant_stockCarrierBookingMultiplierBuchungsfaktor
variant_netWeight / variant_grossWeightGewichte
variant_netWeightUnitGewichtseinheit

Lagerplätze & Chargen (stockItems_*) ​

Ziel-FeldBeschreibung
stockItemsBestandsmenge
stockItems_batchnumCharge
stockItems_stockPlaceCodeLagerplatz
stockItems_licenseKeyLizenzschlüssel
stockItems_expiryDateMHD
stockItems_materialStockPlaceCodeMaterial-Lagerplatz
stockItems_materialStockPlaceCodeIsDefaultStandardplatz
stockItems_materialStockPlaceCodeIsPickplacePickplatz
stockItems_materialStockPlaceCodeIsDefaultInStandard Eingang
stockItems_materialStockPlaceCodeIsDefaultOutStandard Ausgang
stockItems_materialStockPlaceCodeIsDeleteLagerplatz löschen

Übersetzungen (language_{code}_{feld}) ​

Pro aktivierter Sprache (de, en, …) und Feld aus:

name, description, detailDescription, imagesAltText, keyWord, metaTitle, urlkey, metaDescription

Beispiel: language_en_name = englische Bezeichnung.

Preislisten (materialPrices_*) ​

Ziel-FeldBeschreibung
materialPrices_marktplaceMarktplatz
materialPrices_customerGroupKundengruppe
materialPrices_percentFromSurchargeProzent vom Aufschlag
materialPrices_pricePreis
materialPrices_currencyWährung
materialPrices_unitEinheit
materialPrices_unitQuantityEinheitsmenge
materialPrices_validFrom / validUntilGültigkeit
materialPrices_salesPriceGrossBruttopreis
materialPrices_quantity / quantityToStaffelmenge
customerGroup_materialPricesKundengruppen-Preise

Marktplatz-Felder (marketplace_{feld}_{marktplaceId}) ​

Pro konfiguriertem Marktplatz dynamisch – abhängig vom Provider (Amazon, eBay, …) oder generisches MARKETPLACE_FIELDS-Set. Typische Bereiche: Listing-Titel, Kategorien, Versandprofile, Marktplatz-spezifische Attribute.

Fulfillment (Import-Typ 8) ​

Ziel-FeldBeschreibung
head_receiptRequestNumberWareneingangsnummer
head_processNumberVorgangsnummer (Auftrag)
head_reasonCodeGrundcode
head_customerNumberKundennummer
head_customerNameKundenname
item_quantityMenge
item_articleNumberArtikelnummer
item_reasonCodePositions-Grundcode

Import-Ausführung & Protokoll ​

Ablauf ​

  1. Vorlage speichern (POST /api/materialImport/)
  2. Optional: Fortschritt zurücksetzen (GET /api/materialImportLog/resetProcessStatus/{id})
  3. Import starten (POST /api/materialImport/doMaterialImportFromCsv) → HTTP 202 Accepted
  4. Fortschritt pollen (GET /api/materialImportLog/processStatus/{materialImportId})
  5. Abbruch (GET /api/materialImportLog/abortImport/{id})
  6. Detail-Log (GET /api/materialImportLog/{id}, Zeilen via getImportLogItems)

Protokoll-Felder (ImportLogItem) ​

FeldBedeutung
recordNumberZeilennummer in der Quelldatei
isSuccessfulZeile erfolgreich
skippedZeile übersprungen
messageFehler- oder Hinweistext
codeArtikelkennung aus Import

ProcessStatus ​

FeldBedeutung
progress0–100 %
succeededAnzahl erfolgreicher Datensätze
skippedAnzahl übersprungener Datensätze
abortImportAbbruch angefordert

Partner-Szenarien ​

CSV-Delta mit matCode-Matching ​

  1. Import-Modus Anlegen und Aktualisieren, Matching matCode
  2. Mapping: Artikelnr → matCode, VK → salesPrice, Bestand → stockItems
  3. createMissingLookupData aktiv, wenn neue Gruppen/Einheiten mitgeliefert werden
  4. Nach Import Log auf skipped und message prüfen

Nächtlicher FTP-Import ​

  1. Import-Typ FTP, Zugangsdaten testen (Verbindung senden)
  2. jobInterval = 24 h, filename und path setzen
  3. Job importMaterialsPerJob (Scheduler) oder manueller Start aus UI

Nur Bestand aktualisieren ​

Mapping minimal: variant_sku + stockItems. Service nutzt importStock ohne vollständigen Artikel-Parser.

Externen Bestand ersetzen ​

isExternalStockCleared = true → vor Import wird externer Bestand im Ziel-Lager auf 0 gesetzt, danach neu gebucht.

Voraussetzungen ​

  • Prüftabellen: Einheiten, Artikelgruppen, MwSt
  • Material-Template mit sinnvollen Defaults
  • Schreibberechtigung BAS13
  • Bei FTP: Firewall-Freigabe, Test via checkFtpConnection

Typische Fehlerquellen ​

SymptomUrsache
Doppeltes Ziel-FeldGleiches targetColumn zweimal gemappt
Keine Zeilen verarbeitetKein Mapping oder leere Datei
Demo-LimitMandant im Demo-Modus – max. Artikelanzahl überschritten
Encoding-FehlerUmlaute falsch – characterEncoding anpassen
Match findet nichtsFalscher materialMatchingType oder Import-Modus „nur anlegen“
FTP schlägt fehlPort 21 vs. 22 (SFTP), Pfad oder Dateiname

Weiterlesen ​

Nur für reybex-Partner. Nicht für Endkunden bestimmt.