定义新的长文本对象并用cl_gui_textedit编辑

*&---------------------------------------------------------------------* 
*& Report  Y_PCITCAO_TEST_TEXTEDIT 
*& 
*&---------------------------------------------------------------------* 
*& 
*& 
*&---------------------------------------------------------------------* 

REPORT  Y_PCITCAO_TEST_TEXTEDIT. 
TABLES: sscrfields. 
DATA: x_docking TYPE REF TO cl_gui_docking_container, 
      x_editor  TYPE REF TO cl_gui_textedit, 
      lines TYPE STANDARD TABLE OF tline , 
      header LIKE thead . 

TYPES: BEGIN OF textline, 
   line(255) TYPE c, 
END OF textline . 
DATA texttable TYPE TABLE OF textline  . 

PARAMETERS:p_name(70) DEFAULT '12345678'. 
SELECTION-SCREEN FUNCTION KEY 1. 
SELECTION-SCREEN FUNCTION KEY 2. 

INITIALIZATION. 
  sscrfields-functxt_01 = 'Save'. 
  sscrfields-functxt_02 = 'Read'. 

AT SELECTION-SCREEN OUTPUT. 
  IF x_docking IS INITIAL . 
    CREATE OBJECT x_docking 
    EXPORTING 
        repid                       = sy-repid 
        dynnr                       = sy-dynnr 
        side                        = 4 
        extension                   = '255' 
    EXCEPTIONS 
        cntl_error                  = 1 
        cntl_system_error           = 2 
        create_error                = 3 
        lifetime_error              = 4 
        lifetime_dynpro_dynpro_link = 5. 

    CREATE OBJECT x_editor 
      EXPORTING 
          parent                    = x_docking 
          wordwrap_mode             = 2 
          wordwrap_position         = 72 
          max_number_chars          = 100000. 
  ENDIF . 

AT SELECTION-SCREEN. 
  header-tdobject  = 'TEXT'. 
  header-tdname    = p_name. 
  header-tdid      = 'ST'. 
  header-tdspras   = sy-langu. 

  CASE sy-ucomm . 
    WHEN 'FC01'. 
      PERFORM savetext. 
    WHEN 'FC02'. 
      PERFORM readtext. 
  ENDCASE. 

*&---------------------------------------------------------------------* 
*&      Form  savetext 
*&---------------------------------------------------------------------* 
FORM savetext. 
  CALL METHOD x_editor->get_text_as_stream 
    IMPORTING 
      text                   = texttable 
    EXCEPTIONS 
      error_dp               = 1 
      error_cntl_call_method = 2 
      OTHERS                 = 3. 

  CALL FUNCTION 'CONVERT_STREAM_TO_ITF_TEXT' 
    EXPORTING 
      language    = sy-langu 
    TABLES 
      text_stream = texttable 
      itf_text    = lines. 

  CALL FUNCTION 'SAVE_TEXT' 
    EXPORTING 
      header          = header 
      savemode_direct = 'X' 
    TABLES 
      lines           = lines 
    EXCEPTIONS 
      id              = 1 
      language        = 2 
      name            = 3 
      object          = 4 
      OTHERS          = 5. 
  IF sy-subrc = 0. 
    MESSAGE s000(oo) WITH '保存成功'. 
    COMMIT WORK. 
  ELSE. 
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno 
      WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. 
  ENDIF. 
ENDFORM.                    "savetext 

*&---------------------------------------------------------------------* 
*&      Form  readtext 
*&---------------------------------------------------------------------* 
FORM readtext. 
  CLEAR:texttable,texttable[]. 

  CALL FUNCTION 'READ_TEXT' 
    EXPORTING 
      id                      = header-tdid 
      language                = sy-langu 
      name                    = p_name 
      object                  = header-tdobject 
    TABLES 
      lines                   = lines 
    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. 
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno 
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. 
  ENDIF. 

  CALL FUNCTION 'CONVERT_ITF_TO_STREAM_TEXT' 
    EXPORTING 
      language    = sy-langu 
    TABLES 
      itf_text    = lines 
      text_stream = texttable. 

  CALL METHOD x_editor->set_text_as_stream 
    EXPORTING 
      text            = texttable 
    EXCEPTIONS 
      error_dp        = 1 
      error_dp_create = 2 
      OTHERS          = 3. 
ENDFORM.                    "readtext 


注:本例中长文本object是系统自带的,如本例的tdobject(TEXT)和tdid(ST),也可以在需要在表TTXOB和TTXID中维护(TCODE:SE75)

你可能感兴趣的:(Stream,function,object,header,report,Parameters)