cl_gui_simple_tree - System friert ein

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

cl_gui_simple_tree - System friert ein

Postby Rachel4283 » Mon Feb 04, 2013 1:58 pm

Hallo Community,

ich habe ein interressantes Problem mit meinem Baum der Klasse cl_gui_simple_tree. Es ist weder ein Syntax-, noch ein Laufzeitfehler mit Kurz-Dump. Mein Modus in dem ich das Programm starte friert einfach ein, d.h. er lädt und lädt und es lässt sich nichts mehr machen, nicht einmal die Transaktion lässt sich abbrechen... ich kann den Vorgang nur noch mit dem Windows Taskmanager killen. Die Möglichkeit, dass ich in einer Endlos-Schleife lande habe ich ausgeschlossen, da der Modus sogar aus dem Debugger heraus an einer bestimmten Stelle des Programms einfriert.
Der Zeitpunkt, zu dem das Programm einfriert, ist am Ende des PBO, nachdem ich meinen Baum komplett aufgebaut habe (ich habe komplett debuged und immer sy-subrc = 0).

Zu erwähnen ist noch, dass ich den Aufbau des Baumes komplett in eine eigene KLasse gepackt habe.
Hier ein Ausschnitt meines Quellcodes:

DATA g_0120_con_tree TYPE REF TO cl_gui_custom_container .
DATA g_0120_tree TYPE REF TO cl_gui_simple_tree .
DATA gt_node_table TYPE treev_ntab .

IF g_0120_con_tree IS INITIAL.
CREATE OBJECT g_0120_con_tree
EXPORTING
container_name = g_container_name. "Der Container Name wird korrekt übergeben
ENDIF.

IF g_0120_tree IS INITIAL.
CREATE OBJECT g_0120_tree
EXPORTING
parent = g_0120_con_tree
node_selection_mode = cl_gui_simple_tree=>node_sel_mode_single
EXCEPTIONS
lifetime_error = 1
cntl_system_error = 2
create_error = 3
failed = 4
illegal_node_selection_mode = 5.
IF sy-subrc <> 0.
MESSAGE a007(/wegos/mit). "kein Abbruch, sy-subrc = 0
ENDIF.

CALL METHOD me->create_node_table. "Private Methode meiner Klasse, die die gt_node_table korrekt füllt (sie enthält keine doppelten node_keys, etc)

CALL METHOD g_0120_tree->add_nodes
EXPORTING
table_structure_name = 'MTREESNODE'
node_table = gt_node_table
EXCEPTIONS
failed = 1
error_in_node_table = 2
dp_error = 3
table_structure_name_not_found = 4
OTHERS = 5.
IF sy-subrc <> 0.
MESSAGE a007(/wegos/mit). "auch hier bricht es nicht ab, sy-subrc = 0
ENDIF.

PROCESS BEFORE OUTPUT.

MODULE 0120_tree. "" hier habe ich meinen Baum aufgebaut

CALL SUBSCREEN mit_gesendet_nachr INCLUDING sy-repid '0121'.

"" hier hängt sich das Programm auf

PROCESS AFTER INPUT.

CALL SUBSCREEN mit_gesendet_nachr.


Ich hoffe ihr versteht das Dilemma. Ohne Kurzdump o.Ä. weiß ich einfach nicht was ich tun soll.
Sehr interressant ist auch noch, dass ohne NODEs das Programm durchläuft und mir einen leeren Baum erzeugt (also wenn ich den Aufruf der Methode g_0120_tree->add_nodes auskommentiere)

Vielleicht ist ja schonmal jemand auf ein ähnliches Problem gestoßen.

Vielen dank schon mal fürs Durchlesen
LG Sebastian
Rachel4283
.
.
 
Posts: 3
Joined: Mon Feb 04, 2013 1:58 pm

Re: cl_gui_simple_tree - System friert ein

Postby Rachel4283 » Wed Feb 06, 2013 1:52 pm

Ich habe das Problem inzwischen in den Griff bekommen. Mein Fehler war folgender:

ich habe gt_node_table von Typ TREEV_NTAB definiert.
DATA gt_node_table TYPE treev_ntab .

Wenn man mal in den Datentyp, bzw in dessen Struktur, reinschaut merkt man, dass es gar kein Feld "text" gibt, das aber in der Struktur 'MTREESNODE' vorhanden ist, das ich dem Aufruf der Methode add_nodes mitgegeben habe.
CALL METHOD g_0120_tree->add_nodes
EXPORTING
table_structure_name = 'MTREESNODE'
node_table = gt_node_table
...

Den einzelnen NODEs konnte ich das feld "text" füllen (andere Struktur) aber beim APPEND an meine gt_node_table wurde das nicht mitgegeben, was wohl zu einer Kollision mit der Struktur 'MTREESNODE' geführt hat.

Lösung: ich habe mir einen Tabellentyp definiert, der als Zeilentyp 'MTREESNODE' hat und dann in meiner Klasse die gt_node_table von diesen Tabelletyp definiert.
gt_node table TYPE mtreesnode_type "mein Tabellentyp

Warum das ganze nicht zu einem Kurzdump geführt hat ist etwas ungewöhlich und hat mir die Fehlersuche erschwert, aber so ist das nunmal^^

LG Sebastian
Rachel4283
.
.
 
Posts: 3
Joined: Mon Feb 04, 2013 1:58 pm

Re: cl_gui_simple_tree - System friert ein

Postby Bianka4768 » Thu Feb 07, 2013 7:02 am

Hallo Sebastian,
ohne selbst mit dem Tree zu arbeiten empfehle ich Dir einmal einen Mini-Tree mit 2 Nodes zu erstellen (definierte und geprüfte Daten) und dann zu testen...

MfG
Thomas R.
Bianka4768
....
....
 
Posts: 567
Joined: Tue Dec 10, 2002 5:46 pm

Re: cl_gui_simple_tree - System friert ein

Postby Rachel4283 » Thu Feb 07, 2013 8:48 am

Hallo Thomas,
habe eigentlich schon eine Antwort verfasst (keine Schnellantwort... ??), wurde noch nicht freigegeben^^
Sei es drum, habe das Problem gelöst. Es gab wohl eine Kollision zwischen der Struktur der NODE-Tabelle und der MTREESNODE-Struktur, die der Methode cl_gui_simple_tree->add_nodes mitgegeben wurde.
Die StrukturMTREESNODE enthält die Struktur der Tabelle (treev_ntab, durch append) und ein Textfeld (text30), das in der Struktur der NODE-Tabelle(treev_ntab) dementsprechend nicht vorhanden ist.

Danke trotzdem =)
Rachel4283
.
.
 
Posts: 3
Joined: Mon Feb 04, 2013 1:58 pm


Return to ABAP Objects®

Who is online

Users browsing this forum: No registered users and 4 guests