ich benutze den BAdi ME_GUI_PO_CUST um auf Kopfebene eine Übersicht über die Anzahl der auf Positionsebene vorhandenen DMS-Dokumentenanhänge anzuzeigen.
Da die Logik des BAdi nur einen Screen pro Kopf oder Item zuläßt, übergebe ich die Daten in einer tiefen Struktur. Diese Daten werden dann über einen ALV (CL_SALV_TABLE) in einem Custom Control zur Anzeige gebracht.
Beim Neuaufruf der ME2xN funktioniert auch alles.
Starte ich via ME23N mit einer Bestellung mit Anhängen und rufe direkt über 'Andere Bestellung' eine ohne Anhänge auf oder in den Anlegemodus, bleiben im ALV die Daten der ersten Bestellung erhalten.
Die Logik des Subscreens ist über eine Funktionsgruppe realisiert, welche im BAdi ME_PROCESS_PO_CUST, Methoden INITIALIZE, OPEN und auch CLOSE die globalen Daten der Funktionsgruppe zurücksetzt.
Hat jemand eine Idee, woran dieses liegen könnte und wie ich dieses korrigieren kann?
Hi Stefan,
meine Vermutung ist, dass du den ALV erneut erzeugst, aber den alten nicht komplett löschst. Dadurch wird weiterhin der alte angezeigt und der neue liegt "darunter".
Du kannst das prüfen, indem du dir beim zweiten Aufruf vom Custom-Container mal das Attribut "CHILDREN" anschaust. Wenn meine Vermutung stimmt, dann sind hier zwei Einträge vorhanden.
Es kann aber auch sein, dass du den Custom-Control zweimal erzeugst.
sowohl Container wie auch das ALV-Objekt sind initial.
Beide Objekte werden im PO-BAdi beim Schließen initialisiert (clear und free) und beim Öffnen einer neuen (egal ob Wechsel zu einer bestehenden oder Neuanlage) auch noch einmal.
Es sieht aus, als ob das MM_MODEL die Daten noch irgendwo hält. Wo auch immer.
Wirf sicherheitshalber mal einen Blick in CL_GUI_CONTAINER=>SCREEN0->children
U.U. gibt es ein Problem, wenn du in einer Transaktion einen Custom-Container zu einem Dynpro mehrmals erzeugst.
Evtl. den Custom-Container nicht löschen, sondern wiederverwenden.
Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag: stpa1708
das war's.
Ich habe mir die Variable mal ausgeben lassen im PBO. Interessant ist, dass beim 1. Durchlauf bereits ein custom_container enthalten war, allerdings namenslos. Wo der her kommt/ kam, ist mir schleierhaft. Oder das System macht vorab ein loop über den Screen (im Model) und schreibt den Container als reines Dynpro-Element mit in die Liste.
Anschließend wurde dann, wenn Daten da waren, mein definierter Container gesetzt.
Anstatt free <object> habe ich den Container jetzt mit <object>->free( ) plattgemacht, wenn ein Wechsel der Bestellung bzw. eine Neuanlage erfolgt. Und damit sind die Daten dann auch vom Screen weg.
Da ich mich im Detail mit diesen Containern noch nie besschäftigt habe, wäre ich da nie drauf gekommen.