SAP 长文本

原文地址:SAP 长文本 作者:stevenpok

REPORT  z_barry_test_textedit NO STANDARD PAGEHEADING .

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 .
    CREATEOBJECT 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.

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

AT SELECTION-SCREEN.
  header-tdobject  ='Z001'.
 header-tdname   = p_name.
 header-tdid     = '0001'.
 header-tdspras   = sy-langu.

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

*&---------------------------------------------------------------------*
*&     Form  savetext
*&---------------------------------------------------------------------*
FORM savetext.
  CALL METHODx_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.
    MESSAGEs000(oo) WITH '保存成功'.
    COMMITWORK.
  ELSE.
    MESSAGE IDsy-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 IDsy-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 METHODx_editor->set_text_as_stream
   EXPORTING
     text           = texttable
   EXCEPTIONS
     error_dp       = 1
     error_dp_create = 2
     OTHERS         = 3.
ENDFORM.                   "readtext

* 清空长文本
FORM cleartext .
 

CALL METHODx_editor->delete_text
   EXCEPTIONS
     error_cntl_call_method = 1
     OTHERS                = 2.
ENDFORM.                   " CLEARTEXT

你可能感兴趣的:(SAP 长文本)