Anfang des InhaltsbereichsHintergrunddokumentation Integration neuer Tabellen in den Materialstamm Dokument im Navigationsbaum lokalisieren

Verwendung

Sie können neue Tabellen in der Materialstammpflege ohne Modifikationen an den Programmen des Materialstamms einbinden.

Die Vorgehensweise für die Aufnahme neuer Felder in bestehende Tabellen ist im Hinweis 44410 beschrieben.

Diese Dokumentation stützt sich insbesondere auf die Möglichkeiten, Anzahl und Aussehen der Haupt- und Nebenbilder des Materialstamms durch den Benutzer zu definieren.

Voraussetzungen

Der Materialstamm sollte Ihnen in seinen Grundzügen vertraut sein.

Sie haben dazu die Customizingeinstellungen in Logistik Allgemein ® Materialstamm ® Konfigurieren des Materialstamms zur Gestaltung der Bilder verwendet. Sie können Bildsequenzen definieren, die eine Folge von Haupt- und Nebenbildern enthalten. Jede Bildsequenz repräsentiert eine Darstellungsform des Materialstamms.

Hinweis

Für eigene neue Tabellen sollten Sie keine Änderungen an den Standard-Bildsequenzen vornehmen, sondern die Kopie einer passenden Standardbildsequenz verändern und eine eigene Bildsequenz erstellen.

Integration

Bei der Integration neuer Tabellen in den Materialstamm sind folgende Anforderungen zu unterscheiden

Die Pflege der Daten muss aus dem Materialstamm heraus erfolgen können. Dabei ist durch die Art der Integration erkennbar, dass es sich hier um ein eigenständiges Objekt handelt, d.h. der Benutzer erwartet nicht, dass die gleiche Funktionalität für die integrierten Daten zur Verfügung steht, wie für die Materialstammdaten (z.B. Feldauswahl, Vorlagehandling, etc.). Durch die Integration soll lediglich eine Pflegevereinfachung für den Benutzer erreicht werden.

Für den Anwender soll nicht erkennbar sein, dass es sich nicht um eine Tabelle des Materialstamms handelt. Die Integration ist also für den Anwender nicht sichtbar, sie unterscheidet sich lediglich technisch von der Einbindung als eigene Materialstammtabelle. Entsprechend sind alle Pflegefunktionen, die für Materialstammdaten verfügbar sind, auch für die integrierten Daten verfügbar.

Die teilweise Integration wird vor allem für solche Daten gewählt, die nicht zwingend für jedes Material gepflegt werden müssen, die zusätzliche Daten sind, die nicht zwingend als Teil des Materialstamms betrachtet werden, z.B. Fertigungsversionen zu einem Material.

Die vollständige Integration wird für solche Daten gewählt, die für alle oder viele Materialien gepflegt werden müssen, die von ihrer Eigenschaft her im Grunde ganz normale Materialstammtabellen darstellen (keine Zusatzdaten) und bei denen der Anwender bewusst keine Unterscheidung zu anderen Materialstammdaten sehen soll, z.B. Bedarfsgruppen zu einem Material (nur im Retailumfeld verfügbar).

Realisierung

Entsprechend der unterschiedlichen Anforderungen an die Integration gibt es auch unterschiedliche Wege der Realisierung:

Bei der teilweisen Integration kann die Pflege der neuen Tabelle nur in einem eigenen Bild erfolgen (Nebenbild). Das Bild auf dem die neuen Daten gepflegt werden, hat einen eigenen GUI-Status, unterscheidet sich also von den Bildern des Materialstamms durch Funktionen in der Menüleiste und der verfügbaren Drucktasten. Man kann insbesondere nicht von dem Bild direkt auf andere Materialstammbilder springen und man kann das Bild nicht als eigenes Hauptbild oder als Subscreen auf einem bestehenden Hauptbild unterbringen. Es sind ebenfalls nicht zwingend alle Pflegefunktionen für die integrierten Daten verfügbar.
Das Nebenbild kann entweder über das Menü Zusätze oder über eine Drucktaste geöffnet werden.

Bei der vollständigen Integration kann die Pflege der neuen Tabelle wie bei anderen Materialstammtabellen folgendermaßen integriert werden:

Die teilweise Integration ist einfacher als die vollständige Integration. Für die vollständige Integration gibt es außerdem noch einige Einschränkungen:

Hinweis

Die Erweiterung des Materialstammes soll substantiell sein. Es geht nicht um die Aufnahme von ein oder zwei Feldern in einen vorhandenen Subscreen.

Diese Dokumentation beschreibt lediglich die Integration neuer Material-Tabellen von Seiten der Stammdatenpflege. Die Verwendung und Verarbeitung der so erfassten Daten in den operativen Prozessen erfordert ein eigenes Konzept.

