cl_gui_textedit -> set_read_only_mode

Benutzeroberflächen in SAP Systemen.

cl_gui_textedit -> set_read_only_mode

Postby Laurens818 » Mon Apr 16, 2012 11:48 am

Hallo liebe ABAP-Spezialisten,

ich häng grad bei einem ziemlichen Problem fest und komme absolut nicht weiter :?

Ich habe 2 verschiedene Dynpros. Auf jedem Dynpro habe ich ein Custom-Control-Feld, in welchem ein Textedit-Feld erstellt wird.
Es gibt auf jedem Dynpro die Möglichkeit zwischen einem Anzeigen- und einem Bearbeitenmodus.
Je nach dem, in welchem Modus ich mich befinde, soll auch das Textedit entweder nur angezeigt oder editierbar gemacht werden.

Auf meinem 0200er Dynpro funktioniert alles wunderbar. Je nach dem, in welchem Modus ich mich befinde (Anzeigen oder Bearbeiten) wird das Textedit nur angezeigt oder editierbar gemacht.

Genau die gleiche Verarbeitung habe ich auch auf meinem 0400er Dynpro. Nur bleibt das Textedit immer im Ausgangszustand (es ist egal, ob ich mich im Anzeigenmodus oder im Bearbeitenmodus befinde). Alle sonstigen Felder werden je nach Zustand geändert, nur eben das Textedit nicht :-/

Hier mal die Codings:
Top-Include:
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. * Textedit Control für Dynpro 0200
  2. DATA:  gref_editor_container_0200    TYPE REF TO cl_gui_custom_container,
  3.           gref_editor_0200              TYPE REF TO cl_gui_textedit.
  4.  
  5. * Textedit Control für Dynpro 0400
  6. DATA:  gref_editor_container_0400    TYPE REF TO cl_gui_custom_container,
  7.           gref_editor_0400              TYPE REF TO cl_gui_textedit.
  8.  
GeSHi ©


PAI für die beiden Dynpros: (TOGGL_EDIT ist mein OK_CODE)
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1.     WHEN 'TOGGL_EDIT'.
  2.       IF gv_edit_mode_0200 EQ abap_true.
  3.         gv_edit_mode_0200 = abap_false.
  4.       ELSE.
  5.         gv_edit_mode_0200 = abap_true.
  6.       ENDIF.
  7.  
GeSHi ©

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1.     WHEN 'TOGGL_EDIT'.
  2.       IF gv_edit_mode_0400 EQ abap_true.
  3.         gv_edit_mode_0400 = abap_false.
  4.       ELSE.
  5.         gv_edit_mode_0400 = abap_true.
  6.       ENDIF.
  7.  
GeSHi ©


PBO für die beiden Dynpros:
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. *   create control container
  2.   CREATE OBJECT gref_editor_container_0200
  3.     EXPORTING
  4.       container_name              = 'CTEXTCONTROL_KOMMENTAR_0200'
  5.     EXCEPTIONS
  6.       cntl_error                  = 1
  7.       cntl_system_error           = 2
  8.       create_error                = 3
  9.       lifetime_error              = 4
  10.       lifetime_dynpro_dynpro_link = 5.
  11.   IF sy-subrc NE 0.
  12. *      add your handling
  13.   ENDIF.
  14.  
  15. *   create calls constructor, which initializes, creats and links
  16. *    a TextEdit Control
  17.   CREATE OBJECT gref_editor_0200
  18.     EXPORTING
  19.       parent                     = gref_editor_container_0200
  20.       wordwrap_mode              = cl_gui_textedit=>wordwrap_at_fixed_position
  21.       wordwrap_to_linebreak_mode = cl_gui_textedit=>true
  22.     EXCEPTIONS
  23.       OTHERS                     = 1.
  24.   IF sy-subrc NE 0.
  25.     CALL FUNCTION 'POPUP_TO_INFORM'
  26.       EXPORTING
  27.         titel = lv_repid
  28.         txt2  = space
  29.         txt1  = text-001. " noch zu ändern
  30.   ENDIF.
  31.  
  32. * Kommentarfeld Anzeigen- oder Bearbeitungsmodus
  33.   IF gv_edit_mode_0200 = abap_false.
  34.     CALL METHOD gref_editor_0200->set_readonly_mode
  35.       EXPORTING
  36.         readonly_mode          = cl_gui_textedit=>true
  37.       EXCEPTIONS
  38.         error_cntl_call_method = 1
  39.         invalid_parameter      = 2
  40.         OTHERS                 = 3.
  41.     IF sy-subrc <> 0.
  42.       MESSAGE 'Fehler' TYPE 'S'.
  43.     ENDIF.
  44.   ENDIF.
  45.  
