Wir haben konfigurierbare Halbzeuge. Hier werden automatisch BANFE bei Bedarf angelegt.
Unser Einkauf fasst diese BANFE dann zu einer Bestellung zusammen, wenn es sich um einen bestimmten
Lieferanten handelt. Beim Erfassen der Position in der Bestellung haben wir im Hintergrund
für jede Position eine eigene Kalkulation laufen. Hier werden dann die gesamten Komponenten in einer Schleife des
Halbzeugs durch verschiedene Kriterien extra nochmal kalkuliert. Dazu benutzen wir unter anderen
den Funktionsbaustein "CK_F_MATERIAL_CALC".
Nun hatten wir den Fall dass wir zwei BANFE eines Halbzeugs mit der gleichen Materialnummer und
auch Unterkomponenten hatten. Der Preis für die Position 10 (BANF Nummer 1) wird normal ermittelt. Wenn nun der
Preis Position 20 (BANF 2) ermittelt werden soll und dann die erste Komponente des Halbzeugs durch den Baustein
"CK_F_MATERIAL_CALC" aufgerufen wird, bricht dieser komplett ab. Bringt auch keinen Fehler zurück, sondern springt
an den Aufruf zurück und ermittelt dadurch natürlich keinen Preis.
Die Ermittlung der Preise haben wir in der Klasse CL_IM_ME_PROCESS_PO_CUST implementiert.
Kann es sein, dass durch die ersten Aufrufe des Bausteins "CK_F_MATERIAL_CALC" noch irgendwas im Memory von der
ersten Kalkulation ist? Die Kalkulationen der Position 10 nicht abgeschlossen sind.
Vielleicht hatte jemand schon mal etwas ähnliches!? Weiß leider nicht mehr weiter.
hab bis jetzt leider noch keine Antwort hier erhalten.
Es werden aber tatsächlich diverse Daten im Speicher gehalten. Meine zweite Frage lautet nun:
Gibt es einen Baustein, der den Memory der vorherigen Kalkulation löscht? Nach Kalkulation der einzelnen Komponenten des ersten Geräts wird je nachdem ob das Gerät konfigurierbar ist oder nicht der Baustein "CK_F_CONFIGURATION_CALC" (CU50) aufgerufen. Wenn dann die zweite Position (zweites Gerät) der Bestellung kalkuliert wird, greift die neue Kalkulation auf alte gespeicherte Daten zu und bricht ab.
Meine Idee war nun, nach Aufruf des Bausteins "CK_F_CONFIGURATION_CALC" einen Baustein aus dieser FktGruppe aufzurufen, der alle Daten der ersten Kalkulation löscht. Gibt es so einen Baustein? Hab schon ein paar gefunden. Diese löschen aber nur vereinzelte Strukturen/Itabs etc. Aber im Endeffekt soll die Kalkulation abgeschlossen sein und neu kalkuliert werden können.
Dieser Baustein wird ja sowieso immer am Anfang der Kalkulationsbausteine CK_F_CONFIGURATION_CALC und CK_F_MATERIAL_CALC aufgerufen. Bringt aber leider nichts.
evtl. die Kalkulationsbausteine als RFC-FuBa aufrufen ( DESTINATION NONE ) und vorher die RFC-Schnittstelle zurücksetzen ( ich glaube das geht mit "RFC_CONNECTION_CLOSE" )