Die Feldauswahlsteuerung im Materialstamm ist nicht für weitere Tabellen erweiterbar. Dementsprechend muss eine eigene Feldauswahl implementiert werden.

Beim Vorlagehandling in der Materialstammpflege kann der Anwender je Feld entscheiden, ob das Feld aus dem Vorlagematerial vorgeschlagen werden soll oder nicht. Dies ist über eine Customizing-Transaktion zu pflegen und wird in der Tabelle T130F abgelegt. Auch hier muss ein eigenes Vorlagehandling implementiert werden.

Schlüsselfelder in neuen Tabellen:
In der Regel haben die neuen Tabellen einen Schlüssel, der nicht mit dem Schlüssel einer bereits existierenden Materialtabelle übereinstimmt (ansonsten wäre die Integration durch die Aufnahme neuer Felder in eine bestehende Materialstammtabelle zu lösen). Handelt es sich dabei um Daten, deren Datensätze je Schlüssel auf einem eigenen Bild gepflegt werden müssen und bei denen folglich die unterschiedlichen Datensätze über einen Wechsel der Organisationsebene angesprungen werden müssen, so ist generell nur eine teilweise Integration möglich. Die vollständige Integration neuer Schlüsselfelder in die Materialstammpflege ist nicht unterstützt.

Die Aufnahme neuer Pflegestatus aufgrund der Integration neuer Objekte in den Materialstamm ist nicht vorgesehen. Neue Objekte müssen sich daher an einen bestehenden Materialstatus anhängen.

 

Vollständige Integration

Zunächst wird die Vorgehensweise für die vollständige Integration beschrieben, bei der teilweisen Integration wird nur noch auf die relevanten Punke hingewiesen.

Für die Integration neuer Objekte stehen die Methoden des BAdIs BADI_MATERIAL_OD zur Verfügung, von denen die anwendungsspezifischen Funktionsbausteine der integrierten Objekte gerufen werden können. Die BAdI-Methoden stellen die erforderlichen Daten bereit, die der Anwendungsbaustein in der jeweiligen Situation benötigt. Die Integration kann auf diese Weise so erfolgen, dass die integrierten Daten im Materialstamm nicht bekannt sein müssen. Die gesamte Logik sowie die zugehörigen Daten sind in den anwendungsspezifischen Funktionsbausteinen zu kapseln.

Für die teilweise Integration wird nur ein Teil der existierenden BAdI-Methoden benötigt. Manche BAdI-Methoden sind nur für die Integration im Retailumfeld relevant (alle mit der Endung _RT für RETAIL), andere für den Materialstamm im Industrie- und im Retailumfeld.

Als Beispiel für die Integration werden zum einen die im Retail integrierten Bedarfsgruppen angeführt (Funktionsgruppe WRPP). Diese Daten werden auf Ebene des Materials gepflegt (alle Bedarfsgruppen zu einem Material werden in einem Bild gepflegt). Als Beispiel für die Integration von Daten auf Ebene Material/Werk werden die im Retail integrierten Nachschubparameter angeführt (Funktionsgruppe WRPL), da gerade bei der Integration werksspezifischer Daten im Retail-Materialstamm die Problematik der Vorlagebetriebe berücksichtigt werden muss (vgl. Punkt Vorlagehandling). Die Bildbausteine für beide Datentabellen (WRPP und WRPL) sind in der Funktionsgruppe WRPD zu finden.

 

Erstellung des Rahmens

Die Entwicklung der Dynpros erfolgt analog wie beim Einbinden neuer Felder in bestehende Tabellen in einer eigenen Funktionsgruppe. In diese Funktionsgruppe werden die relevanten Includes des Materialstamms eingebunden (Inclusion im Rahmenprogramm, keine Kopie), so dass die notwendigen Routinen zur Datenbeschaffung auf dem Dynpro ablaufen können. Für Bedarfsgruppen ist die Entwicklungsklasse WRPL; die Funktionsgruppe heißt WRPD.

Die Funktionsgruppe muss außerdem einen speziellen Funktionsbaustein zur Initialisierung enthalten. Mit diesem Funktionsbaustein werden bei jedem Eintritt in die Funktionsgruppe zentrale Steuerungsparameter gelesen. Der Baustein hat das fixe Präfix ‚INIT_‘, gefolgt vom Namen der Funktionsgruppe. Siehe INIT_WRPL! Der Baustein hat keine Parameter und besteht "nur" aus der einen Zeile:

perform init_baustein.

Die Form-Routine ist in einem Standard-Include des Materialstamms definiert.

Die Erstellung der Funktionsgruppe kann ab Release 3.1I mit Hilfe des Programms COPYMGD1 vorgenommen werden (über einen Parameter wird gesteuert, ob eine Funktionsgruppe für den Industrie- oder den Retail-Materialstamm erstellt werden soll). Das Rahmenprogramm, der Funktionsbaustein sowie ein Beispieldynpro werden dadurch automatisch angelegt.

