Textedit-Control
Aus SAP-Wiki
Zur Navigation springenZur Suche springen
Mit der Klasse CL_GUI_TEXTEDIT kann man ein Control auf einem Dynpro einfügen, wo sich wie bei einem Texteditor Text beliebiger Länge anzeigen und bearbeiten lässt.
Screenshot
Definition Variablen
* Referenzvariablen für Text Container
DATA: lo_custom_container TYPE REF TO cl_gui_custom_container,
lo_textedit TYPE REF TO cl_gui_textedit.
* Tabelle für Textdarstellung deklarieren
DATA: lv_text(10000) TYPE c,
gt_text LIKE STANDARD TABLE OF lv_text.
Dynpro 2000 wird aufgerufen
START-OF-SELECTION. CALL SCREEN 2000.
Anlage Dynpro im Layout
Anlegen eines Custom-Controls im Dynpro mit dem Namen TEXT_CONT.
Module des Dynpros 2000
Module des Dnypros im PBO (Process Before Output) und PAI (Process After Input).
Instanziierung Objekte für Customcontrol und Texteditcontrol
MODULE create_objects OUTPUT.
CHECK lo_custom_container IS INITIAL.
CREATE OBJECT lo_custom_container
EXPORTING
container_name = 'TEXT_CONT'.
CREATE OBJECT lo_textedit
EXPORTING
parent = lo_custom_container.
ENDMODULE. " create_objects OUTPUT
Laden Text
Der Text wird in den Textedit-Control geladen.
MODULE load_text OUTPUT. PERFORM load_text. ENDMODULE. " load_text OUTPUT
FORM load_text. DATA: lv_text(10000) TYPE c. lv_text = 'Dies ist ein Kurztext, der'. APPEND lv_text TO gt_text. lv_text = 'über mehrere Zeilen sich erstreckt'. APPEND lv_text TO gt_text. * Stelle Inhalt Texttabelle in Dynpro Container dar CALL METHOD lo_textedit->set_text_as_r3table EXPORTING table = gt_text. * Toolbar ausblenden * CALL METHOD lo_textedit->set_toolbar_mode * EXPORTING * toolbar_mode = 0 * EXCEPTIONS * error_cntl_call_method = 1 * invalid_parameter = 2 * OTHERS = 3. IF sy-subrc <> 0. MESSAGE i531(0u) WITH 'Fehler bei Methode set_toolbar_mode'. ENDIF. ENDFORM. " LOAD_TEXT
Ausgabe Text
Ausgabe des Textes. Hier mit nicht ausgeblendeter Symbolleiste.
Ausblenden Symbolleiste
Nun wird die Symbolleiste ausgeblendet mit dem vorher auskommentierten Coding
* Toolbar ausblenden CALL METHOD lo_textedit->set_toolbar_mode EXPORTING toolbar_mode = 0 EXCEPTIONS error_cntl_call_method = 1 invalid_parameter = 2 OTHERS = 3.
User-Command
Im User-Command wird der möglicherweise geänderte Text verarbeitet, bzw. beim Verlassen des Screen der Arbeitsspeicher für die Objekte wieder freigegeben.
MODULE user_command_2000 INPUT.
CASE sy-ucomm.
WHEN 'SAVE'.
PERFORM save_text.
WHEN 'BACK' or 'CANCEL' or 'EXIT' .
PERFORM free.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_2000 INPUT
FORM save_text.
DATA: lv_modified TYPE i.
DATA: lv_text(10000) TYPE c,
Data: lt_data_tab LIKE STANDARD TABLE OF lv_text,
lt_data TYPE string_table.
CALL METHOD lo_textedit->get_text_as_r3table
IMPORTING
table = lt_data_tab
is_modified = lv_modified
EXCEPTIONS
error_dp = 1
error_cntl_call_method = 2
error_dp_create = 3
potential_data_loss = 4
OTHERS = 5.
IF lv_modified = 1.
lt_data[] = lt_data_tab[].
ENDIF.
* save Text
* CALL FUNCTION 'COMMIT_TEXT'. "Bei Texterstellung Verbucher übergeben
MESSAGE i531(0u) WITH 'Update gespeichert'.
LEAVE TO SCREEN 0.
ENDFORM. " SAVE
FORM free.
CALL METHOD: lo_custom_container->free,
lo_textedit->free.
FREE: lo_custom_container,
lo_textedit.
CALL METHOD cl_gui_cfw=>flush
EXCEPTIONS
cntl_system_error = 1
cntl_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE i000(jk) WITH 'Fehler bei Synchronisation Automation Queue'.
ENDIF.
ENDFORM. " FREE



