User-Exit-Makros für die Absatzplanung

Feature | 4. Oktober 2005 von admin 0

Anwender sehen sich im Planungsprozess oft zahlreichen komplizierten Situationen gegenüber: So kann es zum Beispiel sein, dass Kennzahlwerte in der Planungsmappe angepasst werden müssen oder dass ein Kennzahlwert ermittelt werden muss, um einen anderen berechnen zu können. Für solche Fälle lässt sich einfach die Standardmakrofunktionalität nutzen. Doch es gibt auch komplexere Szenarios, in denen Standardmakros nicht die gewünschten Ergebnisse liefern. Dies ist zum Beispiel der Fall, wenn die Bestellnummer für einen Zellenwert aus dem Live-Cache ermittelt und mit Hilfe einer komplexen Formel für Alerts oder die Anpassung der Prognosedaten verwendet werden soll. Die Erstellung eines User-Exit-Makros ist eine der Möglichkeiten, dieses Problem zu lösen. In einem User-Exit-Makro wird die Tabellenstruktur der Planungsmappe übergeben. Der Zellenwert einer Kennzahl kann der Tabellenstruktur entnommen und auf verschiedene Weise zum Schließen der Lücken verwendet werden.

Schritte zur Erstellung eines Makros

Das folgende Beispiel erläutert, wie ein User-Exit-Makro auf der Grundlage bestimmter Vorlagen entwickelt wird. Es geht um ein Automobilwerk, in dem ein Einkäufer eine große Anzahl von Bestellungen für eine Komponente erteilt hat. Der Einkäufer setzt SAP Advanced Planning and Optimization für die Planung ein. SAP APO generiert Standard-Alerts, wenn irgendeine Verzögerung durch den Hersteller auftritt. Doch der Einkäufer weiß nicht, welche der Bestellungen fällig ist. Er muss deshalb im Alert auch die Nummer der fälligen Bestellung erhalten. Hierfür lässt sich ein User-Exit-Makro verwenden. In diesem Fall ist der Code des Produktionswerks 1200, die Codes der Ziellager sind 1300 und 1400, und die Produktcodes sind 100-500 und 100-501.
Für die Erstellung des User-Exit-Makros sind einige Schritte erforderlich. In diesem Beispiel wird davon ausgegangen, dass mySAP SCM 4.0 oder eine höhere Version verwendet wird. Der Prozess beginnt mit der Makro-Workbench, die der Anwender über den Menüpfad Absatzplanung – Umfeld – Laufende Einstellungen – Makro Workbench aufruft. Dann selektiert er die Planungsmappe, für die er das User-Exit-Makro erstellen möchte. Nach erfolgtem Aufruf der Makro-Workbench kann er die User-Exit-Makro-Drucktaste per Drag&Drop aus dem oberen linken Bildbereich in den Arbeitsbereich ziehen und das Makro mit einem geeigneten Namen bezeichnen. Möchte ein Anwender viele User-Exit-Makros erstellen, muss er deren Namen sorgfältig auswählen, da diese die Ausführung des Codes beeinflussen– wie im nächsten Abschnitt deutlich wird. Nachdem der Anwender das Makro gespeichert hat, verlässt er die Workbench und aktiviert das User-Exit-Projekt mit Hilfe der Erweiterungskomponente “APODM005”. Hierdurch wird ein User-Exit-Funktionsbaustein namens “EXIT_/SAPAPO/SAPMMCP6_005” aufgerufen.

Parameter

I_MACRO_NAME: Dieser Parameter übergibt den Namen des Makros und hilft bei der Steuerung, welcher Codeteil verwendet werden soll. Wenn eine große Anzahl von User-Exit-Makros für unterschiedliche Planungsmappen erstellt worden ist, muss die Ausführung der entsprechenden Codes im Exit-Funktionsbaustein durch Auswahl des Namens des jeweiligen User-Exit-Makros verifiziert werden.
Zum Beispiel:
If I_MACRO_NAME = ‘XYZ’.
Code….
Elseif I_MACRO_NAME = ‘ABC’.
Code….
Endif.

Tabellen

T_I_PLOB_VALUES

Details interner Tabellen im Debugging-Modus

Details interner Tabellen im Debugging-Modus

Diese Tabelle enthält die Werte der Datenselektion. Die typischen Werte für eine mit Drill-Down-Funktion geöffnete Mappe im Debugging-Modus sind zu sehen. Durch Doppelklicken auf TMP00000….1 in der Spalte “CHAR_VALUES” werden die Werte der Quell-Ort angezeigt (sofern die entsprechenden Merkmale selektiert wurden). In dem oben erläuterten Beispiel wurde das Merkmal 9ALOCNO als Quell-Ort selektiert, und sein Wert ist 1200. Klickt man nun auf “Selection”, so werden die Merkmale und die zugehörigen Werte entsprechend der Tiefe des Drill-Down angezeigt. Die folgenden Werte werden angezeigt:
9AVERSION: 000, 9AMATNR: 100-500, 9AMATNR: 100-501, 9ALOCNO: 1200.

