【转载】ABAP自定义长文本的处理

  • 2020-04-04
  • Admin

SAP中所有的长文本都存在如下两张表中:

  • STXH 长文本的抬头信息
  • STXL 长文本的明细信息

长文本在使用前,需要先进行配置,如果不配置是不可能往表STXH和STXL中写入文本值的。

配置在视图V_TTXIDI和视图V_TTXOBI中进行。

前台事务代码:SE75

 

保存之后,双击“ZSD001”进入维护ID。

 

 

相应的对长文本进行增加、保存、删除的ABAP代码示例如下:把

变量的声明

  1. DATA: lines TYPE STANDARD TABLE OF tline ,
  2.       it_line TYPE TABLE OF line,
  3.       header LIKE thead .
  4. DATA: container1 TYPE REF TO cl_gui_custom_container,
  5.       editor1    TYPE REF TO cl_gui_textedit.
  6. DATA: ok_code LIKE sy-ucomm,
  7.       save_ok LIKE sy-ucomm.

长文本的初始化

  1.   IF container1 IS INITIAL.
  2.     CREATE OBJECT:container1 EXPORTING container_name = 'COMMENT1',
  3.                   editor1    EXPORTING parent = container1.
  4.   CALL METHOD editor1->set_statusbar_mode
  5.     EXPORTING
  6.       statusbar_mode = 0.
  7.   CALL METHOD editor1->set_toolbar_mode
  8.     EXPORTING
  9.       toolbar_mode = 0.
  10. ENDIF.
  11.   CALL METHOD editor1->set_text_as_stream
  12.     EXPORTING
  13.       text = it_line.

长文本的保存

  1.   REFRESH it_line.
  2.   CALL METHOD editor1->get_text_as_stream
  3.     IMPORTING
  4.       text = it_line.
  5. *--长文本保存
  6.     header-tdobject  = 'Z_TEST01'.     "object
  7.     header-tdname    = '001'.
  8.     header-tdid      = 'LTXT'.
  9.     header-tdspras   = sy-langu.
  10.     CALL FUNCTION 'CONVERT_STREAM_TO_ITF_TEXT'
  11.       EXPORTING
  12.         language    = sy-langu
  13.       TABLES
  14.         text_stream = it_line
  15.         itf_text    = lines.
  16.     CALL FUNCTION 'SAVE_TEXT'
  17.       EXPORTING
  18.         header          = header
  19.         savemode_direct = 'X'
  20.       TABLES
  21.         lines           = lines
  22.       EXCEPTIONS
  23.         id              = 1
  24.         language        = 2
  25.         name            = 3
  26.         object          = 4
  27.         OTHERS          = 5.
  28.     CLEAR header.
  29.     REFRESH lines.

长文本的显示

  1.    header-tdobject  = 'Z_TEST01'.     "object
  2.    header-tdname    = '001'.
  3.    header-tdid      = 'LTXT'.
  4.    header-tdspras   = sy-langu.
  5.    CALL FUNCTION 'READ_TEXT'
  6.      EXPORTING
  7.        id                      = header-tdid
  8.        language                = sy-langu
  9.        name                    = header-tdname
  10.        object                  = header-tdobject
  11.      TABLES
  12.        lines                   = lines
  13.      EXCEPTIONS
  14.        id                      = 1
  15.        language                = 2
  16.        name                    = 3
  17.        not_found               = 4
  18.        object                  = 5
  19.        reference_check         = 6
  20.        wrong_access_to_archive = 7
  21.        OTHERS                  = 8.
  22.    CALL FUNCTION 'CONVERT_ITF_TO_STREAM_TEXT'
  23.      EXPORTING
  24.        language    = sy-langu
  25.      TABLES
  26.        itf_text    = lines
  27.        text_stream = it_line.
  28.    CALL METHOD editor1->set_statusbar_mode
  29.      EXPORTING
  30.        statusbar_mode = 0.
  31.    CALL METHOD editor1->set_toolbar_mode
  32.      EXPORTING
  33.        toolbar_mode = 0.
  34.    CALL METHOD editor1->set_text_as_stream
  35.      EXPORTING
  36.        text = it_line.
  37.    CALL METHOD editor1->set_readonly_mode
  38.      EXPORTING
  39.        readonly_mode = '1'.

长文本的删除

  1. header-tdobject  = 'Z_TEST01'.     "object
  2.    header-tdname    = '001'.
  3.    header-tdid      = 'LTXT'.
  4.    header-tdspras   = sy-langu.
  5.   CALL FUNCTION 'DELETE_TEXT'
  6.    EXPORTING
  7.        id                      = header-tdid
  8.        language                = sy-langu
  9.        name                    = header-tdname
  10.        object                  = header-tdobject
  11. *     SAVEMODE_DIRECT       = ' '
  12. *     TEXTMEMORY_ONLY       = ' '
  13. *     LOCAL_CAT             = ' '
  14. *   EXCEPTIONS
  15. *     NOT_FOUND             = 1
  16. *     OTHERS                = 2
  17.           .
  18.   IF sy-subrc <> 0.
  19.    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
  20.            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  21.   ENDIF.

在ABAP的长文本操作中,我们是无法直接看到存储的长文本的,只能通过程序读取长文本在界面中显示,这点是和其他类型的变量区别开来的。

原文:https://blog.csdn.net/zhongguomao/article/details/105315329

联系站长

QQ:769220720