GeSHi ©

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. *   create control container
  2.   CREATE OBJECT gref_editor_container_0400
  3.     EXPORTING
  4.       container_name              = 'CTEXTCONTROL_KOMMENTAR_0400'
  5.     EXCEPTIONS
  6.       cntl_error                  = 1
  7.       cntl_system_error           = 2
  8.       create_error                = 3
  9.       lifetime_error              = 4
  10.       lifetime_dynpro_dynpro_link = 5.
  11.   IF sy-subrc NE 0.
  12. *      add your handling
  13.   ENDIF.
  14.  
  15. *   create calls constructor, which initializes, creats and links
  16. *    a TextEdit Control
  17.   CREATE OBJECT gref_editor_0400
  18.     EXPORTING
  19.       parent                     = gref_editor_container_0400
  20.       wordwrap_mode              = cl_gui_textedit=>wordwrap_at_fixed_position
  21.       wordwrap_to_linebreak_mode = cl_gui_textedit=>true
  22.     EXCEPTIONS
  23.       OTHERS                     = 1.
  24.   IF sy-subrc NE 0.
  25.     CALL FUNCTION 'POPUP_TO_INFORM'
  26.       EXPORTING
  27.         titel = lv_repid
  28.         txt2  = space
  29.         txt1  = text-001. " noch zu ändern
  30.   ENDIF.
  31.  
  32. * Kommentarfeld Anzeigen- oder Bearbeitungsmodus
  33.   IF gv_edit_mode_0400 = abap_false.
  34.     CALL METHOD gref_editor_0400->set_readonly_mode
  35.       EXPORTING
  36.         readonly_mode          = cl_gui_textedit=>true
  37.       EXCEPTIONS
  38.         error_cntl_call_method = 1
  39.         invalid_parameter      = 2
  40.         OTHERS                 = 3.
  41.     IF sy-subrc <> 0.
  42.       MESSAGE 'Fehler' TYPE 'S'.
  43.     ENDIF.
  44.   ENDIF.
GeSHi ©


Vielleicht kann mir irgendwer erklären, warum das Umschalten zwischen Anzeigen und Bearbeiten beim Dynpro 0200 funktioniert und bei Dynpro 0400 nicht!?!?!?!?
Bin für jegliche Hinweise dankbar :)
Laurens818
..
..
 
Posts: 50
Joined: Sat Oct 22, 2005 9:06 pm

Re: cl_gui_textedit -> set_read_only_mode

Postby Laurens818 » Mon Apr 16, 2012 1:08 pm

GELÖST :)
Das Problem war, dass bei jedem PBO-Durchlauf ein neues Objekt erzeugt wurde (vom Container und dem Textedit).
Hab dann ein "if gref_editor_container_0200 (0400) is not bound" eingefügt und nach der if-Abfrage die Readonly_mode entweder auf true oder false gesetzt.

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. if gref_editor_container_0400 IS NOT BOUND.
  2. *   create control container
  3.   CREATE OBJECT gref_editor_container_0400
  4.     EXPORTING
  5.       container_name              = 'CTEXTCONTROL_KOMMENTAR_0400'
  6.     EXCEPTIONS
  7.       cntl_error                  = 1
  8.       cntl_system_error           = 2
  9.       create_error                = 3
  10.       lifetime_error              = 4
  11.       lifetime_dynpro_dynpro_link = 5.
  12.   IF sy-subrc NE 0.
  13. *      add your handling
  14.   ENDIF.
  15.  
  16. *   create calls constructor, which initializes, creats and links
  17. *    a TextEdit Control
  18.   CREATE OBJECT gref_editor_0400
  19.     EXPORTING
  20.       parent                     = gref_editor_container_0400
  21.       wordwrap_mode              = cl_gui_textedit=>wordwrap_at_fixed_position
  22.       wordwrap_to_linebreak_mode = cl_gui_textedit=>true
  23.     EXCEPTIONS
  24.       OTHERS                     = 1.
  25.   IF sy-subrc NE 0.
  26.     CALL FUNCTION 'POPUP_TO_INFORM'
  27.       EXPORTING
  28.         titel = lv_repid
  29.         txt2  = space
  30.         txt1  = text-001. " noch zu ändern
  31.   ENDIF.
  32.  
  33. * Kommentarfeld Anzeigen- oder Bearbeitungsmodus
  34.   IF gv_edit_mode_0400 = abap_false.
  35.     CALL METHOD gref_editor_0400->set_readonly_mode
  36.       EXPORTING
  37.         readonly_mode          = cl_gui_textedit=>true
  38.       EXCEPTIONS
  39.         error_cntl_call_method = 1
  40.         invalid_parameter      = 2
  41.         OTHERS                 = 3.
  42.     IF sy-subrc <> 0.
  43.       MESSAGE 'Fehler' TYPE 'S'.
  44.     ENDIF.
  45.   ELSE.
  46.     CALL METHOD gref_editor_0400->set_readonly_mode
  47.       EXPORTING
  48.         readonly_mode          = cl_gui_textedit=>false
  49.       EXCEPTIONS
  50.         error_cntl_call_method = 1
  51.         invalid_parameter      = 2
  52.         OTHERS                 = 3.
  53.     IF sy-subrc <> 0.
  54.       MESSAGE 'Fehler' TYPE 'S'.
  55.     ENDIF.
  56.   ENDIF.
GeSHi ©
Laurens818
..
..
 
Posts: 50
Joined: Sat Oct 22, 2005 9:06 pm


Return to Dialogprogrammierung

Who is online

Users browsing this forum: No registered users and 2 guests