Änderung der Lieferadresse im Feeder
Bisher war es nicht möglich, im xSuite-Feeder die Lieferadresse zu ändern. Eine Anpassung der Lieferadresse konnte frühestens in der Bestellanforderung oder in der Bestellung erfolgen. Die Lieferadresse wurde stets aus der Werksadresse abgeleitet und war daher für alle Positionen gleich.
In der aktuellen xSuite-Version ist es nun möglich, die Lieferadresse jeder einzelnen Position bereits im xSuite-Feeder zu ändern. Die Adressen werden im Verlauf des Workflows an die Bestellanforderung und an die Bestellung(en) übergeben.
Eine Änderung der Lieferadressen ist nur in den folgenden Workflowaufgaben möglich:
Feeder anlegen (Rolle PFCR)
Vorläufigen Feeder ändern (Rolle PFCC)
Feeder bearbeiten (Rolle PFET)
Feeder nach Ablehnung bearbeiten (Rolle PFER)
In allen anderen Aufgaben des Feeder-Workflows können die Adressen nur angezeigt werden.
Diese Funktion ist im SAP GUI, in SAP Fiori und in xSuite Web verfügbar.
Änderung der Lieferadresse im Feeder – SAP GUI
Durch einen Klick auf den Button
Lieferadresse oder einen Doppelklick in die Spalte Adreßnum. öffnet sich der Lieferadressen-Dialog für die markierte Position.
![]() |
![]() |
In diesem Dialog kann der Benutzer entweder über die Adressnummer eine existierende Adresse auswählen oder manuell eine neue Adresse eingeben.
Wenn der Benutzer eine Adresse manuell ändert, prüft das System anhand eines Hash-Werts, ob diese Adresse bereits existiert. Wenn dies der Fall ist, wird die Nummer der bereits vorhandenen Adresse verwendet.
Wenn dies nicht der Fall ist, wird über die Schnittstelle der Business Address Services (BAS) eine neue Adressnummer generiert. Die Adressdaten werden danach in den Tabellen der BAS abgelegt. Der Feeder erhält lediglich die Adressnummer als Referenz auf die Adresse.
Ansonsten behält das System die zur Nummer gehörende Adresse bei.
Über den Button
Auf Werksadresse zurücksetzen kann die Adresse auf die Werksadresse zurückgesetzt werden.
Die Änderungen werden erst nach einem Klick auf den Button Sichern in die Feeder-Position übernommen. Nach dem Sichern des Feeders erscheinen die neuen Adressnummern im Feld Adreßnum der Feeder-Position.
![]() |
Wenn das Feld Adreßnum. leer ist, wird die Werksadresse verwendet.
Plausibilitätsprüfungen
Plausibilitätsprüfungen finden in allen Feldern statt, die über eine F4-Wertehilfe verfügen.
Adressnummer: Die Angabe einer ungültigen Adressnummer führt zur Leerung des Feldes.
Anrede: Die Angabe eines ungültigen Anrede-Schlüssels führt zur Leerung des Feldes.
Land/Region: Das System prüft, ob Land und Region zusammenpassen. Wenn das nicht der Fall ist, wird eine Meldung ausgegeben.
Land und Region sind im Data Dictionary über eine Fremdschlüsselbeziehung definiert, sodass das SAP-System selbst eine Plausibilitätsprüfung vornehmen kann. Wenn beide Felder manuell geleert werden, werden auch die Bezeichnungen gelöscht.
Technischer Hintergrund
Die Bearbeitung und Verwaltung von Adressen erfolgt mit Hilfe der SAP Business Address Services (BAS). Der xSuite Feeder verwendet dazu die offiziell freigegebenen Schnittstellen der BAS. In diesem Fall sind das die Funktionsbausteine der Funktionsgruppe SZA0, da diese dunkel prozessiert werden können.
Die Persistenz der Adressen übernehmen die BAS. Die jeweilige Anwendung, d. h. der xSuite Feeder, erhält als Referenz auf die Adressdaten eine Adressnummer, die die Anwendung selbst persistiert. Zugriffe auf die Adressdaten erfolgen stets über die vergebene Adressnummer.
Um die BAS-Schnittstelle verwenden zu können, müssen einige Voraussetzungen erfüllt sein, die im SAP-Customizing eingetragen werden. Die Customizing-Einstellungen sind Bestandteil der xSuite-Auslieferung.
Adressgruppen
Adressgruppen sind ein Ordnungskriterium der BAS, um Adressen organisatorisch verwalten zu können.
Im SAP-Standard sind bereits Adressgruppen vorhanden, die jedoch für die SAP-Anwendungen reserviert sind und von kundeneigenen Anwendungen nicht verwendet werden dürfen, z. B. ME01 (Stammdaten Einkauf) oder ME02 (Bestellungen).
Adressgruppen werden im Customizing mit dem SM30-View TSAD7 gepflegt. xSuite verwendet für Adressen, die im Feeder angelegt werden, die Adressgruppe ZWMD.
![]() |
Logische Tabelle/Feldname
Jede Anwendung, die eigene Adressen anlegen will, muss eine logische Tabelle und einen logischen Feldnamen hinterlegen.
Die Pflege der logischen Tabelle erfolgt im SM30-View TSADRV. Hier kann auch die Angabe über die physische Tabelle und den Feldnamen erfolgen.
Dies ist die Einstellung der xSuite-Auslieferung:
![]() |
Nummernkreisobjekt ADRNR
Die Funktionsbausteine des BAS verwenden den Nummernkreis 10 des Nummernkreisobjekts ADRNR.
Derzeit ist nicht vorgesehen, dass die xSuite-Anwendung einen eigenen Nummernkreis verwendet.
Datenvermeidung
Um die Erzeugung redundanter Adressen möglichst zu vermeiden, wird beim Sichern des Feeders zunächst ein Hash-Wert für jede geänderte Adresse gebildet und mit bereits vorhandenen Hash-Werten verglichen. Dies gilt nicht für vorhandene Adressen, die mit der Eingabehilfe explizit ausgewählt worden sind.
Wenn der gebildete Hash-Wert mit einem vorhandenen identisch ist, wird die mit diesem Hash-Wert verbundene Adressnummer verwendet. Die Hashes werden in der Tabelle /WMD/XF_PU_AHSH persistiert.
Wenn kein Hash vorhanden ist, wird eine neue Adressnummer angefordert, für die Adressfelder wird ein neuer Hash gebildet und in der Tabelle /WMD/XF_PU_AHSH abgelegt.
Änderung der Lieferadresse im Feeder – SAP Fiori
Durch einen Klick auf das Icon in der Spalte Adreßnum. öffnet sich der Lieferadressen-Dialog.
![]() |
![]() |
In diesem Dialog kann der Benutzer entweder über die Adressnummer eine existierende Adresse auswählen oder manuell eine neue Adresse eingeben.
Über den Button Zurücksetzen auf Werksadresse kann die Adresse auf die Werksadresse zurückgesetzt werden.
Nach der Übernahme der Änderungen und dem Schließen des Dialogs kann der Benutzer die neue Adresse optional für alle anderen Positionen übernehmen, deren Lieferadresse mit der ursprünglichen Adresse der aktuellen Position übereinstimmt.
Das Icon in der Spalte Adreßnum. zeigt an, ob für eine Position die Werksadresse oder eine abweichende Lieferadresse verwendet wird:
Icon | Beschreibung |
|---|---|
| Die Werksadresse wird verwendet. |
| Eine abweichende Lieferadresse wird verwendet. |
Änderung der Lieferadresse im Feeder – xSuite Web
Durch einen Klick auf das Icon in der Spalte Adreßnum. öffnet sich der Lieferadressen-Dialog.
Das Icon in der Spalte Adreßnum. zeigt an, ob für eine Position die Werksadresse oder eine abweichende Lieferadresse verwendet wird:
Icon | Beschreibung |
|---|---|
| Die Werksadresse wird verwendet. |
| Eine abweichende Lieferadresse wird verwendet. |
![]() |
In diesem Dialog kann der Benutzer entweder über die Adressnummer eine existierende Adresse auswählen oder manuell eine neue Adresse eingeben.
![]() |
Wenn eine Adresse bearbeitet wird, die vom Benutzer ausgewählt wurde, wird die Adressnummer zunächst verworfen. Die neue Adresse wird als neuer Datensatz behandelt, der innerhalb der Anwendung zur weiteren Verarbeitung im Back-End vorgehalten wird und logisch per Referenzierung an die Position gebunden ist.
Über den Button Abbrechen werden die Änderungen verworfen. Über den Button Zurücksetzen auf Werksadresse wird die Adresse auf die Werksadresse zurückgesetzt.
Nach der Übernahme der Änderungen und dem Schließen des Dialogs kann der Benutzer die neue Adresse optional für alle anderen Positionen übernehmen, deren Lieferadresse mit der ursprünglichen Adresse der aktuellen Position übereinstimmt.
![]() |
Die Vorgehensweise bei der Übernahme einer neuen Adresse für andere Positionen ist abhängig von der Art der Änderung:
Art der Änderung | Beschreibung |
|---|---|
Änderung einer Werksadresse | Wenn eine Werksdresse geändert wurde, werden allen anderen Positionen mit diesem Werksadressbezug angeglichen. |
Änderung einer Bestandsadresse | Wenn eine Bestandsadresse in eine andere Bestandsadresse geändert wurde, wird nach anderen Positionen gesucht, die dieselbe ursprüngliche Bestandsadresse referenzieren. |
Erstellung einer neuen Adresse | Wenn freie Änderungen am Adressdatensatz vorgenommen wurden und somit eine potentiell neue Adresse erstellt wurde, werden die Lieferadressen der übrigen Positionen mit dem geänderten Adressdatensatz abgeglichen. Die Adressdaten werden per BANFN und BUZEI logisch an eine Position gebunden und an das Back-End übermittelt. Im Back-End werden die Daten mit dem Adressstamm über einen MD5-Hash mit den relevanten Adressfeldern abgeglichen. Wenn es ein Übereinstimmung gibt, wird diese per Adress-ID an die Position gebunden. Wenn es keine Übereinstimmung gibt, wird dem Adressstamm die neue Adresse hinzugefügt und per ID an die Position gebunden. |
Wenn das Werk für eine Bestellung geändert wird, kann für alle Positionen die neue Werksadresse übernommen werden.
![]() |
Technische Integration
Bei der Implementierung des Lieferadressen-Management wurde der Änderungsbedarf an der bestehenden Feeder/PO-Infrastruktur der Web-Anwendung möglichst gering gehalten.
Neben einem weitgehend Event-getriebenen Dialog-Control zur Datenanzeige und Erfassung (DeliveryAddressMaintenance.js in /sap/bc/bsp/wmd/ui5_365/wmd_ui5_500/ext/ui/po) wurde die konkrete Geschäftslogik in dem Verzeichnis /sap/bc/bsp/wmd/ui5_365/wmd_ui5_500/po in 3 Controller-Erweiterungen abgebildet:
DeliveryAddressExtension.js→ GeschäftslogikDeliveryAddressFeederExtension.js→ Adresspersistenz fürfeeder.controller.jsDeliveryAddressPoToolbarExtension.js→ Adresspersistenz fürpo_toolbar.controller.js
Die Lösung kann so neben dem Feeder-Block auch auf die Positionen und die Freigabe angewendet werden.
Die Integration der Erweiterungen in die relevanten Controller-Klassen funktioniert über eine Inline-Override-Direktive. Auf diese Weise können generisch zu bedienende Aspekte, wie z. B. das zugrundeliegende Anwendungsmodel und die Referenzierung der Zieltabelle im UI und des korrespondierenden Feldkatalogs, per Controller implementiert werden.
xf5web.feeder_ctrl = "wmd.xfweb.wmd_ui5_500.po.feeder";
xf5web.feeder_mname = "";
sap.ui.define(['jquery.sap.global', 'sap/ui/core/mvc/Controller',
'wmd/xfweb/wmd_ui5_500/ext/ui/Dialog/ConditionalConfirm',
'wmd/xfweb/wmd_ui5_500/po/DeliveryAddressExtension',
'wmd/xfweb/wmd_ui5_500/po/DeliveryAddressFeederExtension'],
function (jQuery,ParentController, ConditionalConfirm,
DeliveryAddressExtension,DeliveryAddressFeederExtension) {
return ParentController.extend("wmd.xfweb.wmd_ui5_500.po.feeder", {
deliveryAddressFeederSupport: DeliveryAddressFeederExtension,
deliveryAddressSupport: DeliveryAddressExtension.override({
getTargetTable: function () {
console.log("Serve target table \"feeder_table\"");
return sap.ui.getCore().byId("feeder_table");
},
getAdrsFieldIdPrefix: function () {
return "feeder_input_";
},
getModelName: function () {
return xf5web.feeder_mname;
},
getFcatName: function () {
return "et_feed_fcat";
},
getAdrnrFieldName: function () {
return "adrnr";
}
}),Wenn im Rahmen eines Projektes ein expliziter Änderungsbedarf anfallen sollte, kann mit dem gleichen Mechanismus die Logik der Standard-Methoden in den Controller-Erweiterungen überprägt werden.














