SAP long text SAP长文本读取。

用途:常常会用到类似于说明或者备注这样的信息,这些信息就是长文本信息。long text.

查看:比如销售订单中(SO) 的表单头和表单行项目都可以进行长文本的备注。查看途径: VA02-->输入订单号-->goto--->header--->texts-->show detail (一个放大镜的图标)-->goto --->header.到texts这一步就可以看到备注信息,在最后一步可以看到备注的 头信息。Item的备注页可以通过类似的途径来查看,不再赘述。

 

那么这些长文本信息存在什么地方呢? 通过对表的查看,发现SO对应的表VBAP,VBAK,不管是header信息还是Item信息里面都没有存储相关的数据。事实上,SAP系统把所有的长文本信息都存在了STXH 和 STXL 这两张表里面。

STXH :STXD SAPscript text file header,长文本的头数据

STXL :STXD SAPscript text file lines,长文本的明细数据。是一张簇表。

 

通过上面的信息查看,我们在表里面也可以找到数据的数据库存储信息。

 

对于STXH ,我们可以发现他的关键字有:

TDOBJECT   对象  很多情况下市表名,但不全是。
TDNAME   名称 很多情况下是表单编号&明细号
TDID   ID  这个就是ID,
TDSPRAS 语言。

而这些信息都可以在查看的时候看到。

也就是说通过这些信息我们就可以定位到我们所需要的长文本信息。

 

那在程序中,我们怎么来取这些数呢?直接取么?我们可以看到 STXL-CLUSTD是类似乱码的东西。怎么成这样的,不清楚,簇表的长字段都是这个鸟样子。那如果我们来解析,完了。

在程序中,对于长字段,可能的操作大多数是读取。

在这个时候我们就用: FUNCTION: READ_TEXT。

 CALL FUNCTION 'READ_TEXT'
  EXPORTING
   CLIENT                        = SY-MANDT
    id                            = ID
    language                      = LANGU
    name                          = NAME
    object                        = OBJECT
*   ARCHIVE_HANDLE                = 0
*   LOCAL_CAT                     = ' '
*  IMPORTING
*   HEADER                        = HEADER
  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
         .

 

上面的几个传入的参数都是上面讲过的。

对于传出参数:

LINES则是以一个内表的形式保存了long text,每行数据最多存72个字符。也就是说长文本中的数据被以72个一段的形式分割成了很多段,保存在内标中。这样不管长文本再长,我们都可以顺利地读取出来。并进行处理。

对于长文本的修改和删除,还有其他的功能模块与之对应。

SAVE_TEXT

DELETE_TEXT

这在用法上就大同小异了。在此不多赘述。

 



1.编辑模式,双击文本;或通过以下两种方式进入:

2.转到--表头(弹出信息框内容,既是函数所需要的参数了);

3.使用函数READ_TEXT

  调用方式: PERFORM gettext using itab-vgbel '0001' '1' 'VBBK' changing ITAB-SAPPO.     "读取长文本  T_TDNAME T_TDID T_TDSPRAS T_TDOBJECT

定义:函数如下:

form gettext using T_TDNAME T_TDID T_TDSPRAS T_TDOBJECT changing T_Text.
  clear: h_itab.
  clear: h_itab[].
  data: P LIKE h_itab-TDLINE.
  DATA:stxl LIKE stxl OCCURS WITH HEADER LINE."抬头备注

  SELECT SINGLE FROM STXL INTO STXL
    WHERE TDNAME = T_TDNAME AND TDID = T_TDID AND TDSPRAS = T_TDSPRAS AND TDOBJECT = T_TDOBJECT.
  CALL FUNCTION 'READ_TEXT'
    EXPORTING
      client                  = sy-mandt
      id                      = STXL-TDID    "读取文本的id
      language                = STXL-TDSPRAS "读取文本的语言
      name                    = STXL-TDNAME    "读取文本的名字
      object                  = STXL-TDOBJECT
    TABLES
      lines                   = h_itab
    EXCEPTIONS
      id                      1
      language                2
      name                    = 3
      not_found               = 4
      object                  = 5
      reference_check         = 6
      wrong_access_to_archive = 7
      OTHERS                  8.

  DATA: itemp LIKE thead-tdname."itemp为变量无值

  LOOP AT h_itab .
    CONCATENATE itemp h_itab-tdline INTO itemp SEPARATED BY space.  "解决回车事件
  ENDLOOP.
*  itab-TSET = itemp.
  T_Text = itemp.
  itemp = ''.
endform. "readitemtext


例子:

loop itab.

DATAit_tline LIKE tline OCCURS WITH HEADER LINE.
data :vl_tdname LIKE thead-tdname.


 vl_tdname itab-vbeln.

DATA:s_leadtime(3TYPE c.
    CALL FUNCTION 'READ_TEXT'
      EXPORTING
        CLIENT                  sy-mandt
        id                      'Z002'
        language                '1'
        name                    vl_tdname
        object                  'VBBK'
      TABLES
        lines                   it_tline
      EXCEPTIONS
        ID                      1
        LANGUAGE                2
        NAME                    3
        NOT_FOUND               4
        OBJECT                  5
        REFERENCE_CHECK         6
        WRONG_ACCESS_TO_ARCHIVE 7
        OTHERS                  8.
    LOOP at it_tline.
      CONCATENATE itemp it_tline-tdline INTO itemp SEPARATED BY space.
    endloop.
    s_leadtime itemp.
    CONDENSE s_leadtime NO-GAPS.

    it_head-leadtime s_leadtime.

endloop.


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ChampaignWolf

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值