Dynprologik

Innerhalb der Funktionsgruppe können wie gewohnt Dynpros mit PBO- und PAI-Logik entwickelt werden. Auf eine besondere Nummerierung muss keine Rücksicht genommen werden. Bei der Entwicklung sind folgende Punkte zu beachten.

Allgemeines

Im Industrie-Materialstamm wird zwischen dem Aktivitätstyp H = Hinzufügen und V = Verändern unterschieden (ein Material kann entweder verändert werden – MM02 – oder es werden neue Sichten hinzugefügt bzw. angelegt – MM01). Im Retail-Materialstamm wird zwischen den Aktivitätstypen N = Neuanlegen Material und C = Pflegen Material unterschieden (ein Material kann entweder neuangelegt werden – MM41 – oder es kann gepflegt, d.h. geändert oder erweitert werden – MM42). Damit auch für den Retail-Materialstamm die gleiche Programmlogik verwendet werden kann (der Aktivitätstyp wird an diversen Stellen abgefragt), wird der Aktivitätstyp im Retail-Materialstamm nach Ablauf des Einstiegsbildes im Falle N und C auf den Aktivitätstyp H gesetzt (im Retail-Materialstamm ist zunächst nicht erkennbar, ob Verändert oder Hinzugefügt wird; vlg. LMGMWFO0, OKCODE_BILD_RETAIL). Ist für eine bestimmte Organisationsebene zu entscheiden, ob es sich um Verändern oder Hinzufügen handelt, so muss dies über die interne Tabelle PTAB_FULL und den zugehörigen RCODE entschieden werden.

Lesezugriffe, Datenpufferung und Datentransport

Das Lesen der Daten von der Datenbank zu einem bestimmten Schlüssel darf nur einmal je Transaktion erfolgen; bei erneutem Aufruf sollte aus dem Puffer gelesen werden. Die Lesezugriffe müssen in eigene Zugriffsbausteine gekapselt werden. Der Aufruf der Leseroutine ist in die BAdI-Methode READ_OTHER_MATERIAL_DATA einzubauen.

Für die Erstellung der Zugriffsbausteine kann man sich an den Funktionsbausteinen für die Bedarfsgruppen oder die Nachschub-Parameter orientieren (Funktionsgruppe WRPPB für die Zugriffe auf die Tabelle WRPP, Funktionsgruppe WRPLB für Zugriffe auf die Tabelle WRPL). Die Bausteine für beide Funktionsgruppen wurden nach Vorlagen für Zugriffsbausteine des Materialstamms erstellt (je Tabelle gibt es eine eigene Funktionsgruppe, die alle Zugriffsbausteine der Tabelle enthält).

Die Eigenschaft des Materialstamms, für den Kunden customizebar zu sein, beruht im wesentlichen auf dem Konzept der Datenpufferung und dem Transport der Daten zwischen Subscreens, die zu verschiedenen Programmen gehören können. Im folgenden wird das Konzept kurz beschrieben:

Aus Gründen der einheitlichen Funktionalität muss bezüglich Datenpufferung und Datentransport das gleiche Konzept für die zu integrierenden Tabellen gewählt werden. In der BAdI-Methode GET_OTHER_MATERIAL_DATA_BILD wird daher der entsprechende Get-Bild-Funktionsbaustein für die neuen Daten aufgerufen, der die Daten für das Bild in der Workarea bereitstellt. In der BAdI-Methode SET_OTHER_MATERIAL_DATA_BILD werden die geprüften Daten aus der Workarea in den Puffer zurückgestellt.

Die Funktionsbausteine XXXX_GET_SUB und XXXX_SET_SUB werden jedoch nur auf den neu einzubindenden Subscreens aufgerufen. Ihr Aufruf macht ja die Verfügbarkeit und Deklaration der entsprechenden Tabelle erforderlich.

Prüfung der Daten

Zum Zeitpunkt PAI soll die Prüfung der Daten stattfinden. Wenn die Prüfroutinen eine fehlende Konsistenz der Daten melden, darf das Bild nicht verlassen werden. Der Anwender muss seine Eingaben korrigieren. Verwendet man für die Ausgabe von Fehlermeldungen E-Meldungen, so stellt das System sicher, dass das Bild erst nach Korrektur des Fehlers verlassen werden kann.

Durch die Verwendung von Subscreens ist es aber nicht immer sinnvoll, im Fehlerfall eine E-Meldung auszugeben. Fehlermeldung sollten dann als S-Meldungen und nicht als echte Fehlermeldungen (E-Meldung) ausgegeben werden, wenn Felder auf unterschiedlichen Subscreens von einer Korrektur betroffen sein können oder wenn es sich um ein Steploop-Dynpro handelt. So kann der Benutzer weiterhin alle Felder ändern und ist nicht auf das durch eine E-Meldung hervorgehobene Feld beschränkt. Damit das Bild nun trotzdem nicht verlassen werden kann, muss die globale Variable BILDFLAG bei Fehlern ohne E-Meldung auf ‚X‘ gesetzt werden. Dadurch ist sichergestellt, dass der Absprung zu einem anderen Bild unmöglich ist. Sobald die Daten vom System akzeptiert werden, muss BILDFLAG mit Space belegt sein.

