Kurzdump bei dynamischen Erstellen von NODEs und Attributen

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).
6 Beiträge • Seite 1 von 1
6 Beiträge Seite 1 von 1

Kurzdump bei dynamischen Erstellen von NODEs und Attributen

Beitrag von Tobias85 (ForumUser / 34 / 3 / 1 ) »
Hallo,
beim dynamischen Erstellen von NODEs und Attributen wirft er mir immer an der unten markieren Stelle einen Kurzdump mit folgemden Text aus:
An exception (CX_WD_CONTEXT) occurredMessage no. TPDA430

Code: Alles auswählen.

     lv_unique_id = 'CHILD'.
          lr_node_info        TYPE REF TO if_wd_context_node_info,
          lr_attribute_info   TYPE wdr_context_attribute_info,
          lr_parent_node_info TYPE REF TO if_wd_context_node_info,
          lr_item_node_info   TYPE REF TO if_wd_context_node_info.

  DATA: lv_unique_id TYPE string,
        lv_string TYPE string,
        lv_bind_name TYPE string,
        attribute_name TYPE string,
        content type string.


  lr_node_info = wd_context->get_node_info( ).
  lr_parent_node_info = wd_context->get_node_info( ).

<...>

     CONCATENATE lv_unique_id sy-TIMLO INTO lv_unique_id.
     lr_node_info = wd_context->get_node_info( ).

     CALL METHOD lr_node_info->add_new_child_node
       EXPORTING
         name                         = lv_unique_id
         is_mandatory                 = abap_false
         is_multiple                  = abap_true
         is_multiple_selection        = abap_true
         is_singleton                 = abap_false
         is_initialize_lead_selection = abap_true
         is_static                    = abap_false
       RECEIVING         child_node_info = lr_node_info.

       lr_attribute_info-name = attribute_name.
       lr_attribute_info-type_name = 'STRING'.
       lr_attribute_info-value_help_mode = '0'.

==>  lr_node_info->add_attribute( EXPORTING attribute_info = lr_attribute_info ).
       lr_node = wd_context->get_child_node( name = 'CHILD' ).
       lr_element = lr_node->create_element( ).
       lr_element->set_attribute( name  = attribute_name value = content ).
       lr_node->bind_element( new_item = lr_element set_initial_elements = abap_false ).

        lv_bind_name = lv_unique_id.
Hat jemand eine Idee warum?

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Kurzdump bei dynamischen Erstellen von NODEs und Attribu

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
hi!

Bau ein TRY ... CATCH ein.

Code: Alles auswählen.

data:
  lx_root type ref to cx_root,
  ld_error type string..
try.
    lr_node_info->add_attribute( EXPORTING attribute_info = lr_attribute_info ).
  catch cx_root into lx_root.
    ld_error = lx_root->get_text( ).   
endtry.
In LD_ERROR steht nun eine hoffentlich lesbare Fehlerbeschreibung drinnen. Die kannst du dann ausgeben oder im Debugger anschauen.
Möglich, dass der Fehler einen Vorgänger hatte, dann musst du dir die Infos aus LX_ROOT->PREVIOUS besorgen.
Dieser könnte natürlich wiederum einen Vorgänger haben also LX_ROOT->PREVIOUS->PREVIOUS usw. bis du halt eine brauchbare Fehlermeldung hast die dir das Problem beschreibt.

lg ADT
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.

ECC: 6.18
Basis: 7.50

Re: Kurzdump bei dynamischen Erstellen von NODEs und Attribu

Beitrag von Tobias85 (ForumUser / 34 / 3 / 1 ) »
Danke,
die Exception hatte ich abgefangen, bloß vergessen mir den Fehlertext genauer anzuschauen.
Er hatte was an den verwendeten Zeichen für den NODE-Namen gemeckert, was aber nun auch ausgemerzt ist.

Nun zeigt er mir folgenden Fehler im Broswer(!) an, obwohl alle Methoden jeweils als TRY ausgeführt werden:
Hinweis

