Textedit-Control

Aus SAP-Wiki
Wechseln zu: Navigation, Suche

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

Textcontrol3.jpg

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.

Textcontrol2.jpg


Module des Dynpros 2000

Module des Dnypros im PBO (Process Before Output) und PAI (Process After Input).

Textcontrol1.jpg


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.

Textcontrol3.jpg

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.

Textcontrol4.jpg

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

Web-Links