ABAP 中长文本处理(此例利用长文本特性开发简历模板)CL_GUI_TEXTEDIT

SAP中长文本的需求及处理方法

相关类  CL_GUI_TEXTEDIT

主要方法 CL_GUI_TEXTEDIT->GET_TEXT_AS_R3TABLE

               CL_GUI_TEXTEDIT->SET_TEXT_AS_R3TABLE

               CL_GUI_TEXTEDIT->SET_TEXT_AS_STREAM

               CL_GUI_TEXTEDIT->GET_TEXT_AS_STREAM

 CALL FUNCTION 'CONVERT_STREAM_TO_ITF_TEXT'

                               'SAVE_TEXT'     " 保存长文本信息

                                'READ_TEXT'   " 读取长文本信息

                                'CONVERT_ITF_TO_STREAM_TEXT'

一、SAP中所有的长文本都存在两张表中:

          STXH 长文本的抬头信息

          STXL 长文本的明细信息

但是长文本在使用前,需要先在视图V_TTXIDI和视图V_TTXOBI中进行配置。

1. SE16维护视图V_TTXOBI

2. SE16维护视图V_TTXIDI

3.插入数据后可以去查看表 STXH 长文本的抬头信息

4. 插入数据后可以去查看表 STXL 长文本的明细信息

二,配置完后进行具体读写等

1.变量声明 

DATA GO_PARENT TYPE REF TO CL_GUI_CUSTOM_CONTAINER .
DATA GO_TEXTEDIT TYPE  REF TO CL_GUI_TEXTEDIT .

DATA: LINES   TYPE STANDARD TABLE OF TLINE,
      IT_LINE TYPE TABLE OF LINE,
      IT_LINE1 TYPE TABLE OF LINE,
      IT_LINE2 TYPE TABLE OF LINE,
      HEADER  LIKE THEAD.           "定义内表对长文本保存
CONSTANTS: C_LINE_LENGTH TYPE I VALUE 256 .
"自定义方式
TYPES: BEGIN OF GTY_TEXT,
        LINE(C_LINE_LENGTH) TYPE C,
       END OF GTY_TEXT.
DATA GT_TEXT_SAVE TYPE STANDARD TABLE OF GTY_TEXT ."定义内表对长文本保存

 2.实例化对象,此类的构造方法和CL_GUI_ALV_GRID 一样也需要放置一个容器 , 初始化长文本

FORM CREATE_TEXTEDIT TABLES PPT_LINE LIKE IT_LINE
                     USING PO_PARENT TYPE REF TO CL_GUI_CUSTOM_CONTAINER
                            P_CON   TYPE CHAR10
                      CHANGING PO_TEXTEDIT TYPE REF TO CL_GUI_TEXTEDIT
                               .
  DATA PT_LINE TYPE TABLE OF LINE.
  PT_LINE[] = PPT_LINE[].
  IF PO_PARENT IS INITIAL.
    CREATE OBJECT PO_PARENT
      EXPORTING
        CONTAINER_NAME = P_CON.
    CREATE OBJECT PO_TEXTEDIT
      EXPORTING
        WORDWRAP_MODE      = CL_GUI_TEXTEDIT=>WORDWRAP_AT_FIXED_POSITION
        WORDWRAP_TO_LINEBREAK_MODE = CL_GUI_TEXTEDIT=>TRUE
        PARENT                     = PO_PARENT.
    CALL METHOD PO_TEXTEDIT->SET_STATUSBAR_MODE
      EXPORTING
        STATUSBAR_MODE         = 0
      EXCEPTIONS
        ERROR_CNTL_CALL_METHOD = 1
        INVALID_PARAMETER      = 2
        OTHERS                 = 3.
    CALL METHOD PO_TEXTEDIT->SET_TOOLBAR_MODE
      EXPORTING
        TOOLBAR_MODE           = 0
      EXCEPTIONS
        ERROR_CNTL_CALL_METHOD = 1
        INVALID_PARAMETER      = 2
        OTHERS                 = 3.
    IF SY-SUBRC <> 0.
*     Implement suitable error handling here
    ENDIF.

  ENDIF.

