加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

ABAP在任意区域中添加长文本

(2013-04-11 21:52:02)
分类: ABAP

     大家在编程过程中,一定经常用到READ_TEXT这个函数来读取长文本,下面我介绍的是如果自己定义一个长文本object和ID,自己储存长文本。

    在项目中,做了很多功能性开发,用户要写一些备注或者是审批意见和建议,自定义表里面储存字段的长度是有限的,这个时候能自定义长文本就很实用了。

第一步:建长文本的OBJECT,TCODE SE75,选择‘文本对象和识别码’,点击change,这个时候就会看到SAP系统中存在的所有长文本OBJECT,点‘新建’,输入文本对象,描述,选择保存状态是更新,选择编辑器应用格式是TA,行宽选一下,回车,搞定。数据都保存在TTXOB和TTXID这两个表里面。

第二步:建长文本的ID,双击刚刚创建的OBJECT,点新建,就可以创建ID了

第三步:先READ_TEXT,如果sy-subrc = 0,说明可以读到,如果不等于0,就说明还没有写长文本,那就可以用INIT_TEXT函数先初始化一下,再EDIT_TEXT编辑一下,最后SAVE_TEXT保存一下就OK了。

------------------------------------------------------------------------------------------------------------------------------------------

   谨记,在屏幕中画一个容器。程序中用到的HEADER数据,在SE75中添加。

附代码:

*&---------------------------------------------------------------------*
*& Report  Z_TEST_LONGTEXT
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  Z_TEST_LONGTEXT.

TABLESSSCRFIELDS.

DATA GC_CUSTOM_CONTROL_NAME TYPE SCRFNAME VALUE 'CC_NN'.
DATA GR_CCONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER.

DATAX_DOCKING TYPE REF TO CL_GUI_DOCKING_CONTAINER,
      X_EDITOR  TYPE REF TO CL_GUI_TEXTEDIT.

DATAHEADER LIKE THEAD.
DATALINES TYPE STANDARD TABLE OF TLINE.

TYPES:BEGIN OF TEXTLINE,
  LINE(255TYPE C,
  END OF TEXTLINE.

DATA TEXTTABLE TYPE TABLE OF TEXTLINE.

PARAMETERSP_NAME(70DEFAULT '12345'.

START-OF-SELECTION.
PERFORM LONGTEXT.
PERFORM DO_TEXT.
CALL SCREEN 0100.


*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
      text
*----------------------------------------------------------------------*
MODULE STATUS_0100 OUTPUT.
  SET PF-STATUS '0100'.
  SET TITLEBAR '0100'.
ENDMODULE                STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
      text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100 INPUT.
  DATAOK_CODE LIKE SY-UCOMM.
  OK_CODE SY-UCOMM.
  CASE OK_CODE.
    WHEN 'BACK'.
      LEAVE TO SCREEN 0.
    WHEN 'EXIT' OR 'CANCEL'.
      LEAVE PROGRAM.
    WHEN 'SAVE'.
      PERFORM SAVETEXT.
    WHEN 'READ'.
      PERFORM READTEXT.
  ENDCASE.
ENDMODULE                USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*&      Form  LONGTEXT
*&---------------------------------------------------------------------*
      text
*----------------------------------------------------------------------*
 -->  p1        text
 <--  p2        text
*----------------------------------------------------------------------*
FORM LONGTEXT .
  CREATE OBJECT GR_CCONTAINER
    EXPORTING
      CONTAINER_NAME GC_CUSTOM_CONTROL_NAME.
  CREATE OBJECT X_EDITOR
    EXPORTING
      PARENT GR_CCONTAINER
      MAX_NUMBER_CHARS 100000.
ENDFORM                   LONGTEXT
*&---------------------------------------------------------------------*
*&      Form  DO_TEXT
*&---------------------------------------------------------------------*
      text
*----------------------------------------------------------------------*
 -->  p1        text
 <--  p2        text
*----------------------------------------------------------------------*
FORM DO_TEXT .
  HEADER-TDOBJECT 'ZTEST'.
  HEADER-TDNAME   P_NAME.
  HEADER-TDID     '0001'.
  HEADER-TDSPRAS  SY-LANGU.
ENDFORM                   DO_TEXT
*&---------------------------------------------------------------------*
*&      Form  SAVETEXT
*&---------------------------------------------------------------------*
      text
*----------------------------------------------------------------------*
 -->  p1        text
 <--  p2        text
*----------------------------------------------------------------------*
FORM SAVETEXT .
  CALL METHOD X_EDITOR->GET_TEXT_AS_STREAM
    IMPORTING
      TEXT    TEXTTABLE.

  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.
  IF SY-SUBRC EQ 0.
    MESSAGE 'SAVE SUCCESSFULLY' TYPE 'S' DISPLAY LIKE 'I'.
  ENDIF.

ENDFORM                   SAVETEXT
*&---------------------------------------------------------------------*
*&      Form  READTEXT
*&---------------------------------------------------------------------*
      text
*----------------------------------------------------------------------*
 -->  p1        text
 <--  p2        text
*----------------------------------------------------------------------*
FORM READTEXT .
  CLEARTEXTTABLETEXTTABLE[].
  CALL FUNCTION 'READ_TEXT'
    EXPORTING
      ID    HEADER-TDID
      LANGUAGE SY-LANGU
      NAME P_NAME
      OBJECT HEADER-TDOBJECT
    TABLES
      LINES  LINES.

  CALL FUNCTION 'CONVERT_ITF_TO_STREAM_TEXT'
    EXPORTING
      LANGUAGE   SY-LANGU
    TABLES
      TEXT_STREAM TEXTTABLE
      ITF_TEXT LINES.

  CALL METHOD X_EDITOR->SET_TEXT_AS_STREAM
    EXPORTING
      TEXT    TEXTTABLE.
ENDFORM                   READTEXT

               

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有