Ablaufbeschreibung:
Der ABAP-Report [Y_MMPUR0] stellt die Selektionsbereiche [Änderungsbelege] und/oder [Bestellanforderung(en)] zur Verfügung. Die Selektion im Bereich [Änderungsbelege] ist für die wiederkehrenden Läufe gedacht. Die Selektion [Bestellanforderungen] ist auf einen eventuellen Initiallauf oder für Wiederholungen vorbereitet.
Der tägliche Job [MM BESTELLUNG AUS BANF PROTOKOLL] läuft um 01:00 Uhr Nachts und selektiert über die Variante [….0001] alle Bestellungen vom Vortag, die mit der Transaktion [ME21N] zu einer Bestellanforderung erstellt wurden. Die relevanten Empfänger können mit der Transaktion [SM30] zur Tabelle [YMMPUR0] voreingestellt werden. Derzeit erhalten die Ersteller der Bestellanforderung die Email direkt selbst. Eine Änderung der Email Empfänger ist jederzeit und/oder nach Einplanung zum jeweiligen Datum möglich.
Anforderung:
Die/der Ersteller(in) einer Bestellanforderungen [BANFer] soll per Email informiert werden, wenn ihre/seine BANF in eine Bestellung umgewandelt wurde.
Grundsätzlich:
Modifikationen sollten vermieden werden.
Lösungsansatz:
Der Zeitpunkt der Umwandlung festhalten
Dazu bieten sich Erweiterungen aus der Transaktion [SMOD] an. Mit der Kundenerweiterung [MM06E007] kann man veranlassen, dass automatisch Änderungsbelege angelegt werden, wenn aus einer Bestallanforderung eine Bestellung wird. Dazu legt man mit der Transaktion [CMOD] ein Projekt [Y_MMPUR0] an und ordnet die Erweiterung [MM06E007] zu.
An dieser Stelle ruft man die Dokumentation zur Erweiterung [Strg+F4] auf:
Beschreibung
Sie können diese Erweiterung nutzen, wenn bei der Umsetzung einer Bestellanforderung in einen Einkaufsbeleg (z.B. in eine Anfrage oder Bestellung, einen Kontrakt oder Lieferplan) ein Änderungsbeleg für die Bestellanforderung erstellt werden soll. (Im Änderungsbeleg steht u.a. der Erfasser der Einkaufsbelegs.) Vorgehen Setzen Sie im Funktionsexit EXIT_SAPMM06E_020 den Changing-Parameter C_CHANGEDOC_FOR_REQ auf ‚X‘. Wenn der Änderungsbeleg nur bei bestimmten Einkaufsbelegen erstellt werden soll, fragen Sie den Bestelltyp über I_EKKO-BSTYP ab: A Anfrage F Bestellung K Kontrakt L Lieferplan Hinweis Beachten Sie, daß sich die Aktivierung dieser Erweiterung negativ auf die Performance auswirkt. |
Unter den Komponenten steht dann der Funktionsbaustein [EXIT_SAPMM06E_020] für die Ausprägung zur Verfügung. Dazu muss der INCLUDE [ZXM06U50] angelegt werden. Erst mit der Implementierung und Aktivierung werden die Änderungsbelege erzeugt.
Zeitpunkt zum Versenden der Emails
Für diese wiederkehrende Aufgabe bieten sich Batch-Prozesse [JOBS] an. Dazu legt man ein ABAP-Programm und eine passende Variante für die Selektion der Daten an. Starttermin und Wiederholung kann sehr flexibel festgelegt werden.
Selektion der Daten über Änderungsbelege
Die Änderungsbelege werden in der Tabelle [CDHDR] abgelegt. Beispiele erhält man mit der Transaktion [SE16N] auf die Tabelle [CDHDR] zur [OBJECTCLAS] [BANF] und [TCODE] [ME21N]. Aus den Feldern [OBJECTID], [USERNAME] und [UDATE] können dann Rückschlüsse auf die BANF, die User-ID des Erfassers der Bestellung und das Datum gezogen werden. In der Tabelle der Bestellanforderungen [EBAN] findet man die User-ID [ERNAM] des Erstellers. Die Felder [EBELN] und [EBELP] aus der Tabelle [EBAN] zeigen auf die erstellte Bestellung und Bestellposition.
Selektion der Bestellanforderungen direkt
Die Bestellanforderungen sollen auch die direkt aufgerufen werden können. Die Selektion über die Änderungsbelege steht erst ab der Aktivierung der Erweiterung zur Verfügung.
Ermittlung der Email-Adresse
Die Email Adresse einer User-ID steht in der Tabelle [ADR6]. Dazu muss vorher die Tabelle [USR21] zur User-ID gelesen werden. Die Felder [PERSNUMBER] und [ADDRNUMBER] bieten hier die Verknüpfung.
Hier ergeben sich mehrere Probleme:
- Wie steuert man mehrere Emails an?
- Was passiert, wenn BANFer keine Emails erhalten will?
Daher wurde eine Konfigurationstabelle [YMMPUR0] der Email Adressen erstellt:
Feld | Key | Initial | Datenelement |
MANDT | X | X | MANDT |
BNAME | X | X | XUBNAME |
SMTP_ADDR | X | X | ADSMTPADR |
VALID_FROM | X | X | AD_VALFROM |
VALID_TO | AD_VALTO | ||
AKTIV | FLAG |
Die Tabelle [YMMPUR0] wird automatisch gefüllt und kann mit der Transaktion [SM30] nachgepflegt werden. Nachdem die Tabelle [YMMPUR0] die Email-Adresse als Schlüsselfeld hat, können zu einer User-ID mehrere Email-Adressen angelegt werden. Das Feld [Aktiv] zeigt an, ob an diese Email verschickt werden soll oder nicht. Über die Felder [VALID_FROM] und [VALID_TO] können Konfigurationen vorbereitet werden, die erst ab einem bestimmten Tag gültig sind.
Erstellen und Versenden der Emails
Hierzu stehen die Methoden der Klasse [CL_BCS] [Business Communication Service] zur Verfügung.