3. 长文本的保存:

FORM SAVE_COMPANYDATAS USING PS_COMPANY_CNO LIKE GS_COMPANY-COMNO
                              P_CONNAME TYPE CHAR20
                              PO_TEXTEDIT TYPE REF TO CL_GUI_TEXTEDIT .
  DATA P_TDNAME LIKE HEADER-TDNAME .
  P_TDNAME = PS_COMPANY_CNO && '_' && P_CONNAME .
*  REFRESH IT_LINE.
  REFRESH IT_LINE .
  CALL METHOD PO_TEXTEDIT->GET_TEXT_AS_STREAM
    IMPORTING
      TEXT = IT_LINE.
*--长文本保存
  HEADER-TDOBJECT  = 'ZSTU_COMP'.     "object
  HEADER-TDNAME    = P_TDNAME.
  HEADER-TDID      = 'LTXT'.
  HEADER-TDSPRAS   = SY-LANGU.
  CALL FUNCTION 'CONVERT_STREAM_TO_ITF_TEXT'
    EXPORTING
      LANGUAGE    = SY-LANGU
    TABLES
      TEXT_STREAM = IT_LINE
      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.
  CLEAR HEADER.
  REFRESH: LINES ,IT_LINE.

ENDFORM.

4.长文本展示

FORM SHOW_LTXTDATAS  USING VALUE(P_TDOBJECT)
                            PS_COMPANY_CNO LIKE GS_COMPANY-CNO
                            VALUE(P_CONNAME)
                     CHANGING PO_TEXTEDIT TYPE REF TO CL_GUI_TEXTEDIT
                              PT_LINE LIKE IT_LINE.
  DATA P_TDNAME LIKE HEADER-TDNAME .
  P_TDNAME = PS_COMPANY_CNO && '_' && P_CONNAME .
  HEADER-TDOBJECT  = P_TDOBJECT.     "object
  HEADER-TDNAME    = P_TDNAME.
  HEADER-TDID      = 'LTXT'.
  HEADER-TDSPRAS   = SY-LANGU.
  CALL FUNCTION 'READ_TEXT'
    EXPORTING
      ID                      = HEADER-TDID
      LANGUAGE                = SY-LANGU
      NAME                    = HEADER-TDNAME
      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.
  CALL FUNCTION 'CONVERT_ITF_TO_STREAM_TEXT'
    EXPORTING
      LANGUAGE    = SY-LANGU
    TABLES
      ITF_TEXT    = LINES
      TEXT_STREAM = PT_LINE.
  CALL METHOD PO_TEXTEDIT->SET_STATUSBAR_MODE
    EXPORTING
      STATUSBAR_MODE = 0.
  CALL METHOD PO_TEXTEDIT->SET_TOOLBAR_MODE
    EXPORTING
      TOOLBAR_MODE = 0.
  CALL METHOD PO_TEXTEDIT->SET_TEXT_AS_STREAM
    EXPORTING
      TEXT = PT_LINE.
  IF GV_DISPLAY EQ GC_X.
    CALL METHOD PO_TEXTEDIT->SET_READONLY_MODE
      EXPORTING
        READONLY_MODE = '1'.
  ELSE.
    CALL METHOD PO_TEXTEDIT->SET_READONLY_MODE
      EXPORTING
        READONLY_MODE = '0'.
  ENDIF.
  IF R_AR NE GC_X.
    CALL METHOD GO_TEXTEDIT->SET_READONLY_MODE
      EXPORTING
        READONLY_MODE = '1'.

  ENDIF.


ENDFORM.

5. GET_TEXT_AS_R3TABLE

CALL METHOD GO_TEXTEDIT->GET_TEXT_AS_R3TABLE
  IMPORTING
    TABLE = GT_TEXTSAVE .

CALL METHOD CL_GUI_CFW=>FLUSH .

6.释放.

IF GO_TEXTEDIT IS NOT INITIAL.
  CALL METHOD GO_TEXTEDIT->FREE .
  FREE GO_TEXTEDIT.
ENDIF.
CALL METHOD CL_GUI_CFW=>FLUSH .

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Gong JX

多谢鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值