SAP 系统里的长文本

在ABAP中,我们经常会用到长文本来描述详细信息。

长文本存储在表格:STXH(抬头),STXL(行项目)中。

长文本中有四个关键属性:

object、id、name、langguge

即:

TDOBJECT
TDNAME
TDID
TDSPRAS

其中language不必解释,object 和 id 可以在se75中进行配置,一个object 可以对一个多个ID,比如我们常用的 TEXT + ST

name 一般用对象号。

而对长文本的操作主要是  READ_TEXT  和 SAVE_TEXT

分别实现长文本的读取和写入,例如:

REPORT  ZLJC9999.
DATA:  TD_NAME   LIKE STXH-TDNAME.
DATA ITAB_LINE LIKE TLINE OCCURS 0 WITH HEADER LINE.
TD_NAME = 'LJC0000001'.
CLEAR ITAB_LINE.
REFRESH ITAB_LINE.


ITAB_LINE-TDLINE = 'ARE YOU DOG?'.    "把多行长文本加在一起
APPEND  ITAB_LINE.

DATA:L_THEAD  TYPE THEAD.
L_THEAD-TDOBJECT = 'ZLJC'.

L_THEAD-TDNAME = TD_NAME.
L_THEAD-TDID     = 'SB'.
L_THEAD-TDSPRAS  = SY-LANGU.


CALL FUNCTION 'SAVE_TEXT'
  EXPORTING
    HEADER = L_THEAD
  TABLES
    LINES  = ITAB_LINE.
COMMIT WORK.

CALL FUNCTION 'READ_TEXT'                                               
       EXPORTING
              CLIENT                       = SY-MANDT
              ID                           = L_THEAD-TDID
              LANGUAGE                     = SY-LANGU
              NAME                         =  TD_NAME
              OBJECT                       = L_THEAD-TDOBJECT
            TABLES
              LINES                         = ITAB_LINE
           EXCEPTIONS
            NOT_FOUND                     = 4.

IF SY-SUBRC = 0.
  LOOP AT ITAB_LINE.
    WRITE: ITAB_LINE-TDLINE .    "把多行长文本加在一起
  ENDLOOP.
ENDIF.

一般我们还会提供长文本的录入、编辑、显示界面。这个需要用面向OO的组件。在屏幕上画一个Container

初始化长文本界面的例子:


DATA:ppcont_desc1 TYPE REF TO cl_gui_custom_container,
      ppedit_desc1    TYPE REF TO cl_gui_textedit,
    create object: ppcont_desc1 exporting container_name = 'LONGTEXT1',
                      ppedit_desc1    exporting parent = ppcont_desc1.
        call method ppedit_desc1->set_toolbar_mode
          exporting
            toolbar_mode = cl_gui_textedit=>true.      "长文本 菜单加载 FALSE 取消菜单
        call method ppedit_desc1->set_statusbar_mode
          exporting
            statusbar_mode = cl_gui_textedit=>false.
        call method ppedit_desc1->register_event_dblclick
          exporting
            appl_event = 'X'.

   
          call method ppedit_desc1->set_visible
            exporting
              visible = 'X'.
      

长文本写到编辑区域的例子:

 l_tdid = 'ST'.
  l_tdobject = 'TEXT'.
  refresh: it_tab3[],
           text_tab[].
  clear it_tab3.
  call function 'READ_TEXT'
    exporting
      id                      = l_tdid
      language                = sy-langu
      name                    = p_tdname
      object                  = l_tdobject
    tables
      lines                   = it_tab3
    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.
  endif.
  loop at it_tab3.
    line = it_tab3-tdline.
    append line to text_tab.
  endloop.
  refresh it_tab3[].

  call method ppedit_desc1->set_text_as_r3table
    exporting
      table = text_tab
*    EXCEPTIONS
*      error_dp               = 1
*      error_cntl_call_method = 2
*      error_dp_create        = 3
*      potential_data_loss    = 4
*      OTHERS                 = 5
      .
  refresh  text_tab[].

将界面中的长文本保存的例子:

break ljc.
  refresh:  text_tab[],
          it_tab3.
*  CALL METHOD ppedit_desc->get_text_as_r3table
*    IMPORTING
*      table = text_tab.
  call method ppedit_desc->get_text_as_r3table
   exporting
     only_when_modified     = ''
   importing
*      TEXT = TEXT_TAB.
      table = text_tab
   exceptions
     error_dp               = 1
     error_cntl_call_method = 2
     error_dp_create        = 3
     potential_data_loss    = 4
     others                 = 5.
  loop at text_tab into field.
    it_tab3-tdline = field.
    append it_tab3.
    clear: field,it_tab3.
  endloop.
**** 保存长文本
  l_thead-tdobject = 'TEXT'.
  clear l_thead-tdname.
*  concatenate 'PP' ZPLM090_PP-PPNUM  into L_THEAD-TDNAME.
  l_thead-tdname = tab_check-objnr.
  l_thead-tdid     = 'ST'.
  l_thead-tdspras  = sy-langu.
  call function 'SAVE_TEXT'
    exporting
      header = l_thead
    tables
      lines  = it_tab3.
  commit work.

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值