melleh Geschrieben 23. April 2009 Teilen Geschrieben 23. April 2009 Hallo Zusammen, ich kämpfe schon seit einigen tagen mit folgendem Problem: ich habe ein textedit control. beim anzeigen meiner daten wird es gefüllt und beim 'zurück gehen' wird der container auf initialwert gesetzt, der editor, und i_text (die itab, in der der text abgelegt wird). alle felder sind definitif frei/leer unbeschrieben. nun rufe ich eine leere maske auf (ohne dass ich die sap startseite - heißt das so?) aufrufe. und? in meinem control steht der text von vorher drin. ich bin jetzt 100 mal durch den debugger gelaufen aber bis zu dem punkt, an dem das dynpro aufgeht (der debugger also komplett durch ist) werden diese felder nicht gefüllt. auch der textschluessel ist leer und das read_text ist in dem moment deaktiviert. Hat einer von euch eine idee? entschuldigt bitte ggf. Rechtschreibfehler und meine klein/großschreibung. danke und lg Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MAJOR_TOM Geschrieben 23. April 2009 Teilen Geschrieben 23. April 2009 Hmm, vielleicht hat CL_GUI_TEXTEDIT einen internen Cache? Hast du schon mal probiert, die Methode DELETE_TEXT aufzurufen? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
melleh Geschrieben 23. April 2009 Autor Teilen Geschrieben 23. April 2009 Hallöchen, ja, delete text habe ich schon eingebaut. 'editor' wird initaliesiert. wenn ich die methode delete (noch mal) aufrufe genau bevor ich das dynpro ausgebe kommt ein kurzdump -'Null kann nicht initalisiert werden' - also sinngemäß - was schon nix ist, kann nicht auf nix gesetzt werden... gelegentlich ist sap sehr verwirrent...:upps Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MAJOR_TOM Geschrieben 23. April 2009 Teilen Geschrieben 23. April 2009 Äußerst merkwürdig... Hast du mal ein wenig Quelltext, inclusive PBO / PAI Module? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
melleh Geschrieben 23. April 2009 Autor Teilen Geschrieben 23. April 2009 ok, ich versuchs mal, hoffe das klappt ich will und das gibt in der firma kein ärger... PBO 0200 IF init_0200 IS INITIAL. init_0200 = 'X'. IF NOT container IS INITIAL. CALL METHOD container->free. FREE container. ENDIF. IF NOT editor IS INITIAL. CALL METHOD editor->delete_text EXCEPTIONS error_cntl_call_method = 1 OTHERS = 2. ENDIF. CLEAR textschluessel. ENDIF. PBO 0200 MODULE contaier_erstellen. IF container IS INITIAL. CREATE OBJECT container EXPORTING container_name = 'CONTAINER'. ENDIF. IF editor IS INITIAL. IF modus NE con_anlegen. CONCATENATE wa_kopf-bukrs wa_kopf-vtrnr INTO textschluessel. * REFRESH i_text. CALL FUNCTION 'READ_TEXT' EXPORTING * CLIENT = SY-MANDT id = 'ZVVW' language = 'D' name = textschluessel object = 'Z***** * ARCHIVE_HANDLE = 0 IMPORTING header = tkopf TABLES lines = i_text EXCEPTIONS id = 1 language = 2 name = 3 not_found = 4 object = 5 reference_check = 6 wrong_access_to_archive = 7 OTHERS = 8. IF sy-subrc <> 0. tkopf-tdobject = 'Z****' . tkopf-tdid = 'Z***'. tkopf-tdspras = 'D'. ENDIF. ENDIF. CREATE OBJECT editor EXPORTING parent = container. CALL METHOD editor->set_text_as_stream EXPORTING text = i_text EXCEPTIONS error_dp = 1 error_dp_create = 2. IF sy-subrc NE 0. PERFORM destructor. MESSAGE a015. * Der Text kann nicht geladen werden ENDIF. CALL METHOD editor->register_event_dblclick EXPORTING navigate_on_dblclick = cl_gui_textedit=>true. CALL METHOD editor->set_toolbar_mode. ENDIF. Nach dem u-comm folgt free und clear vom i_text und editor. Also es gibt 3 modi: anzeigen, ändern und anlegen. daten ausgeben - zurück -anlegen und hier ist dann noch der text im feld. die maske 0200 ist eine für alle: die daten werden entweder (nach der eingabe auf dem dynpro 0100) hineingeladen und zum ändern/anzeigen dargestellt oder EIN LEERES formular dargestellt. - alles andere ist auch sauber. - war das verständlich? PS: die toolbar geht auch nicht Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MAJOR_TOM Geschrieben 23. April 2009 Teilen Geschrieben 23. April 2009 Ich habe das gerade mal gedanklich debuggt, aber festgestellt das ich aus dem Kontext noch nicht genug Informationen beziehen kann... Nach dem u-comm folgt free und clear vom i_text und editor. Das FREE auf i_text oder auf editor? Ich nehme an, bei dem ersten Codefragment handelt es sich um den PAI, nicht um den PBO? Wenn dem so ist: Die Variable init_0200 wird auf 'X' gesetzt, aber nirgendwo wieder auf space, daher wird das Coding nur einmal durchlaufen und nicht jedesmal, wenn du das Dynpro wieder verlässt. Zweitens: Was meldet der Aufruf von CALL METHOD editor->delete_text EXCEPTIONS error_cntl_call_method = 1 OTHERS = 2. zurück? Da sollte doch eigentlich sy-subrc <> 0 sein, da du das parent control ja schon abgebaut hast... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MAJOR_TOM Geschrieben 23. April 2009 Teilen Geschrieben 23. April 2009 Ähm, Beim Aufruf von SET_TOOLBAR_MODE solltest du auch den Parameter für die Sichtbarkeit auf "True" setzen. Der Standardwert ist nämlich "False". Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
melleh Geschrieben 23. April 2009 Autor Teilen Geschrieben 23. April 2009 hello again, also init_0200 ist wirklich im PBO. nach dem sichern soll gepfüft werden ob init_0200 EQ 'X'. nach dem sichern, wird init_0200 auf initial (also blanc) gesetzt. sprich: es sollen der container und der editor aufgeräumt werden. da der PBO nach 'enter' oder auch beim aufruf von anzeigen/ändern durchlaufen will, wird so abgefangen, dass die felder jedesmal aufgeräumt werden. CLEAR i_text. FREE editor. zu 2: da der editor initial ist beim anlegen (nach dem zurück schritt) wird die methode auch nicht ausgeführt. nehme ich die if-anweisung oder das NOT raus, dump- null kann nicht gelöscht/auf null gesetzt werden. -total komisch. werde das mal später mit papier u stift debuggen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MAJOR_TOM Geschrieben 24. April 2009 Teilen Geschrieben 24. April 2009 Guten Morgen, Ist i_text eine Tabelle mit Kopfzeile? Wenn ja, mache ich fast jede Wette, dass der Fehler hier liegt: CLEAR i_text Bei einer Tabelle mit Kopfzeile löscht diese Anweisung nicht den Tabellenkörper sondern nur die Kopfzeile. Versuche mal die Anweisung durch REFRESH i_text zu ersetzten. Guß, Major. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
melleh Geschrieben 24. April 2009 Autor Teilen Geschrieben 24. April 2009 Hallo Major_Tom, sorry das ich mich jetzt erst melde, aber die sache mit der zeit ist so eine sache :cool: wette verloren: ein refresh i_text ist auch vorhanden. ich habs heut leieder auch nicht geschafft in ruhe alles noch mal zu debuggen, ich setzt mich da im laufe der nächsten tage noch mal ran (berufsschule, weiß nicht wann ich dazu komme)... danke schon mal für deine mühe, vielleicht kommt noch der lichtblick.... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.