Dieser Fall kann auch bei Warnungen auftreten (nicht alle betroffenen Felder befinden sich auf einem Subscreen). Auch in diesem Fall muss die Meldung als S-Meldung ausgegeben werden, aber zusätzlich muss die sonst vom System bereitgestellte Warnungslogik (Warnung kann bestätigt werden, Bild kann trotzdem verlassen werden) entsprechend programmiert werden (durch ein Flag sicherstellen, dass die Warnung bei unveränderter Eingabe (!) nur einmal hochkommt; beachte: wenn die Daten zwischenzeitlich verändert wurden, muss die Warnung wieder ausgegeben werden).

Beispiel

Vergleiche Vorgehen in Funktionsgruppe MGD1, PAI-Modul MARC-DISMM-FXHOR.

 

Prüfungen sollten immer als Funktionsbaustein implementiert werden, da sie auch nach dem Speichern in der Buchungslogik noch mal aufgerufen werden. Bei der Erstellung von Prüfbausteinen für die Prüfung der Eingaben ist folgendes zu beachten:

Funktionscodes

Zum Zeitpunkt PAI werden Aktionen des Benutzer durch einen Funktionscode überprüft. Diese Funktionscodes werden im Programm selbst über global definierte Konstanten angesprochen. Die Namenskonvention für die Konstantennamen ist FCODE_<Name des Funktionscodes>. Die Definition dieser Konstanten geschieht zweckmäßig in einem eigenen Include-File (siehe WRPP_FCODES).
Zur Sicherstellung der Eindeutigkeit der Funktionscodes sollten sich diese aus dem Namen der eigenen Funktionsgruppe und einem selbstgewählten Funktionscodenamen zusammensetzen.

 

Der Funktionscode ist Element der Struktur RMMZU und als RMMZU-OKCODE abrufbar.

 

Falls der neue Subscreen ein Step-Loop-Dynpro mit eigenen Funktionscodes zum Blättern enthält (beachte: die Funktionscodes zum Blättern müssen ebenso wie andere Funktionscodes eindeutig sein), so muss die Anwendung nach der Bearbeitung des Funktionscodes das Bildflag setzen (sonst wird auf das nächste Bild gesprungen) und den Funktionscode zurücksetzen.

 

PBO-Module

Folgende Module sind standardmäßig in der PBO-Logik eines Subscreens enthalten.

Initialisierung; muss immer vorhanden sein

Datenbeschaffung der Materialstammdaten aus den Zwischenpuffern (Workarea); muss immer vorhanden sein

Feldauswahl für Materialstammfelder (T130F)

Sonderfeldauswahl für Materialstammfelder

Sonderfeldauswahl für Felder mit Sonderfeldgruppe

Feldauswahl für die Bezeichnungen (wenn ein Datenfeld ausgeblendet wird, so muss auch die zugehörige Bezeichnung ausgeblendet werden)

Setzen des Bildstatus

Änderungsdienst (deaktiviert)

Vorschlagshandling für Materialstammfelder im Industriefall

Vorschlagshandling für Materialstammfelder im Industriefall

Vorschlagshandling für Materialstammfelder im Industriefall

Lesen der Bezeichnungen zu den Datenfeldern

Vorschlagshandling für Materialstammfelder für Retailfelder

Zurückschreiben der Materialstammdaten in den Zwischenpuffer (Workarea)

Die Module für die Datenbeschaffung und das Zurückschreiben der Daten in die Zwischenpuffer (GET_DATEN_SUB, SET_DATEN_SUB) müssen immer vorhanden sein. Sie sorgen auch für den Transport der Materialdaten zwischen unterschiedlichen Funktionsgruppen.


Aufgrund des Aufrufs des Moduls
GET_DATEN_SUB stehen alle aktuell erfassten Materialstammdaten zur Verfügung. Beispielsweise sind alle Grunddaten über MARA-<Feldname> zugänglich. Soll der aktuelle Stand zu der vorliegenden Schlüsselkombination eines Materials verwendet werden, so sind immer diese Daten zu benutzen (eventuell haben die Daten in den ‘endgültigen’ Puffern nicht den aktuellen Stand). Werden hingegen Materialdaten für eine andere Organisationsebene als die aktuelle (RMMG1) benötigt, so können diese Daten mit den vorhandenen Funktionsbausteinen des Materialstamms ermittelt werden (siehe Funktionsgruppen im Paket MGA bzw. MGW; z.B. MG21 für Zugriffe auf die Tabelle MARA). Falls Materialstammdaten zu anderen Schlüsseln als den aktuellen auch dargestellt werden sollen, so ist zu beachten, dass zuvor entsprechende Berechtigungen überprüft werden müssen (nur relevant für Industrie-Materialstamm, nicht für Retail-Materialstamm). Sollen zum Beispiel im Materialstamm Daten zu einem anderen Werk als dem aktuell angegebenen dargestellt werden, so ist zuvor die Berechtigung für dieses neue Werk zu prüfen.

 

