ich habe folgendes Anliegen und hoffe, Ihr könntet mir Auskunft geben:
Um einen umfangreichen Budgetbericht zu erstellen, habe ich zwei Dynpros angelegt. Eines für die Datenselektion (Felder Für Projektdef. + PSP-Elemente + Geschäftsjahr --> alle mit Bezug zum Dictonary) und eines, um die Daten mit ALV ausgeben zu können.
Alles funktioniert soweit wie gewünscht, nur leider folgendes nicht:
Wenn das Dynpro 200, auf dem die Ausgabe stattfindet, verlassen wird, und der Bericht neu gestartet wird (mit anderen Selektionswerten), wird das Ergebnis der ersten Eingabe wieder angezeigt. Ich habe schon versucht den Container mit einer entsprechenden Methode zu "refreshen" (möglicherweise mache hier was falsch), hilft aber aber leider auch nicht. Im Debug sieht es ganz so aus, und zwar dass die geänderten Parameter richtig übergeben werden.
Vermutlich legts du bei jedem Aufruf des Dynpros eine neue Instanz des ALV-Grid an, anstatt die bereits vorhandene Instanz weiter zu verwenden. Es wird im CFW(GUI) immer nur die erste Instanz eines Controls in einem Container angezeigt.
Du muss im PBO pürfen ob der Container/das Grid nocht nicht instanziert wurden (IS NOT BOUND oder IS INITIAL) und nur in diesem Fall dürfen die Instanzen angelegt werden.
Das Grid selbst kann man dann entweder mit SET_TABLE_FOR_FIRST_DISPLAY (Die komplette Datnstruktur hat sich geändert) immer mit allen Daten versorgen oder man ruft nur das REFRESH_TABLE_DISPLAY (wenn sich die Struktur der Daten nicht verändert hat) auf.
lg ADT
Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag: Ingo
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.
Danke für die schnelle Antwort! Das ist es leider nicht... das habe ich bereits so gemacht. In diesem Falle macht es auch keinen Unterschied, ob die Prüfung auf die Instanz im Coding steht oder nicht. Im Prinzip will ich ja das Gegenteil erreichen:
Ich möchte bei Betätigen der BACK-Taste (im Dynpro 200) wieder in die Parameter-Selektion springen (Dynpro 100) und das ALV dann mit anderen Werten befüllen. Wie lösche ich das ALV bei Verlassen des Dynpros wieder? Bei mir scheint die Reihenfolge auch nicht korrekt zu sein. Die Datenbankabfragen standen im PBO unter der Objekterzeugung.
Jetzt habe ich Sie darüber angeordnet. Dann erhalte ich doppelte Datensätze (also altes Ergebnis + neues Ergebnis).
Ich hoffe, es ist einigermaßen verständlich, was ich meine.
also in deinem Dynpro 200 - deb Back Button als Exit Button einstellen
- dann ein Mudole user_command_0200 at exit command
- da dann den Funktionscode prüfen und deine ALV reference einfach mit clear oder free zerstören und die interne Tabelkle clearen und dann zurück zu Dynpro 0100
- dort dann die SO wieder neu bestücken - weiter in Dynpro 0200 die Daten neu selektieren die ALV Instanze prüfen ob vorhanden - sollte natürlich da nicht mehr sein und daher neu aufbauen und die Daten mit ....set_for_first_display wieder anzeigen
oder einfacher
- einen Report mit Select Options
- daten selektieren in interne Tabelle
- daten mit CL_SALV_TABLE einfach ausgeben - brauchst so kein eigenes Dynpro etc.
Gruss Jens
Folgende Benutzer bedankten sich beim Autor jensschladitz für den Beitrag: Ingo
Und zwar: An das ALV übergebene ITAB beim BACK-Button (war schon als EXIT definiert) gelöscht, die Objekterzeugung im PBO stand vor meiner Datenaufbereitung, das war falsch...