T_I_LINES

Werte für unterschiedliche Tags

Werte für unterschiedliche Tags

Der Tabelle T_I_LINES können die Zeilenkoordinaten einer bestimmten Zelle entnommen werden. Die wichtigsten Felder sind LINE, KRIT1 und FELDH. In Zeile 1 wird der Tag TMP00000000000001 für die Kennzahl 9AADDKF1 angezeigt – Zeile 1 repräsentiert also die agregierten Werte für die Lokation 1200. In ähnlicher Weise repräsentiert Zeile 42 den Tag TMP00000000000002 für die Kennzahl 9AMANUP. Dies bedeutet, dass Zeile 42 die aggregierten Werte für die Location 1200 und die Ziel-Location 1300 enthält. Auf diese Weise können die Zeilenkoordinaten für die Zellen abgeleitet werden.

T_I_COLS

Diese Tabelle repräsentiert die Spaltenkoordinaten einer bestimmten Zelle. Wenn in dem gewählten Beispiel der Wert der Spalte “COLUMN” zum Beispiel 156 ist und die zugehörige Spalte “PERDY” den Wert “W 21.2005” enthält, so bedeutet dies, dass in Spalte 156 die KW 21/2005 steht. Gleichermaßen ist die Spaltennummer für die KW 33/2005 die 168. Damit ist die Spaltenkoordinate für die Zelle bekannt.

T_C_TAB

Die Tabellen T_I_LINES und T_I_COLS repräsentieren die Zeilen- und Spaltenkoordinaten der Zelle. Für die bekannten Zeilen- und Spaltennummern der Zelle lässt sich nun der Zellenwert in der Tabelle T_C_TAB ermitteln. Die Spalte Z repräsentiert die Zeilennummer, C repräsentiert die Spaltennummer und V repräsentiert den Wert der Zelle.
Als Nächstes soll ein Beispiel aus der Tabelle T_C_TAB bis zur Planungsmappe verfolgt werden. Hierfür sei der erste Eintrag aus der oben stehenden Tabelle gewählt.
Die Werte für die verschiedenen Felder sind: Z = 1, C = 127 und V = 340. Die Woche für Spalte 127 ist der Tabelle T_I_COLS zu entnehmen.

Typische Ansicht einer Planungsmappe

Typische Ansicht einer Planungsmappe

Der Wochenwert für Spalte 127 ist “W 45.2004”. Auf Grund der Tabelle T_I_LINES ist bekannt, dass Zeile 1 für TMP00000000000001 die Kennzahl 9AADDKF1 (“Final forecast after manual adjustment”/”Endprognose nach manueller Anpassung”) repräsentiert. Aus Abbildung 1 (2. Teil) geht klar hervor, dass TMP00000000000001 den aggregierten Wert für die Lokation 1200 repräsentiert. Der Anwender zieht die Planungsmappe zu Rate und verifiziert das Ergebnis. Abbildung 2 ist zu entnehmen, dass sich der Wert für KW 45/2004 und den aggregierten Wert 1200 in der Planungsmappe auf 340 beläuft. Damit lässt sich der Wert nun nach Belieben manipulieren. Wenn der Wert einer Zelle für KW 50/2004 und für Produkt 100-501 geändert werden muss, lässt sich die Tabelle T_I_PLOB_VALUES durchsuchen, um den Wert der “TMP”-Tabelle für die Disaggregation zu ermitteln und anschließend eine Suche in den Tabellen T_I_LINES und T_I_COLS durchzuführen.

Die oben stehende Erörterung verdeutlicht, dass sich Kennzahlwerte anhand von Zeilen- und Spaltenkoordinaten ermitteln lassen. Sobald ein Kennzahlwert bestimmt wurde, können nach Wunsch weitere Berechnungen durchgeführt oder nähere Einzelheiten festgestellt werden. So kann in dem obigen Automobilwerk-Beispiel der Einkäufer mit Hilfe geeigneter Funktionsmodule, welche die entsprechenden Daten aus dem Live-Cache extrahieren, die Nummern der Bestellungen ermitteln. Anschließend kann er diese Daten in Alerts oder für beliebige andere Zwecke seiner Wahl verwenden.

In diesem Beispiel repräsentiert die Tabelle TMP0000000000001 die Werte für die Selektion 1200/100-500 und 100-501, d. h., dass die Zeilenwerte mit dem Tag TMP0000000000001 einen aggregierten Wert für die Lokation 1200 repräsentieren.

Vinayak Oak

Vinayak Oak

Leave a Reply