ABAP长文本

来源:互联网 发布:32bit安装tensorflow 编辑:程序博客网 时间:2024/04/30 09:42

在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 objectppcont_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'.
  refreshit_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.
    clearfield,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.

1 0
原创粉丝点击