123 lines
4.7 KiB
Markdown
123 lines
4.7 KiB
Markdown
# ABAP Produktsparten-Mapping
|
|
|
|
Stand: 2026-05-28
|
|
|
|
## Dateien
|
|
|
|
| Datei | Zweck |
|
|
| --- | --- |
|
|
| `ZCL_PRODSPARTE_PROVIDER.abap` | Wiederverwendbare Provider-Klasse fuer ALV und spaeter OData |
|
|
| `Z_PRODSPARTE_REPORT.abap` | Schlanker ALV-Testreport |
|
|
| `Z_PRODSPARTE_MAP_BUILD.abap` | Baut `ZPRODSPARTE_MAP` aus eindeutigen CO-PA-Kombinationen |
|
|
|
|
## Benoetigte SAP-Objekte
|
|
|
|
- Transparente Tabelle `ZPRODSPARTE_MAP`
|
|
- `MANDT`
|
|
- `PAPH1`
|
|
- `WWPFA`
|
|
- `WWPSP`
|
|
- `CRDATE`
|
|
- `CRUSER`
|
|
- Klasse `ZCL_PRODSPARTE_PROVIDER`
|
|
- Report `Z_PRODSPARTE_REPORT`
|
|
- Report `Z_PRODSPARTE_MAP_BUILD`
|
|
|
|
## Anlage In SAP
|
|
|
|
- `ZCL_PRODSPARTE_PROVIDER.abap` ist eine globale Klasse bzw. ein Class Pool, kein ausfuehrbarer Report.
|
|
- In SE24 als Klasse `ZCL_PRODSPARTE_PROVIDER` anlegen und Definition/Implementation uebernehmen.
|
|
- Alternativ in SE38/ADT als Programtyp `Class Pool` anlegen; die Datei beginnt deshalb mit `CLASS-POOL zcl_prodsparte_provider`.
|
|
- `Z_PRODSPARTE_REPORT.abap` und `Z_PRODSPARTE_MAP_BUILD.abap` sind normale ausfuehrbare Reports.
|
|
|
|
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.
|
|
- `MAKT` als `LEFT OUTER JOIN`, damit Materialien ohne Text nicht verloren gehen.
|
|
- `VTWEG` als optionaler Parameter.
|
|
- Bei mehreren Vertriebswegen gewinnt bewusst der kleinste `VTWEG`.
|
|
- Fallback setzt technischen Code `UNASS`, Text `Nicht zugeordnet` und `IS_ASSIGNED = abap_false`.
|
|
- `gt_ambig` im Mapping-Build ist korrekt als `ty_combo` typisiert.
|
|
- `p_erkrs` wurde entfernt, weil der Report fix aus `CE11000` liest.
|
|
- Leerschreiben von `ZPRODSPARTE_MAP` wird verhindert, wenn keine eindeutigen Saetze aufgebaut wurden.
|
|
|
|
## Noch Fachlich/Technisch Zu Pruefen
|
|
|
|
- Ist `PAPH1 = MVKE-PRODH(5)` im Trafag-System exakt korrekt?
|
|
- Sind `T25A0` fuer Produktfamilie und `T25A1` fuer Produktsparte die richtigen Texttabellen?
|
|
- 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` |
|