Vorlagehandling

Die Module für das Vorlagehandling sind nur im Industriefall auf jedem Subscreen enthalten, im Retailfall taucht das Modul nur in den Header-Subscreens (Subscreens mit Keyfeldern) auf, da die Vorlagelogik dort nicht je Subscreen, sondern nur einmal je Bild erfolgt. Für die eigenen Tabellen muss ebenfalls eine Vorschlagslogik programmiert werden, die sich an der Logik des Industrie-Materialstammes bzw. der dazu unterschiedlichen Logik des Retail-Materialstammes orientiert. Die Vorschlagslogik für die zu integrierende Tabelle sollte als Funktionsbaustein gekapselt werden, da auch dann ein Vorschlag erstellt wird, wenn der Subscreen nicht durchlaufen wird und diese Logik in diesem Fall in der Buchungslogik laufen muss.

Im Vorschlagshandling für neue Tabellen ist zu beachten, dass der Vorschlag für eine Tabelle (bzw. Tabelle und Pflegestatus) nur einmal beim Neuanlegen der Daten abläuft. Es dürfen natürlich nicht vom Benutzer durchgeführte Änderungen überschrieben werden.

Es kann je Feld gesteuert werden, ob das Feld aus der Vorlage übernommen werden soll oder nicht (T130F-KZREF). Falls diese Steuerung auch für neu einzubindende Felder der zu integrierenden Tabellen gewünscht wird, ist eine entsprechende Steuerung zur Verfügung zu stellen (siehe Negativliste).

Für den Retail-Materialstamm ist der Funktionsbaustein zur Vorschlagslogik für integrierte Objekte in der BAdI-Methode MATERIAL_REFERENCE_OTHER_DATA_RT aufzurufen.
Beispiel: Siehe Vorschlagsbaustein für Bedarfsgruppen
WRPP_GET_REFERENCE und für Nachschubparameter WRPL_GET_REFERENCE.

In der BAdI-Methode MATERIAL_PREPARE_POSTING_OD können noch vor der Verbuchung relevante Prüfungen durchgeführt werden und gegebenenfalls Vorschlagsdaten ergänzt werden (z.B. falls das entsprechende Bild nicht explizit durchlaufen wurde und daher noch keine Vorschlagsdaten erstellt wurden).
Beispiel:
WRPP_PREPARE_POSTING und WRPL_PREPARE_POSTING.

PAI-Module

Folgende Module sind standardmäßig in der PAI-Logik eines Subscreens enthalten

Datenbeschaffung der Materialstammdaten aus den Zwischenpuffern (Workarea)

Zurückschreiben der Materialstammdaten in den Zwischenpuffer (Workarea)