Folgender Fehlertext wurde im System DEV prozessiert: Attribut SYSCMHDSC0000100001 konnte nicht gefunden werden.
Der Fehler trat auf dem Applikationsserver cti-2k3-dev_DEV_00 und im Workprozess 0 auf.
Die Abbruchart war: RABAX_STATE
Die ABAP-Aufrufhierarchie war:
Method: IF_WD_CONTEXT_NODE_INFO~GET_ATTRIBUTE of program CL_WDR_CONTEXT_NODE_INFO======CP
Method: GET_ATTRIBUTE_INFO of program CL_WDR_VIEW_ELEMENT_ADAPTER===CP
Method: IF_NW7_VIEW_ELEMENT_ADAPTER~SET_CONTENT of program /1WDA/C0STANDARD==============CP
Method: IF_NW7_VIEW_ELEMENT_ADAPTER~SET_CONTENT of program /1WDA/C8STANDARD==============CP
Method: IF_NW7_VIEW_ELEMENT_ADAPTER~SET_CONTENT of program /1WDA/C8STANDARD==============CP
Method: IF_NW7_VIEW_ELEMENT_ADAPTER~SET_CONTENT of program /1WDA/C8STANDARD==============CP
Method: IF_NW7_VIEW_ELEMENT_ADAPTER~SET_CONTENT of program /1WDA/C7STANDARD==============CP
Method: IF_NW7_VIEW_ELEMENT_ADAPTER~SET_CONTENT of program /1WDA/C8STANDARD==============CP
Method: IF_NW7_VIEW_ELEMENT_ADAPTER~SET_CONTENT of program /1WDA/C8STANDARD==============CP
Method: IF_NW7_VIEW_ELEMENT_ADAPTER~SET_CONTENT of program /1WDA/C8STANDARD==============CP
Mein aktueller Quelltext sieht so aus:

Code: Alles auswählen.

lv_unique_id = 'SYS'.
     CONCATENATE lv_unique_id wd_this->gv_tap_app ls_lay-LAYID wd_this->gv_tap_typ ls_con-conid ls_conp-PARAM INTO lv_unique_id.
     lr_node_info = wd_context->get_node_info( ).

     CALL METHOD lr_node_info->add_new_child_node
       EXPORTING
         name                         = lv_unique_id
         is_mandatory                 = abap_false
         is_multiple                  = abap_true
         is_multiple_selection        = abap_true
         is_singleton                 = abap_false
         is_initialize_lead_selection = abap_true
         is_static                    = abap_false
       RECEIVING         child_node_info = lr_node_info.

       attribute_name = lv_unique_id.

       lr_attribute_info-name = attribute_name.
       lr_attribute_info-type_name = 'STRING'.
       lr_attribute_info-value_help_mode = '0'.

       lr_node_info->add_attribute( EXPORTING attribute_info = lr_attribute_info ).
       lr_node = wd_context->get_child_node( name = 'CHILD' ).

            lr_input = cl_wd_input_field=>new_input_field( bind_value = lv_unique_id ).
            lv_field_id = lr_input->get_id( ).
            lr_matrix_layout_data = cl_wd_matrix_data=>new_matrix_data( element = lr_input ).

            lr_label =  cl_wd_label=>new_label( label_for = lv_field_id text = lv_descr ).
            lr_matrix_layout_data = cl_wd_matrix_data=>new_matrix_data( element = lr_label ).
            lr_group->add_child( lr_label ).
            lr_input->set_tooltip( lv_tooltip ).
            lr_group->add_child( lr_input ).

      lr_header_tray->add_child( lr_group ).

Re: Kurzdump bei dynamischen Erstellen von NODEs und Attribu

Beitrag von Frank Dittrich (Expert / 674 / 0 / 15 ) »
Tobias85 hat geschrieben:Nun zeigt er mir folgenden Fehler im Broswer(!) an, obwohl alle Methoden jeweils als TRY ausgeführt werden:
Hinweis

Folgender Fehlertext wurde im System DEV prozessiert: Attribut SYSCMHDSC0000100001 konnte nicht gefunden werden.
Der Fehler trat auf dem Applikationsserver cti-2k3-dev_DEV_00 und im Workprozess 0 auf.
Die Abbruchart war: RABAX_STATE
Und, hast Du mal kurz nachdem der Fehler auftrat in die Workprozess-Tracedatei von Workprozess 0 geschaut, ob da etwas Hilfreiches drin stand?
Wenn das fragliche Zeitfenster jetzt nicht mehr in der aktuellen Tracedatei zu finden ist, dann entweder den Fehler noch mal reproduzieren, darauf achten, in welchem Workprozess der fehler auftrat und dann aus der SM50 heraus die Tracedatei zum jeweiligen Workprozess ansehen.
(Ansonsten kann man über die ST11 auch noch die Datei dev_wp0.old ansehen. Wenn man Glück hat, ist da noch etwas drin zu finden. Aber bei Anzeige aus der SM50 heraus findet man die Fehler schneller...)

