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