ABAP 中長文本處理

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_TTXOBI

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 .

發佈了25 篇原創文章 · 獲贊 0 · 訪問量 792
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章