Hallo zusammen,
ich verzweifle gerade etwas mit dem Badi ME_PROCESS_REQ_CUST (ein ähnliches ist das Badi ME_PROCESS_PO_CUST).
Für Bestellanforderungen ohne Materialnummer (kontierte Banf) soll die Einkäufergruppe aufgrund der Warengruppe ermittelt werden. Das tut auch alles prima.
Nun habe ich zwei drei Situationen, in denen der Anwender eine Message erhalten soll wie z.B. "Einkäufergruppe && autom. ermittelt".
Mein Problem ist, dass das Badi mehrfach durchlaufen wird. Im SAP Hinweis 1709562 steht deshalb zu diesem Problem:
"Das bedeutet, dass Sie, um ein konsistentes Messaging während PROCESS zu erreichen, Ihren Quelltext so gestalten müssen, dass die Meldung immer ausgegeben wird, wenn die von Ihnen definierten Kriterien erfüllt sind. Nicht nur beim ersten Mal."
Beim zweiten Durchlauf ist die Einkäufergruppe durch den vorhergehenden Durchlauf ersetzt und deshalb meine Message wieder initalisiert. D.h. die Kriterien sind nicht mehr erfüllt und die Message wird erst nach dem letzten Durchlauf des Badi ausgegeben.
D.h. mit einer Variablen funktioniert es nicht. Ich habe zuletzt versucht mit einer memory id den Zustand "zu merken". Aber da komme ich auch nicht weiter.
Das BADI ME_PROCESS_REQ_CUST sollte als Singleton instanziiert werden. D.h., eine Instanzvariable behält ihren Wert zwischen dem ersten, zweiten und x-ten Durchlauf. Eine Instanzvariable sollte genügen, um den Zustand zwischen dem ersten und dem x-ten Durchlauf zu sichern.
Hallo jocoder,
danke für deine Antwort. Da ich nicht so tief in Abap OO bin und ich jetzt nicht wüsste, wie ich das Badi als Singleton instanziiere habe ich eine andere Lösung gefunden.
Ich habe eine Funktionsgruppe mit einer globalen Variablen angelegt und dazu zwei Funktionsbausteine zum Setzen und Lesen der Variablen. Das funktioniert jetzt gut.