Add product division gateway mapping
This commit is contained in:
@@ -150,3 +150,128 @@ Noch zu pruefen:
|
||||
## Abgrenzung
|
||||
|
||||
Dieser Task ist keine Finance-Soll/Ist-Regel. Die Klassifikation kann spaeter Finance- und Management-Auswertungen ergaenzen, sollte aber fachlich getrennt von Net-Sales-Abgrenzungen bleiben.
|
||||
|
||||
## Nachtrag 2026-05-29 Umsetzung SAP Gateway Und Web
|
||||
|
||||
SAP/DDIC:
|
||||
|
||||
- Struktur `ZSTR_PRODSPARTE_OUT` wurde fuer den Gateway-Entity-Type verwendet.
|
||||
- `PAPH1`, `WWPFA` und `WWPSP` duerfen in SE11 nicht vorausgesetzt als globale Datenelemente typisiert werden.
|
||||
- Pragmatische Typisierung ist moeglich:
|
||||
- `PAPH1`: `CHAR 5`
|
||||
- `WWPFA`: Laenge wie `CE11000-WWPFA`
|
||||
- `WWPSP`: Laenge wie `CE11000-WWPSP`
|
||||
- Textfelder: z.B. `CHAR 50`
|
||||
- Aktivierungsfehler bei `ZSTR_PRODSPARTE_OUT` waren durch nicht vorhandene/aktive Datenelemente fuer `PAPH1`, `WWPFA`, `WWPSP` verursacht.
|
||||
|
||||
SAP/ABAP:
|
||||
|
||||
- `ZCL_PRODSPARTE_PROVIDER` wurde als globale Klasse in SE24/quelltextbasiert angelegt.
|
||||
- `Z_PRODSPARTE_REPORT` und `Z_PRODSPARTE_MAP_BUILD` wurden als Reports angelegt.
|
||||
- `Z_PRODSPARTE_MAP_BUILD` hat `ZPRODSPARTE_MAP` befuellt.
|
||||
- Beispielhafte Mapping-Luecken aus dem ALV-Test:
|
||||
- `0509 Multistat` nicht zugeordnet
|
||||
- `0540 Multistat` nicht zugeordnet
|
||||
- `0519 Multistat` zugeordnet zu `0007` / `0001`
|
||||
- Diese Luecken werden spaeter fachlich geprueft; technisch funktioniert der Provider.
|
||||
|
||||
SAP Gateway:
|
||||
|
||||
- Bestehender Service wird weiterverwendet:
|
||||
- `ZPOWERBI_EINKAUF_SRV`
|
||||
- Service Root: `http://travt762.sap.trafag.com:8000/sap/opu/odata/sap/ZPOWERBI_EINKAUF_SRV/`
|
||||
- Es wurde ein zusaetzlicher Entity Type aus `ZSTR_PRODSPARTE_OUT` erstellt:
|
||||
- Entity Type: `ProductDivisionRef`
|
||||
- Entity Set: `ProductDivisionRefSet`
|
||||
- Der bestehende Sales-EntitySet bleibt separat:
|
||||
- `FinanzdataSchweizOeSet` bzw. generierte Methode `FINANZDATASCHWEI_GET_ENTITYSET`
|
||||
- Diese Methode muss weiter aus `ZSCHWEIZ` lesen und darf nicht durch Produktsparten-Code ersetzt werden.
|
||||
- Produktsparten-Code gehoert in die separat generierte/redefinierte Methode:
|
||||
- `PRODUCTDIVISIONR_GET_ENTITYSET`
|
||||
- Test-URL:
|
||||
- `http://travt762.sap.trafag.com:8000/sap/opu/odata/sap/ZPOWERBI_EINKAUF_SRV/ProductDivisionRefSet`
|
||||
- OData-Feldnamen aus dem Gateway sind CamelCase:
|
||||
- `Matnr`
|
||||
- `Maktx`
|
||||
- `Paph1`
|
||||
- `Paph1Text`
|
||||
- `Wwpfa`
|
||||
- `WwpfaText`
|
||||
- `Wwpsp`
|
||||
- `WwpspText`
|
||||
- `IsAssigned`
|
||||
- Erfolgreicher Testdatensatz aus Gateway:
|
||||
- `Matnr = VCP1000`
|
||||
- `Maktx = VC TRANSMITTER`
|
||||
- `Paph1 = 9999`
|
||||
- `Paph1Text = Zubehoer`
|
||||
- `Wwpsp = UNASS`
|
||||
- `WwpspText = Nicht zugeordnet`
|
||||
- `IsAssigned = false`
|
||||
|
||||
Wichtige Gateway-Korrektur:
|
||||
|
||||
- Fehler `/IWFND/MED/170` trat auf, weil Service und EntitySet ohne Slash zusammengesetzt wurden.
|
||||
- Falsch:
|
||||
- `.../ZPOWERBI_EINKAUF_SRVProductDivisionRSet`
|
||||
- Richtig:
|
||||
- `.../ZPOWERBI_EINKAUF_SRV/ProductDivisionRefSet`
|
||||
|
||||
Webprogramm / Datenmodell:
|
||||
|
||||
- `SalesRecord` und `CentralSalesRecord` wurden um folgende Felder erweitert:
|
||||
- `ProductHierarchyCode`
|
||||
- `ProductHierarchyText`
|
||||
- `ProductFamilyCode`
|
||||
- `ProductFamilyText`
|
||||
- `ProductDivisionCode`
|
||||
- `ProductDivisionText`
|
||||
- `ProductMappingAssigned`
|
||||
- SQLite-Schema wurde erweitert:
|
||||
- Neue Installationen erhalten die Felder in `CentralSalesRecords`.
|
||||
- Bestehende Datenbanken erhalten die Felder per `DatabaseSchemaMaintenanceService`.
|
||||
- `CentralSalesRecordService` schreibt und liest die neuen Felder.
|
||||
- `ConfigTransferService` erhaelt die Produktfelder beim Preserve bestehender `CentralSalesRecords`.
|
||||
- Excel-Export fuehrt die neuen Produktfelder im Blatt `Sales` direkt nach `Product Group`.
|
||||
- Finance-Spalten im Export verschieben sich dadurch nach hinten; Tests wurden angepasst.
|
||||
- Manual-Excel-Import und Auto-Match kennen die neuen Feldnamen ebenfalls.
|
||||
|
||||
Aktive lokale Web-Konfiguration:
|
||||
|
||||
- Standort:
|
||||
- `Schweiz/Oesterreich`
|
||||
- `TSC = ZSCHWEIZ`
|
||||
- `SourceSystem = SAP`
|
||||
- SAP Service URL:
|
||||
- `http://travt762.sap.trafag.com:8000/sap/opu/odata/sap/ZPOWERBI_EINKAUF_SRV/`
|
||||
- SAP-Quellen:
|
||||
- Alias `Z`: bestehender Sales-EntitySet
|
||||
- Alias `P`: `ProductDivisionRefSet`
|
||||
- Join:
|
||||
- `Z.Matnr = P.Matnr`
|
||||
- Feldmappings:
|
||||
- `ProductHierarchyCode <- P.Paph1`
|
||||
- `ProductHierarchyText <- P.Paph1Text`
|
||||
- `ProductFamilyCode <- P.Wwpfa`
|
||||
- `ProductFamilyText <- P.WwpfaText`
|
||||
- `ProductDivisionCode <- P.Wwpsp`
|
||||
- `ProductDivisionText <- P.WwpspText`
|
||||
- `ProductMappingAssigned <- P.IsAssigned`
|
||||
|
||||
Lokaler Neustart / Validierung:
|
||||
|
||||
- Lokaler Webprozess wurde neu gestartet.
|
||||
- App antwortet lokal mit HTTP 200 auf `http://localhost:55416/`.
|
||||
- Neue Spalten sind in `CentralSalesRecords` vorhanden.
|
||||
- Validierung:
|
||||
- `dotnet test TrafagSalesExporter.sln --verbosity minimal --artifacts-path C:\TMP\trafag-test-artifacts-productmapping`
|
||||
- Ergebnis: `79/79` Tests gruen.
|
||||
|
||||
Naechster fachlicher/technischer Schritt:
|
||||
|
||||
- Standort `ZSCHWEIZ` im Export Dashboard einmal neu laufen lassen.
|
||||
- Danach pruefen:
|
||||
- Sind Produktfelder in `CentralSalesRecords` gefuellt?
|
||||
- Stimmen Join-Treffer fuer bekannte Materialien?
|
||||
- Wie viele Zeilen bleiben `UNASS` / `Nicht zugeordnet`?
|
||||
- SAP-seitig muss `FINANZDATASCHWEI_GET_ENTITYSET` auf den alten `ZSCHWEIZ`-Select-Code zurueckgesetzt sein, falls er versehentlich mit Produktsparten-Code ueberschrieben wurde.
|
||||
|
||||
@@ -35,6 +35,33 @@ Optional fuer Gateway/DDIC:
|
||||
- Struktur `ZSTR_PRODSPARTE_OUT`
|
||||
- Tabellentyp `ZTT_PRODSPARTE_OUT`
|
||||
|
||||
## DDIC-Hinweis Zu `ZSTR_PRODSPARTE_OUT`
|
||||
|
||||
Wenn `ZSTR_PRODSPARTE_OUT` in SE11 angelegt wird, duerfen `PAPH1`,
|
||||
`WWPFA` und `WWPSP` nicht blind als Komponententypen eingetragen werden.
|
||||
In manchen SAP-Systemen sind das keine aktiven globalen Datenelemente,
|
||||
sondern nur Feldnamen in der CO-PA-Tabelle `CE11000`. Dann kann die
|
||||
Nametab der Struktur nicht generiert werden.
|
||||
|
||||
Empfohlene Anlage:
|
||||
|
||||
| Komponente | Komponententyp / Alternative |
|
||||
| --- | --- |
|
||||
| `MATNR` | `MATNR` |
|
||||
| `MAKTX` | `MAKTX` |
|
||||
| `PAPH1` | eigenes Datenelement `ZDE_PAPH1` mit Laenge wie `CE11000-PAPH1`; aktuell fachlich erwartet: `CHAR 5` |
|
||||
| `PAPH1_TEXT` | `VTEXT` oder eigenes Text-Datenelement |
|
||||
| `WWPFA` | eigenes Datenelement `ZDE_WWPFA` mit exakt gleicher Laenge wie `CE11000-WWPFA` |
|
||||
| `WWPFA_TEXT` | `BEZEK` oder eigenes Text-Datenelement |
|
||||
| `WWPSP` | eigenes Datenelement `ZDE_WWPSP` mit exakt gleicher Laenge wie `CE11000-WWPSP` |
|
||||
| `WWPSP_TEXT` | `BEZEK` oder eigenes Text-Datenelement |
|
||||
| `IS_ASSIGNED` | `BOOLE_D` oder `XFELD` |
|
||||
|
||||
Alternativ kann die Struktur fuer den ersten ALV-Test entfallen, weil die
|
||||
Provider-Klasse intern mit `CE11000-PAPH1`, `CE11000-WWPFA` und
|
||||
`CE11000-WWPSP` typisiert. Fuer Gateway/OData ist eine globale Struktur
|
||||
aber sinnvoll.
|
||||
|
||||
## Gepruefte Anpassungen Gegenueber Erstentwurf
|
||||
|
||||
- Provider-Logik aus Report in globale Klasse ausgelagert.
|
||||
@@ -53,3 +80,43 @@ Optional fuer Gateway/DDIC:
|
||||
- Ist `CE11000` der richtige CO-PA-Einzelposten fuer den relevanten Ergebnisbereich?
|
||||
- Ist Fallback-Code `UNASS` in Feld `WWPSP` lang genug/zulässig?
|
||||
- Soll `VTWEG` zwingend selektiert werden statt "kleinster VTWEG gewinnt"?
|
||||
|
||||
## Gateway-Stand 2026-05-29
|
||||
|
||||
Der bestehende Gateway-Service wurde erweitert, statt einen separaten
|
||||
Service zu verwenden:
|
||||
|
||||
- Service: `ZPOWERBI_EINKAUF_SRV`
|
||||
- Service Root: `http://travt762.sap.trafag.com:8000/sap/opu/odata/sap/ZPOWERBI_EINKAUF_SRV/`
|
||||
- Entity Type: `ProductDivisionRef`
|
||||
- Entity Set: `ProductDivisionRefSet`
|
||||
- DDIC-Struktur fuer Entity Type: `ZSTR_PRODSPARTE_OUT`
|
||||
|
||||
Wichtig:
|
||||
|
||||
- `FINANZDATASCHWEI_GET_ENTITYSET` gehoert zum bestehenden Sales-EntitySet
|
||||
und muss den bisherigen `SELECT * FROM zschweiz ...` behalten.
|
||||
- Produktspartenlogik gehoert in die separat generierte/redefinierte Methode
|
||||
`PRODUCTDIVISIONR_GET_ENTITYSET`.
|
||||
- Wenn `/IWFND/MED/170` mit einem Servicenamen wie
|
||||
`ZPOWERBI_EINKAUF_SRVPRODUCTDIVISIONRSET` erscheint, fehlt in der URL der
|
||||
Slash zwischen Service und EntitySet.
|
||||
|
||||
Korrekte Test-URL:
|
||||
|
||||
```text
|
||||
http://travt762.sap.trafag.com:8000/sap/opu/odata/sap/ZPOWERBI_EINKAUF_SRV/ProductDivisionRefSet
|
||||
```
|
||||
|
||||
Gateway-Feldnamen, wie sie im Web-Mapping verwendet werden:
|
||||
|
||||
| Gateway-Feld | Web-Zielfeld |
|
||||
| --- | --- |
|
||||
| `Matnr` | Join gegen `Z.Matnr` |
|
||||
| `Paph1` | `ProductHierarchyCode` |
|
||||
| `Paph1Text` | `ProductHierarchyText` |
|
||||
| `Wwpfa` | `ProductFamilyCode` |
|
||||
| `WwpfaText` | `ProductFamilyText` |
|
||||
| `Wwpsp` | `ProductDivisionCode` |
|
||||
| `WwpspText` | `ProductDivisionText` |
|
||||
| `IsAssigned` | `ProductMappingAssigned` |
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# RAG Product Mapping
|
||||
|
||||
Stand: 2026-05-27
|
||||
Stand: 2026-05-29
|
||||
|
||||
## Kurzstand
|
||||
|
||||
@@ -14,7 +14,16 @@ Stand: 2026-05-27
|
||||
## Aktueller Code-Stand
|
||||
|
||||
- Vorhanden: `Material`, `ProductGroup`.
|
||||
- Noch nicht vorhanden: explizite Felder fuer Produkthierarchie, Produktfamilie, Produktsparte.
|
||||
- Neu vorhanden in `SalesRecord` und `CentralSalesRecord`:
|
||||
- `ProductHierarchyCode`
|
||||
- `ProductHierarchyText`
|
||||
- `ProductFamilyCode`
|
||||
- `ProductFamilyText`
|
||||
- `ProductDivisionCode`
|
||||
- `ProductDivisionText`
|
||||
- `ProductMappingAssigned`
|
||||
- `CentralSalesRecords` wird per Schema-Maintenance um diese Spalten erweitert.
|
||||
- Excel-Export fuehrt die neuen Produktfelder im Blatt `Sales` direkt nach `Product Group`.
|
||||
- SAP-Seed-Mapping nutzt aktuell `Z.Matnr` -> `Material` und `Z.Prodh` -> `ProductGroup`.
|
||||
- Zu klaeren: Ist `Z.Prodh` fachlich die Produkthierarchie?
|
||||
|
||||
@@ -31,11 +40,28 @@ Stand: 2026-05-27
|
||||
- Eindeutige `PAPH1 -> WWPFA -> WWPSP` werden in `ZPRODSPARTE_MAP` gespeichert.
|
||||
- Mehrdeutige PAPH1 werden protokolliert und nicht geschrieben.
|
||||
- `ZCL_PRODSPARTE_PROVIDER` liest `MVKE-PRODH`, Texte und Mapping.
|
||||
- OData-Service ruft spaeter dieselbe Provider-Klasse.
|
||||
- OData-Service ruft dieselbe Provider-Klasse.
|
||||
|
||||
## Stand 2026-05-29
|
||||
|
||||
- SAP Gateway nutzt bestehenden Service `ZPOWERBI_EINKAUF_SRV`.
|
||||
- Service Root: `http://travt762.sap.trafag.com:8000/sap/opu/odata/sap/ZPOWERBI_EINKAUF_SRV/`.
|
||||
- Produktmapping-EntitySet: `ProductDivisionRefSet`.
|
||||
- Test-Endpoint liefert Daten, z.B. `Matnr=VCP1000`, `Paph1=9999`, `Wwpsp=UNASS`.
|
||||
- OData-Felder sind CamelCase: `Matnr`, `Paph1`, `Paph1Text`, `Wwpfa`, `WwpfaText`, `Wwpsp`, `WwpspText`, `IsAssigned`.
|
||||
- Bestehender Sales-EntitySet bleibt `FinanzdataSchweizOeSet`.
|
||||
- Wichtig: `FINANZDATASCHWEI_GET_ENTITYSET` muss weiter den alten `ZSCHWEIZ`-Select enthalten.
|
||||
- Produktmapping-Code gehoert in `PRODUCTDIVISIONR_GET_ENTITYSET`.
|
||||
- Lokale App-Konfiguration fuer Standort `ZSCHWEIZ`:
|
||||
- Quelle `Z`: bestehender Sales-EntitySet.
|
||||
- Quelle `P`: `ProductDivisionRefSet`.
|
||||
- Join: `Z.Matnr = P.Matnr`.
|
||||
- Mappings: `P.Paph1`, `P.Paph1Text`, `P.Wwpfa`, `P.WwpfaText`, `P.Wwpsp`, `P.WwpspText`, `P.IsAssigned`.
|
||||
- Lokale App wurde neu gestartet; `http://localhost:55416/` antwortet mit HTTP 200.
|
||||
- Validierung: `79/79` Tests gruen mit separatem Artefaktpfad.
|
||||
|
||||
## Offene Punkte Fuer Sitzung
|
||||
|
||||
- Quelle und Format des TR-AG-Artikelstamms.
|
||||
- Normalisierung der Materialnummern.
|
||||
- Struktur der Mapping-Tabelle von Kendra.
|
||||
- Matching-Regeln: exakt, Prefix, Range, Prioritaet.
|
||||
@@ -44,6 +70,7 @@ Stand: 2026-05-27
|
||||
- `PAPH1 = MVKE-PRODH(5)` fachlich/technisch bestaetigen.
|
||||
- Richtige Texttabellen fuer `WWPFA`/`WWPSP` bestaetigen.
|
||||
- VKORG/VTWEG fuer TR-AG-Referenzlauf bestaetigen.
|
||||
- Standort `ZSCHWEIZ` im Export Dashboard neu laufen lassen und Fuellung der neuen Produktfelder pruefen.
|
||||
|
||||
## Rohquelle Nur Bei Bedarf
|
||||
|
||||
|
||||
Reference in New Issue
Block a user