Für jedes Dynpro-Feld muss eine Field-Anweisung vorhanden sein, da sonst kein Datentransport erfolgt (beachte: die Field-Anweisungen müssen nach dem Aufruf von GET_DATEN_SUB erfolgen. Gegebenenfalls sind zum Zeitpunkt PAI auch Prüfroutinen für die Überprüfung der Eingaben einzufügen.

 

Durchreichen von Daten (Massenpflege) und Abweichungshandling

Im Retail-Materialstamm (nicht im Indutrie-Materialstamm) gibt es eine Massenpflege in der Art, dass Daten zu einem Material gleichzeitig für mehrere Organisationsebenen (z.B. Werke) gepflegt werden können. Außerdem gibt es das Konstrukt des Sammelmaterials mit untergeordneten Varianten, wobei Daten, die auf Ebene des Sammelmaterials gepflegt werden, automatisch an alle Varianten weitergegeben werden. Daten von einer übergeordneten Ebene werden dabei nur dann auf die zugehörigen untergeordneten Ebenen durchgereicht, wenn die untergeordnete Ebene nicht abweichend gepflegt wurde.

Um Abweichungen festzuhalten, werden sogenannte Abweichungszeiger fortgeschrieben (Tabelle MABW). Sie zeigen an, ob eine Abweichung zur entsprechenden Vorlage besteht und werden für jede Art von Organisationsebene geschrieben (siehe Tabelle MABW).
Beispiel: Für eine Variante wurden die Verkaufsdaten (Ebene Vertriebslinie) abweichend vom Sammelmaterial gepflegt. Zu Variante und Vertriebslinie wird ein Abweichungszeiger geschrieben. Die Daten sind auch im Abweichungsfall durchzureichen, aber nur für die nicht unterschiedlich gepflegten Felder.

Durch einen Button können die Abweichungen angezeigt werden (zu einem bestimmten Bild und damit Organisationsebene).

Die Funktionalität der Massenpflege muss auch für neue Objekte im Retail-Materialstamm unterstützt werden. Dazu ist ein geeigneter Funktionsbaustein zu erstellen, dem die aktuellen Schlüsselfelder übergeben werden und der dann prüft, ob Daten durchgereicht werden müssen (z.B. von Sammelmaterial auf Variante) und gegebenenfalls die abhängigen Daten im Puffer anpasst (die aktuellen Daten können dem Zwischenpuffer entnommen werden). Der Funktionsbaustein muss in der BAdI-Methode MATERIAL_REFCHANGE_OTHER_DATA aufgerufen werden.

Beispiel

WRPP_REFCHANGE und WRPL_REFCHANGE.

Es müssen auch Daten, die über einen Wechsel des Gültigkeitsbereichs neu eingelesen werden (also zum Zeitpunkt des Durchreichens noch nicht im Puffer waren), an die eventuelle Änderung angepasst werden (Beispiel: Daten von abhängigen Werken werden an die Daten des Vorlagewerks angepasst. Es werden nur die Werke angepasst, für die sich die Daten im Puffer befinden, alle anderen werden erst im Buchen angepasst. Werden jetzt Daten zu einem Werk eingelesen, das zuvor noch nicht im Puffer war, so müssen die Daten für dieses Werk an das Vorlagewerk angepasst werden). Diese Logik sollte von dem entsprechenden Funktionsbaustein zur Erstellung des Vorschlags mit erledigt werden (Unterscheidung zwischen Vorschlag erstellen oder Durchreichen).


Beispiel

WRPP_GET_REFERENCE und WRPL_GET_REFERENCE

 

Wenn die Ebene, auf der die neuen Daten gepflegt werden, zu einer bereits existierenden Ebene gehört, auf der bereits Abweichungen geschrieben werden, dann müssen die neuen Daten in die Logik der Abweichungszeiger integriert werden. Dazu muss ein Funktionsbaustein erstellt werden, der in der BAdI-Methode MATERIAL_GET_DIFFERENCES_OD_RT aufgerufen wird und angibt, ob für die gerade gepflegten Daten (Zwischenpuffer) eine Abweichung zu den Vorlagen vorliegt und wenn ja, auf welcher Ebene.


Beispiel

WRPP_GET_DIFFERENCES, WRPL_GET_DIFFERENCES

 

Für das Anzeigen der Abweichungsgründe wird ebenfalls ein Funktionsbaustein benötigt, der in der BAdI-Methode MATERIAL_DIFFMAINT_ORGLEVS_OD aufgerufen wird und die Felder zurückliefert, in denen eine Abweichung besteht.

Beispiel

WRPP_GET_DIFFMAINT_ORGLEVS und WRPL_GET_DIFFMAINT_ORGLEVS.

Wenn die Ebene, auf der die neuen Daten gepflegt werden, zu keiner der bestehenden Ebenen passt, auf denen Abweichungen geschrieben werden, so muss die Anwendung eigene Abweichungszeiger schreiben und anzeigen.

Verbuchungslogik

Für die Verbuchung der Daten werden drei Funktionen benötigt:

 

Die Funktionsbausteine können die benötigten Daten aus den Puffern der Funktionsgruppe lesen.

Hinweis

Nachdem im Retail-Materialstamm die Funktionen zum Aktualisieren des DB-Standes gelaufen sind (z.B. SET_IMARA_TMARA), dürfen keine neuen Daten in die Materialstammpuffer mehr eingelesen werden, da diese vom Change-Check sonst fälschlicherweise als neu anzulegen erkannt werden. Insbesondere heißt das, dass im Change-Check-Baustein und im Verbuchungsbaustein der integrierten Daten die Puffer des Materialstamms nicht mehr verändert werden dürfen (beim Einlesen neuer Daten wird der logische DB-Stand nicht versorgt und damit werden die Sätze als neu anzulegen erkannt).

Customizing

Folgende Möglichkeiten für die Integration in die Pflegeoberfläche des Materialstamms sind möglich:

Die notwendigen Customizing-Einstellungen zur Integration der neuen Subscreens in den Materialstamms werden durch die Transaktion OMT3 vorgenommen.

Sollen die neuen Subscreens auf ein bestehendes Haupt- oder Nebenbild aufgenommen werden, so ist zu prüfen, ob das Bild noch Platz für einen neuen Subscreen bietet. Dazu wird in die Detailanzeige zum Bild gesprungen; wenn dort ein Subscreen mit der Nummer 0001 (Dummy) auftritt, kann dieser durch einen neuen Subscreen in der entsprechenden Funktionsgruppe ersetzt werden. Ist kein freier Subscreen auf dem Bild vorhanden, muss geprüft werden, ob das Trägerdynpro zum Bild eventuell geändert werden kann (das Trägerdynpro enthält eine bestimmte Menge von Platzhaltern für einzubindende Subscreens; Trägerdynpros zum Industrie-Materialstamm sind in der Funktionsgruppe MGMM, zum Retail-Materialstamm in der Funktionsgruppe MGMW zu finden).

Die Entscheidung, ob ein neues Bild als Haupt- oder als Nebenbild eingebunden wird, wird bei Anlegen eines neuen Bildes über die Einstellung des Bildtyps getroffen. Handelt es sich um ein Hauptbild, so kann die Reihenfolge, in der die Hautbilder durchlaufen werden, eingestellt werden. Handelt es sich um ein Nebenbild, so kann entschieden werden, ob das Bild über eine Drucktaste oder über das Menü Zusätze aufrufbar ist. Ins Menü Zusätze gehören normalerweise nur die Funktionen, die für alle Bilder relevant sind. Alle anderen sollten als Drucktasten realisiert werden.

Bei Aufruf über Menü Zusätze wird dem Nebenbild automatisch ein Funktionscode ZUXX zugeordnet. Entsprechend wie beim Hauptbild kann die Reihenfolge eingestellt werden, in der die Zusatzbilder im Menü aufgeführt sind (aus der Reihenfolge wird der Wert XX bestimmt).
Bei Aufruf über Drucktaste, muss dem Nebenbild der Funktionscode der Drucktaste zugeordnet werden. Die Drucktaste muss entsprechend wie ein neues Feld auf irgendeinem neuen oder bestehenden Bild untergebracht werden (Drucktaste mit Funktionscode auf Subscreen in der eigenen Funktionsgruppe legen; den Subscreen auf einem Bild aufnehmen). Drucktasten-Funktionscodes müssen mit PB beginnen und eindeutig sein, PB9* ist für kundeneigene Drucktasten reserviert. Der Name der Drucktaste sollte zur Erkennung den Namensteil ‚PUSH‘ enthalten.

Generell soll für jedes Nebenbild eine OKCODE-Routine erstellt werden, unabhängig davon, ob das Bild in der Bildsequenz als Zusatzbild oder über Drucktaste aufgerufen wird. Die OKCODE-Routine ist in der eigenen Funktionsgruppe zu implementieren. Für den Aufruf der OKCODE-Routine muss mittels der BAdI-Methode SET_PROGRAM_FOR_OKCODE_ROUTN der Name des eigenen Programms der Ablaufsteuerung des Materialstammes bekannt gemacht werden.

Die OKCODE-Routine wird dem Nebenbild in der OMT3 zugeordnet. Bei vollständiger Integration enthält die OKCODE-Routine in der Regel nur die Prüfung, ob die integrierten Daten überhaupt gepflegt werden dürfen (s.u.).

Achtung

Es ist zu beachten, dass der Benutzer die Standardeinstellung (Zusatzbild oder Drucktaste) über OMT3 jederzeit ändern kann (gegebenenfalls muss er dafür eine eigene Drucktaste auf einem kundeneigenen Subscreen definieren und den Drucktasten-Funktionscode dem Nebenbild zuordnen). Durch die OKCODE-Routine, die dem Nebenbild zugeordnet ist, ist aber immer sichergestellt, dass die notwendigen Prüfung bei Aufruf des Nebenbildes ablaufen. Will der Benutzer gewisse Drucktasten nicht in der Pflege sehen, so entfernt er die entsprechenden Subscreens (mit der Drucktaste) für seine Bildsequenz bzw. erzeugt seine eigenen Subscreens ohne die jeweiligen Drucktasten.

Aus der Steuerungsmöglichkeit des Benutzers ergibt sich, dass weder auf die Funktionscodes der Zusatzbilder noch auf die Funktionscodes der Drucktasten programmiert werden darf!

In Ausnahmen kann ein Nebenbild sowohl über Drucktaste als auch über Menü angewählt werden (z.B. Verbrauchswerte).

 

Zur Prüfung, ob die zu integrierenden Daten überhaupt gepflegt werden dürfen, muss ein Prüfbaustein erstellt werden. Dieser Baustein wird an mehreren Stellen verwendet

 

Teilweise Integration

Bei der teilweisen Integration ist die Pflege der Daten nur innerhalb eines eigenen Nebenbildes möglich. Das Nebenbild kann entweder über das Menü Zusätze oder über eine Drucktaste geöffnet werden

Im Unterschied zur vollständigen Integration sind diesen Nebenbildern nicht über die OMT3 entsprechende Subscreens zugeordnet, sondern das Dynpro, das bei Aufruf des Nebenbildes erscheint, ist ein fixes Dynpro, das nicht vom Benutzer bezüglich seiner Darstellung beeinflusst werden kann. Insbesondere hat das Bild einen eigenen GUI-Status, der vom GUI-Status der Materialstammbilder abweicht. Entsprechend kann von diesem Bild auch nicht direkt auf andere Bilder des Materialstamms gesprungen werden.

Technisch ist die Realisierung solcher Nebenbilder völlig gekapselt. Der Aufruf des Bildes erfolgt über die OKCODE-Routine, die dem Bild zugeordnet ist.

Erstellung des Rahmens

Auch bei der teilweisen Integration werden die benötigten Dynpros und die zugehörigen Funktionen in einer eigenen Funktionsgruppe entwickelt. An diese Funktionsgruppe werden aber keine speziellen Anforderung gestellt wie bei der vollständigen Integration.

Dynprologik

Generell gilt, das sich die Anwendung trotz der Kapselung bei teilweiser Integration nach Möglichkeit an die Vorgehensweise und Funktionalität des Materialstamms annähern sollte.

Im folgenden werden die wesentlichen Punkte für die Dynprologik noch mal kurz aufgeführt.

Verbuchungslogik

Für die Verbuchungslogik gilt das gleiche wie bei der vollständigen Integration. Ein eigener Verbuchungs-Funktionsbaustein ist nur erforderlich falls die Verbuchung nicht per ‚perform on commit‘ gestartet wird. Empfehlenswert ist aber auch in diesem Fall die Feststellung der Änderung über einen eigenen Funktionsbaustein (CHANGE_CHECK).

Customizing

Für die Einstellungen der OMT3 gilt das oben Gesagte. Bei der Teilweisen Integration ist aber nur eine Integration als eigenes Nebenbild möglich.

 

Datenübernahme/Datenverteilung

Die Übernahme und Verteilung der neuen Materialdaten erfolgt über ALE und entsprechende IDocs (ab 4.0A über BAPIs). Die benötigten IDocs, sowie Funktionen zum Erstellen, Einbuchen und manuellen Senden von IDocs sind von der jeweiligen Anwendung zu erstellen. Auch für die benötigten ALE-Customizing-Einstellungen hat die Anwendung zu sorgen (Änderungspointer, etc.).

Durch die vom ALE bereitgestellte Serialisierung von Nachrichtentypen wird das Einbuchen im Zielsystem in der richtigen Reihenfolge sichergestellt (zuerst das Material, dann die abhängigen Objekte). Hierfür sind entsprechende Customizing-Einstellungen zu erstellen.

Für das manuelle Senden von Materialdaten wird ein Funktionsbaustein benötigt, dem eine Liste von Materialien übergeben werden kann und der dann die entsprechenden IDocs erstellt. Dieser Funktionsbaustein ist in der BAdI-Methode MG_IDOC_CREATE_FULL_MAT (Industriefall) bzw. MG_IDOC_CREATE_FULL_ART (Retailfall) zu integrieren und wird aufgerufen, wenn ein Material vollständig versendet werden soll.

 

Reorganisation/Auslistung und Archivierung, Löschvormerkungen

Die Reorganisation bzw. Auslistung von integrierten Daten erfolgt mit Hilfe von entsprechend erforderlichen Funktionsbausteinen in den Reorganisationsprogrammen des Materialstamms. Dazu werden folgende Funktionsbausteine für die zu integrierenden Tabellen benötigt:

Dazu können die Methoden des BAdIs BADI_MM_MATNR genutzt werden. Für weitere Informationen wird auf die Dokumentation des BAdIs verwiesen.

Wenn auf Ebene der zu integrierenden Daten eigene Löschvormerkungen benötigt werden, ist eine Funktion zum Setzen von Löschvormerkungen bereitzustellen. Hierbei ist zu beachten, dass im Materialstamm die Löschvormerkungen von der Materialebene an die abhängigen Objekte weitergereicht werden. Entweder muss bei eigenen Löschvormerkungen das neue Objekt in diese Durchreichelogik integriert werden, oder bei es müssen bei Prüfung der Löschvormerkung für das integrierte Objekt die entsprechenden hierarchisch darüberliegenden Löschvormerkungen abgefragt werden.

In der Regel werden die Löschvormerkungen für das Material ausreichen.

 

Änderungsbelege schreiben und anzeigen

Zur Dokumentation der Änderung von Daten werden bei jeder Veränderung einzelner Felder einer Tabelle im Regelfall Änderungsbelege fortschreiben. Dazu muss für die Tabelle ein Änderungsbelegobjekt erzeugt werden. Das Erstellen der Änderungsbelege geschieht im anwendungsspezifischen Verbuchungsbaustein durch den Aufruf der durch das System generierten Form-Routine.

Zum Anzeigen der Änderungsbelege muss ein entsprechender Report entwickelt werden.

 

 

Ende des Inhaltsbereichs