Files
Ai/TrafagSalesExporter/docs/FINANCE_SITZUNGSPUNKTE_ANDREAS_2026-06-02.md

252 lines
9.9 KiB
Markdown

# Finance Sitzungspunkte Andreas
Stand: 2026-06-02
Zweck: Kompakte Zusammenfassung der letzten Finance-/Andreas-Punkte und was davon bereits umgesetzt bzw. noch offen ist.
## Kurzfazit
- Das Finance Dashboard bleibt technisch produktiv nutzbar.
- Fuehrende Sicht fuer Soll/Ist bleibt `Finance Summary`.
- `Management Analyse` bleibt Diagnose: Laender, IC/2nd-party, Rohdaten, Abweichungen, Spartenanalyse.
- IC wird nicht automatisch aus dem Standard-Ist entfernt.
- Budgetkurse 2026 sind im Programm und auf dem Server eingespielt.
- Spanien-Sage-Serverexport kann jetzt Full oder Range exportieren.
## Letzte Sitzungspunkte
| Thema | Punkt von Andreas / Finance | Stand |
| --- | --- | --- |
| Intercompany | Pro Land klaeren, ob IC bereits in Quelle/Sollwert herausgerechnet ist. | Teilweise geklaert: FR, IN, US passen ohne IC-Abgrenzung; IT braucht Sonderabgrenzung; DE, UK, CH, AT bleiben offen. |
| Spanien Sollwert | ES hat keine echte Ist-Abweichung; alter Sollwert war falsch. | Fachlich dokumentiert: ES-Ist und korrigierter Sollwert `3'082'320.18 EUR`. |
| Spanien Export | Nicht jedes Mal Volljahr exportieren, wenn bereits Basisexport vorhanden ist. | Sage-Server-Script unterstuetzt jetzt `-ExportMode Full` und `-ExportMode Range`. |
| Wechselkurse | Offizieller Kurstyp und Kursdatum klaeren. | Budgetkurse 2026 wurden als Budgetkurse eingetragen. Kursdatum bleibt in Settings konfigurierbar. |
| Spartenanalyse | >90% nicht zugeordnet ist fachlich unplausibel. | Aktuelle Daten zeigen: Spartenfelder sind fast nur bei CH und teilweise AT gefuellt. Viele Laender haben keine Produktspartenfelder in `CentralSalesRecords`; deshalb ist es ein Mapping-/Referenzproblem, nicht fachlich "nur 10% Umsatz mit Sparte". |
| DE | Welche Kundenlaender / Filter gehoeren offiziell zum deutschen Ist? | Offen. Nicht einfach IC abziehen; Hauptfrage sind Kundenlaender/Filter. |
| UK | Sage-Differenz klaeren. | Offen: Exportvollstaendigkeit, Discounts, Freight/Charges und 2nd-party/IC pruefen. |
| IT | Neue IT-Abgrenzung pruefen. | IT ist Sonderfall: `Trafag Italia` aus externem IT-Ist ausschliessen; doppelte Einzelpositionen mit leerem Supplier country nur einmal zaehlen. |
| CH / AT | `FKDAT` als Perioden-/Buchungsdatum bestaetigen. | Offen. |
| Kosten | Entscheiden, ob Kosten/Marge Teil des Dashboards werden. | Offen; weiterhin nicht in Umsatzfreigabe mischen. |
## IC-Stand je Land
| Land | Aussage | Filter / Abgrenzung |
| --- | --- | --- |
| FR | Ohne IC-Abgrenzung stimmt der Soll/Ist-Vergleich. | IC-Filter ignorieren; B1 Positions-Netto verwenden. |
| IN | Ohne IC-Abgrenzung stimmt der Soll/Ist-Vergleich. | IC-Filter ignorieren; INR-Hauswaehrung verwenden. |
| US | Ohne IC-Abgrenzung stimmt der Soll/Ist-Vergleich. | IC-Filter ignorieren; B1 Positions-Netto verwenden. |
| IT | Ohne Abgrenzung stimmt es nicht sauber. | IT-Sonderabgrenzung anwenden: `Trafag Italia` aus externem Ist ausschliessen; Duplikate mit leerem `Supplier country` nur einmal zaehlen. |
| ES | IC ist aktuell nicht der relevante Punkt. | Sage `ImporteNeto`; Credit Notes/REC negativ; korrigierter Sollwert `3'082'320.18 EUR`. |
| DE | Nicht final beurteilbar. | Kundenlaender/Kundenfilter offen; nicht einfach IC abziehen. |
| UK | Nicht final beurteilbar. | Sage-Export, Discounts/Freight/Charges und 2nd-party/IC pruefen. |
| CH | Nicht beurteilbar. | Kein Sollwert im Seed. |
| AT | Abweichung vorhanden, Ursache unklar. | IC nicht automatisch abziehen; Filter/Datum weiter pruefen. |
## Spanien Sage Server Export
Relevant ist das Paket:
```text
SageSpainFinalExportPackage.zip
```
Wichtige Datei im Paket:
```text
Export-SageSpainSalesCsv.ps1
```
Full Export:
```powershell
.\Export-SageSpainSalesCsv.ps1 -ExportMode Full -Year 2025
```
Range Export:
```powershell
.\Export-SageSpainSalesCsv.ps1 -ExportMode Range -FromDate "2025-05-01" -ToDate "2025-06-01"
```
Range nach Registrierungsdatum:
```powershell
.\Export-SageSpainSalesCsv.ps1 -ExportMode Range -DateFilter LineRegistrationDate -FromDate "2025-05-01" -ToDate "2025-06-01"
```
Hinweis:
- `ToDate` ist exklusiv.
- Wenn der alte Vollbestand bereits vorhanden ist, braucht Spanien fuer Folgeupdates nur noch Range-Dateien fuer den neuen oder korrigierten Zeitraum.
- Das Sage-Script liest nur Daten aus SQL Server und aendert nichts in Sage.
- Unser Importprozess wird danach separat entschieden; der Serverexport ist jetzt nur die Dateierzeugung.
## Spartenanalyse / Produktmapping
### Warum nur rund 10% Abdeckung?
Die Spartenanalyse zaehlt Umsatz nur als sauber zugeordnet, wenn eine Materialnummer gegen die zentrale TR-AG-/SAP-Referenz gematcht wird und dort eine gueltige Produktsparte vorhanden ist.
Aktueller Befund aus der lokalen Datenbank:
| Kennzahl | Wert |
| --- | ---: |
| `CentralSalesRecords` total | `75'089` |
| Zeilen 2025 nach Invoice/Extraction | `54'682` |
| Zeilen mit Produktsparte-Code | `36'847` |
| Zeilen mit gueltigem Assigned-Flag | `27'047` |
| Zeilen mit gueltiger Produktsparte | `27'047` |
| Zeilen `UNASS` | `9'800` |
| Zeilen ohne Materialnummer | `59` |
Laenderbefund:
| Land | Zeilen | Gueltig zugeordnet | `UNASS` | Keine Produktfelder |
| --- | ---: | ---: | ---: | ---: |
| CH | `38'838` | `26'337` | `9'187` | `3'314` |
| AT | `1'454` | `710` | `613` | `131` |
| Italien | `16'850` | `0` | `0` | `16'850` |
| Indien | `5'515` | `0` | `0` | `5'515` |
| Deutschland | `4'548` | `0` | `0` | `4'548` |
| Spanien | `4'341` | `0` | `0` | `4'341` |
| Frankreich | `2'285` | `0` | `0` | `2'285` |
| USA | `1'256` | `0` | `0` | `1'256` |
| England | `2` | `0` | `0` | `2` |
Interpretation:
- Die niedrige Abdeckung ist nicht als fachliche Umsatzverteilung zu lesen.
- Sie zeigt, dass das zentrale Produktmapping aktuell nur fuer CH und teilweise AT in den Daten ankommt.
- Bei IT, IN, DE, ES, FR, US und UK sind die Produktspartenfelder aktuell leer.
- Wahrscheinliche Ursachen: lokale Materialnummern passen nicht direkt zu TR-AG `MATNR`, fehlende Referenzdaten in `ProductDivisionRefSet`, Join trifft nicht oder Produktfelder werden bei diesen Laendern nicht befuellt.
### Prozessfluss vom Holen bis Anwenden
```text
1. SAP/TR-AG stellt zentrale Produktreferenz bereit
EntitySet: ProductDivisionRefSet
Felder: Matnr, Paph1, Paph1Text, Wwpfa, WwpfaText, Wwpsp, WwpspText, IsAssigned
2. Webprogramm holt beim SAP-Standort zwei Quellen
Z = FinanzdataSchweizOeSet
P = ProductDivisionRefSet
3. Join im Web-Exporter
Z.Matnr = P.Matnr
JoinType = Left
4. Mapping ins interne SalesRecord-Modell
Z.Matnr -> Material
Z.Prodh -> ProductGroup
P.Paph1 -> ProductHierarchyCode
P.Paph1Text -> ProductHierarchyText
P.Wwpfa -> ProductFamilyCode
P.WwpfaText -> ProductFamilyText
P.Wwpsp -> ProductDivisionCode
P.WwpspText -> ProductDivisionText
P.IsAssigned -> ProductMappingAssigned
5. Speicherung in CentralSalesRecords
Die Produktfelder werden mit jeder Umsatzzeile gespeichert.
6. Management Analyse > Spartenanalyse
Statuslogik:
- Material leer -> Material fehlt
- kein Treffer in zentraler Referenz -> Nicht im TR-AG-Stamm
- Treffer, aber IsAssigned nicht wahr oder Division = UNASS -> Nicht zugeordnet
- Treffer, IsAssigned wahr und Division nicht UNASS -> Zugeordnet
7. Sparten-Finanzanalyse
Nur Status Zugeordnet geht in Umsatz nach Produktsparte / Produktfamilie / PAPH1.
```
### SAP-Objektnamen und Code-Stand
| Objekt | Name |
| --- | --- |
| SAP Gateway Service | `ZPOWERBI_EINKAUF_SRV` |
| Sales EntitySet | `FinanzdataSchweizOeSet` |
| Sales Gateway-Methode | `FINANZDATASCHWEI_GET_ENTITYSET` |
| Produktsparten EntitySet | `ProductDivisionRefSet` |
| Produktsparten Gateway-Methode | `PRODUCTDIVISIONR_GET_ENTITYSET` |
| Provider-Klasse | `ZCL_PRODSPARTE_PROVIDER` |
| Mapping-Aufbau-Report | `Z_PRODSPARTE_MAP_BUILD` |
| Test-/ALV-Report | `Z_PRODSPARTE_REPORT` |
| Mapping-Tabelle | `ZPRODSPARTE_MAP` |
| DDIC-Struktur | `ZSTR_PRODSPARTE_OUT` |
Vorhandener Code im Repo:
- `docs/abap/ZCL_PRODSPARTE_PROVIDER.abap`
- `docs/abap/Z_PRODSPARTE_MAP_BUILD.abap`
- `docs/abap/Z_PRODSPARTE_REPORT.abap`
Nicht als vollstaendiger Code im Repo vorhanden:
- `FINANZDATASCHWEI_GET_ENTITYSET`
- `PRODUCTDIVISIONR_GET_ENTITYSET`
Diese beiden Gateway-Methoden sind in den MDs beschrieben, aber der komplette DPC_EXT-Methodencode muss aus SAP geholt oder neu formuliert werden.
## Budgetkurse
### Budget 2026
Budget 2026 wurde eingetragen und deployed:
| Von | Nach | Rate |
| --- | --- | ---: |
| CHF | CHF | 1 |
| USD | CHF | 0.80 |
| EUR | CHF | 0.94 |
| GBP | CHF | 1.09 |
| CNY | CHF | 0.11764706 |
| INR | CHF | 0.00909091 |
| CZK | CHF | 0.03846154 |
| PLN | CHF | 0.22 |
| JPY | CHF | 0.00571429 |
Technische Ablage:
```text
CurrencyExchangeRates
Notes = Budget 2026
ValidFrom = 2026-01-01
ValidTo = 2026-12-31
```
### Budget 2025
Andreas hat neue Budget-2025-Werte geliefert. Noch nicht final eingetragen, weil CNY noch fehlt:
| Waehrung | Rate nach CHF |
| --- | ---: |
| EUR | 0.937034700 |
| GBP | 1.093822350 |
| INR | 0.009532034 |
| PLN | 0.221032130 |
| RUB | 0.009958327 |
| CZK | 0.037963103 |
| JPY | 0.005553195 |
| USD | 0.830651790 |
| CNY | offen |
## Deploy-Stand
Deploy wurde am 2026-06-02 ausgefuehrt:
- Publish nach `\\trch-webapp-bidashboard.trafagch.local\BiDashboard$\`
- `BiDashboard.dll` Zeitstempel nach Deploy: `2026-06-02 15:15:20`
- Server-DB enthaelt `9` Budget-2026-Kurse.
- Testlauf vor Deploy: `82/82` Tests gruen.
## Naechste klare To-dos
1. CNY Budget 2025 von Andreas nachliefern lassen.
2. Budget 2025 Seedwerte danach gesammelt aktualisieren und deployen.
3. DE: offizielle Kundenlaender/Kundenfilter bestaetigen.
4. UK: Sage-Exportvollstaendigkeit und Discounts/Freight/Charges pruefen.
5. CH/AT: `FKDAT` als fachliches Periodendatum bestaetigen.
6. Spartenmapping weiter pruefen: Gateway-Methodencode `PRODUCTDIVISIONR_GET_ENTITYSET` aus SAP holen oder sauber neu formulieren; danach pruefen, warum Produktfelder nur bei CH/AT gefuellt sind.
7. Entscheiden, ob CHF-Sicht nur Reporting bleibt oder offizieller Vergleichswert wird.