Zum Inhalt springen

[SAP/ABAP]textedit control initalisieren


melleh

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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...:rolleyes: gelegentlich ist sap sehr verwirrent...:upps

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich habe das gerade mal gedanklich debuggt, aber festgestellt das ich aus dem Kontext noch nicht genug Informationen beziehen kann... :D

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...