7.3 KiB
TrafagSalesExporter Handoff
Stand: 2026-04-15
Zielbild
Die App wurde von einem reinen BI1/HANA-Exporter zu einer kombinierten Plattform erweitert:
BI1undSAGEbleiben auf direktem HANA-ZugriffSAPläuft separat über SAP Gateway / OData- SAP-Quellen können gelesen, gejoint und auf das zentrale
SalesRecord-Schema gemappt werden - Standort-Exporte werden lokal als Excel geschrieben
- Zusätzlich werden Datensätze in eine zentrale SQLite-Tabelle geschrieben
- Ein konsolidierter Export liest aus dieser zentralen Tabelle
Wichtigste umgesetzte Funktionen
1. Zentrale Credentials pro Quellsystem
Es gibt zentrale Zugangsdaten in ExportSettings für:
SAPBI1SAGE
Zusätzlich gibt es pro Standort optionale Overrides:
UsernameOverridePasswordOverride
Auflösungsreihenfolge:
- Standort-Override
- zentrale Credentials des Quellsystems
- bei HANA zusätzlich Fallback auf alten
HanaServer.Username/Password
2. SAP von BI1/HANA getrennt
SAP nutzt nicht mehr den HANA-Pfad, sondern eine eigene Gateway/OData-Strecke.
Pro SAP-Standort gibt es:
SapServiceUrlSapEntitySetSapEntitySetsCacheSapEntitySetsRefreshedAtUtc
Refresh der SAP-Quellen erfolgt nur auf Knopfdruck.
Beispiel Service URL:
http://travt762.sap.trafag.com:8000/sap/opu/odata/sap/ZPOWERBI_EINKAUF_SRV/
Wichtig:
- Service URL immer nur bis zum Service
- Entity Set separat auswählen
3. SAP-Quellen, Joins und Feldmappings
Für SAP gibt es mehrere neue Modelle:
SapSourceDefinitionSapJoinDefinitionSapFieldMapping
Unterstützt wird:
- mehrere SAP-Quellen pro Standort
- Alias pro Quelle
- Primärquelle
- Join-Definitionen
- Mapping von
Alias.Feldnameauf zentrales Schema
UI-Erweiterungen:
Quellen refreshenFelder aus Quellen laden- Join-Key-Auswahl aus Metadaten
Auto-Matchfür gleiche Feldnamen zwischen Primärquelle und anderen Quellen
4. Zentrale Datenspeicherung
Neue Tabelle:
CentralSalesRecords
Verwendung:
- pro Standort werden alte zentrale Sätze dieses Standorts ersetzt
- konsolidierte Excel liest aus
CentralSalesRecords
Wichtig:
- zentrale Excel wird nicht appendet
- sie wird aus dem aktuellen Zustand der zentralen Tabelle neu erstellt
5. Exportpfade
Neue Konfigurationsmöglichkeiten:
Zentral in Settings:
LocalSiteExportFolderLocalConsolidatedExportFolder
Pro Standort:
LocalExportFolderOverride
Fallback wenn leer:
./output
relativ zum App-Verzeichnis.
6. SharePoint
SharePoint-Upload ist optional.
Wenn keine vollständige SharePoint-Konfiguration vorhanden ist:
- Excel wird trotzdem lokal erzeugt
- kein Upload nach SharePoint
Benötigte SharePoint-Werte:
Tenant IDClient IDClient Secret
Das sind Entra App Registration Werte, nicht normale Benutzer-Credentials.
7. Config Import/Export
Es gibt JSON-Import/Export der Konfiguration mit Checkbox:
- mit Secrets
- ohne Secrets
Enthalten sind u. a.:
- SharePoint Config
- ExportSettings
- HanaServers
- Sites
- Transformation Rules
- SAP-Quellen
- SAP-Joins
- SAP-Mappings
8. Logging und Live-Status
Neue technische Logs über AppEventLogs.
Sichtbar:
- auf
/logs - im Dashboard als
Live-Status
Geloggt werden u. a.:
- HANA-Query Start
- SAP Refresh
- SAP Reads
- Transformationen
- Excel-Erstellung
- zentrale Tabellenspeicherung
- Export erfolgreich / fehlgeschlagen
9. Excel öffnen
Im Dashboard gibt es neben Export den Button:
Excel öffnen
Dieser nutzt ExportLogs.FilePath.
Voraussetzungen:
- letzter Export erfolgreich
FilePathgespeichert- Datei existiert lokal
10. Management Cockpit
Es gibt einen neuen Menüpunkt:
Management Cockpit
Funktion:
- Auswahl vorhandener Excel-Dateien
- Analyse einer exportierten Standort-Datei
- Kennzahlen für Geschäftsinhaber / Management
Aktuell enthalten:
- Umsatz
- geschätzte Kosten
- geschätzte Marge
- Rechnungsanzahl
- Kundenanzahl
- Top Kunden
- Top Produktgruppen
- Top Sales Owner
- Datenqualitätshinweise
- automatische Management-Aussagen
Wichtige Dateien
Modelle
Models/Site.csModels/ExportSettings.csModels/ExportLog.csModels/CentralSalesRecord.csModels/SapSourceDefinition.csModels/SapJoinDefinition.csModels/SapFieldMapping.csModels/ManagementCockpitModels.csModels/ConfigTransferPackage.cs
Services
Services/SiteExportService.csServices/ConsolidatedExportService.csServices/CentralSalesRecordService.csServices/SapGatewayService.csServices/SapCompositionService.csServices/ConfigTransferService.csServices/AppEventLogService.csServices/ManagementCockpitService.csServices/DatabaseInitializationService.csServices/ExportOrchestrationService.cs
UI
Components/Pages/Standorte.razorComponents/Pages/Settings.razorComponents/Pages/Dashboard.razorComponents/Pages/Logs.razorComponents/Pages/ManagementCockpit.razorComponents/Layout/NavMenu.razor
Datenbank / Migrationen
Viele Änderungen laufen über DatabaseInitializationService.
Wichtige neue oder erweiterte Tabellen/Felder:
SitesUsernameOverridePasswordOverrideSapServiceUrlSapEntitySetSapEntitySetsCacheSapEntitySetsRefreshedAtUtcLocalExportFolderOverride
ExportSettings- zentrale SAP/BI1/SAGE Credentials
LocalSiteExportFolderLocalConsolidatedExportFolderDebugLoggingEnabled
ExportLogsFilePath
- neue Tabellen:
AppEventLogsCentralSalesRecords- SAP-Konfigtabellen
Aktuell offenes Hauptproblem
Zentrale Speicherung hängt noch
Die große Problemstelle war die zentrale SQLite-Speicherung.
Bereits probiert:
- EF
RemoveRange + SaveChanges - EF Batch-Speichern
- Dashboard-Polling reduziert
- SQLite WAL + busy timeout
- direkte SQLite-Inserts in einer großen Transaktion
- jetzt: kleine abgeschlossene Transaktionen pro Batch
Aktueller Stand:
- zentrale Excel ist jetzt sehr schnell
- das Hängen wurde stark eingegrenzt
- zuletzt wurde der Schreibpfad so umgebaut, dass:
- Löschen in eigener kurzer Transaktion läuft
- Inserts batchweise mit Commit pro Batch laufen
Datei:
Services/CentralSalesRecordService.cs
Die nächste Session sollte genau dort weiter debuggen, falls es noch hängt.
Wichtig:
- Das Problem ist nicht SAP
- nicht SharePoint
- nicht mehr der große EF-Insert
- sondern sehr wahrscheinlich SQLite-Commit/Lock-Verhalten rund um die zentrale Tabelle
Letzte bekannte Beobachtung
Der User meldete zuletzt:
- vorher Hänger bei
Zentrale Tabelle: Abschluss speichern... - danach wurde auf Commit pro Batch umgestellt
- neue Session soll testen, ob es jetzt bei
Batch x/y speichern...Batch x/y abschliessen...- oder gar nicht mehr hängt
Build-Status
Letzter Build:
dotnet build TrafagSalesExporter.sln
Ergebnis:
- erfolgreich
- bekannte Warnungen bleiben:
- SAP HANA Architekturwarnung
MSB3270 - MudBlazor Analyzer
Dense
- SAP HANA Architekturwarnung
Hinweise für nächste Session
- Zuerst aktuellen Export testen
- Genaue letzte Live-Status-Meldung notieren
Services/CentralSalesRecordService.csprüfen- Falls nötig:
- SQLite pragmas weiter anpassen
- zentrale Tabelle temporär ganz abschaltbar machen
- oder Schreiben über separate DB / Queue entkoppeln