Nebenbei: wie alt ist der SAP-Kernel, der auf dem System gerade läuft (s. Transaktion SM51, Release-Info)?
Manchmal verschwinden ansonsten schwer erklärbare Fehler ja auch nach einem SAP-Kernel-Upgrade (bzw. werden durch andere schwer erklärbare Fehler ersetzt).
Mein aktueller Quelltext sieht so aus:

Code: Alles auswählen.

lv_unique_id = 'SYS'.
     CONCATENATE lv_unique_id wd_this->gv_tap_app ls_lay-LAYID wd_this->gv_tap_typ ls_con-conid ls_conp-PARAM INTO lv_unique_id.
Bist Du sicher, dass die von Dir so erzeugte unique Id wirklich unique ist? (Keine Ahnung, ob das an der Stelle wichtig ist)

Frank

Re: Kurzdump bei dynamischen Erstellen von NODEs und Attribu

Beitrag von Tobias85 (ForumUser / 34 / 3 / 1 ) »
Frank Dittrich hat geschrieben: Und, hast Du mal kurz nachdem der Fehler auftrat in die Workprozess-Tracedatei von Workprozess 0 geschaut, ob da etwas Hilfreiches drin stand?
Wenn das fragliche Zeitfenster jetzt nicht mehr in der aktuellen Tracedatei zu finden ist, dann entweder den Fehler noch mal reproduzieren, darauf achten, in welchem Workprozess der fehler auftrat und dann aus der SM50 heraus die Tracedatei zum jeweiligen Workprozess ansehen.
(Ansonsten kann man über die ST11 auch noch die Datei dev_wp0.old ansehen. Wenn man Glück hat, ist da noch etwas drin zu finden. Aber bei Anzeige aus der SM50 heraus findet man die Fehler schneller...)

Nebenbei: wie alt ist der SAP-Kernel, der auf dem System gerade läuft (s. Transaktion SM51, Release-Info)?
Manchmal verschwinden ansonsten schwer erklärbare Fehler ja auch nach einem SAP-Kernel-Upgrade (bzw. werden durch andere schwer erklärbare Fehler ersetzt).
der Kernel wäre SAP Kernel: 701_REL

UInd ja der lv_unique_id ist eindeutig, weil sonst fliegt er schon viel früher im Debugger.

Method: IF_WD_CONTEXT_NODE_INFO~GET_ATTRIBUTE of program CL_WDR_CONTEXT_NODE_INFO======CP

Re: Kurzdump bei dynamischen Erstellen von NODEs und Attribu

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
Hi,

wenn die get_attribute methode fehl schlägt.. hast du mal getestet ob es das attribut, bzw. einen Wert im Attribut wirklich gibt? Evtl. schlägt entweder das anlegen des attributs fehl oder das binden eines Wertes an dieses attribut.

Nebenbei: alle Fehlerdumps kannste dir in der ST22 anschauen. auch zurückliegende. da bekommste auch die genaue fehlerstelle im quellcode-ausschnitt, an der der dump auftritt. schau doch mal da rein, und setz dir nen breakpoint kurz vor der stelle und prüf mal alle in frage kommenden Werte ob sie vorhanden sind.
Gruß,
der Matze

Seite 1 von 1

Vergleichbare Themen

7
Antw.
7300
Views
Erstellen einer dynamischen Tabelle / Struktur
von popay » 22.09.2005 20:54 • Verfasst in ABAP® Core
3
Antw.
604
Views
2
Antw.
2058
Views
Deklaration von Datentypen bei Attributen
von Steffi221185 » 28.08.2006 09:39 • Verfasst in ABAP Objects®
1
Antw.
1168
Views
Bearbeiten von Dynpro Attributen
von SaskuAc » 02.05.2017 11:35 • Verfasst in ABAP® für Anfänger
1
Antw.
1907
Views
ALV-Tree Expand nodes
von dexter » 27.02.2006 10:33 • Verfasst in ABAP Objects®

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
vor 5 Stunden von Bright4.5 1 / 118
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 1759
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8361