Programmfehler bei mehrmaliger Verwendung

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).

Programmfehler bei mehrmaliger Verwendung

Postby Jana2149 » Fri Oct 26, 2012 10:01 am

Guten Tag!

Ich habe einen Report in ABAP OO programmiert, der beim ersten Mal ausführen auch funktioniert, beim zweiten Mal kommt es zu einem Fehler. Da ich ein Neuling bi, was ABAP OO angeht, habe ich keinerlei Ahnung, wie ich das Problem lösen kann und möchte daher nun hier die Frage stellen.

Mein Einstiegspunkt ist ein SELECTION-SCREEN, der bei entsprechender Eingabe einer Materialnummer ein Dynpro aufruft, dass über zwei ALVs verfügt. Das Programm funktioniert bis zu diesem Zeitpunkt. Wenn ich nun aus dem Dynpro herausgehe (z.B. mit F3) gelange ich wieder zum SELECTION-SCREEN. Wenn ich nun wieder das Dynpro aufrufe, habe ich nun das Problem, dass wenn ich Zeilen im ALV mittels GET_SELECTED_ROWS der CL_GUI_ALV_GRID Klasse auswähle, diese nicht selektiert werden. Die zurückgegebene Tabelle ist leer.

Woran kann das liegen? Kann ich nicht zum Zeitpunkt PAI des Dynpros nicht alles wieder initial setzen? Ich setze zudem SCREEN 0, kann es auch damit zusammenhängen? Was müsste ich alles neu initialisieren?


Freundliche Grüße
Jana2149
..
..
 
Posts: 44
Joined: Wed Jun 29, 2011 12:06 am

Re: Programmfehler bei mehrmaliger Verwendung

Postby Erik411 » Mon Oct 29, 2012 10:07 am

Hallo jabap,

hier wären Codeschnipsel sehr hilfreich.
Dynpro mit 2 ALVs: Hast du die in einen (Splitter-, Docking-, etc.)Container gelegt? Baust du die Controls und die Referenzen ab, wenn du den Funktionscode "BACK" auswertest?
Post einfach mal das relevante Coding...

Gruß, Babba
Erik411
.
.
 
Posts: 8
Joined: Mon Oct 29, 2012 9:09 am

Re: Programmfehler bei mehrmaliger Verwendung

Postby Jana2149 » Mon Oct 29, 2012 10:48 am

Ich kann möglicherweise mein Problem etwas spezifizieren.
Wenn ich mit F3 mein Dynpro verlasse, dann wieder aufrufe, habe ich noch den selben Zustand des Dynpros, wie vor betätigen der F3 Taste. Vllt. etwas anschaulicher: Ich verwende einen Splitter-Container, welcher eine horizontale Trennlinie hat. Wenn ich das Programm das erste mal aufrufe, ist nur das obere ALV initialisiert. Wähle ich eine Zeile im oberen ALV, initialisiert sich auch das untere ALV. Wenn ich nun mit F3 zurück gehe und mit F8 anschließend das Programm wieder starten möchte, so sind bereits beide ALV initialisiert.
Mein Objekt, welches den Screen initialisiert, gebe ich im Event PAI beim Verlassen des Bilschirms jedoch frei (mit FREE this.).

Wie schaffe ich es nun also, dass nach "LEAVE TO SCREEN 0." und freigeben des Objektes das Dynpro neu initialisiert/aufgebaut (?) wird?


Viele Grüße
Jana2149
..
..
 
Posts: 44
Joined: Wed Jun 29, 2011 12:06 am

Re: Programmfehler bei mehrmaliger Verwendung

Postby Erik411 » Tue Oct 30, 2012 9:32 am

Hallo Jabap,

ich schreibe im PBO immer so etwas in der Art:
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. IF gr_container IS NOT BOUND.
  2.   CREATE OBJECT gr_container
  3.   (...)
  4.  
  5.   CREATE OBJECT go_alv
  6.   (...)
  7.   go_alv->set_table_for_first_display
  8.   (...)
  9.   go_alv->refresh_table_display( ).
  10.  
GeSHi ©

Im PAI bei Exit-Commands wie 'BACK' dann das hier:
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. *> Containerdaten abbauen
  2.   go_alv->free( ).
  3.   gr_container->free( ).
  4.  
  5. *> Flushen, wie in Report BCALV_TEST_GRID_EVENTS
  6.   CALL METHOD cl_gui_cfw=>flush.
  7.  
  8. *> Eventhandler löschen
  9.   CLEAR:
  10.     go_alv_handler.
  11. *> Container abbauen
  12.   CLEAR:
  13.     go_alv,
  14.     gr_container.
  15.  
GeSHi ©

Man(n) :) sollte neben den Destruktoren free( ) der Controls auch ggf. die Referenzen abbauen.
Wenn du jetzt das Trägerdynpro mit dem Splitter-Container neu aufrufst, müsste es sich korrekt verhalten.

Gruß, Babba
Erik411
.
.
 
Posts: 8
Joined: Mon Oct 29, 2012 9:09 am

Re: Programmfehler bei mehrmaliger Verwendung

Postby Jana2149 » Tue Oct 30, 2012 9:05 pm

Läuft! Danke :D
Jana2149
..
..
 
Posts: 44
Joined: Wed Jun 29, 2011 12:06 am


Return to ABAP Objects®

Who is online

Users browsing this forum: No registered users and 8 guests

cron