现在的位置: 首页 > 综合 > 正文

SAP ABAP中读取项目文本的方法

2013年12月01日 ⁄ 综合 ⁄ 共 4304字 ⁄ 字号 评论关闭

ZZ:http://www.cnblogs.com/VerySky/articles/2526539.html

SAP ABAP中读取项目文本的方法

首先,SAP中所有的项目文本都存在两张数据表中

STXH 抬头项目文本 透明表

STXL 明细项目文本 透明表


在STXH和STXL中可以找到需要的文本对象。


然后通过Read_Text函数来读取文本内容。


以读取Billing抬头文本为例。

1,先配置Billing抬头,建一个项目文本,ID:F001。

2,然后建立一张Billing,取得Billing号码,Billing抬头数据在VBRK数据表中。

3,建立一个Demo程序读取抬头项目文本。


REPORT ZZXLTEST005 .

TABLES: VBRK.

DATA: TEXTNAME(70) TYPE C.

DATA: T_READ LIKE TABLE OF TLINE WITH HEADER LINE.


SELECTION-SCREEN BEGIN OF BLOCK BLOC1 WITH FRAME TITLE TEXT-001.

  PARAMETERS: PVBELN LIKE VBRK-VBELN.

SELECTION-SCREEN END OF BLOCK BLOC1.

START-OF-SELECTION.

TEXTNAME = PVBELN.


*VBBK是从STXH中找到的。


PERFORM FRM_READ_TEXT USING 'F001' TEXTNAME 'VBBK'.

    IF SY-SUBRC = 0.

      READ TABLE T_READ INDEX 1.

      WRITE T_READ-TDLINE.

    ENDIF.

END-OF-SELECTION.


FORM FRM_READ_TEXT USING FID TEXTN OBJN.

  CALL FUNCTION 'READ_TEXT'

       EXPORTING

            ID                      = FID

            LANGUAGE                = SY-LANGU

            NAME                    = TEXTN

            OBJECT                  = OBJN

       TABLES

            LINES                   = T_READ

       EXCEPTIONS

            ID                      = 1

            LANGUAGE                = 2

            NAME                    = 3

            NOT_FOUND               = 4

            OBJECT                  = 5

            REFERENCE_CHECK         = 6

            WRONG_ACCESS_TO_ARCHIVE = 7

            OTHERS                  = 8.

ENDFORM.

 

除此READ_TEXT之外,还有:

READ_TEXT_INLINE

主要是找到他的:OBJECTNAME, TEXT OBJECT, TEXT ID

http://www.itpub.net/thread-811046-1-1.html

SAP长文本的读取和创建

http://scnblogs.techweb.com.cn/winson/archives/78.html

在SAP系统里面很多地方都用到了长文本,这些长文本的值以其他字符的形式存在表STXL和STXH里面,不能直接去这两个表里面去取值,而是要通过函数READ_TEXT去取,很多新手不了解的地方可能就是怎么取到READ_TEXT函数里面的那些参数值,我这边介绍两种方法,通过这两种方法都可以找到那几个参数:

一、第一种利用跟踪查询,不是用ST05跟踪,而是去表里面跟踪查询,比如你刚刚创建了一个销售订单的长文本,这时候你可以去表STXH输入日期和刚刚的时间,然后查看在这个表里刚刚产生的这些数据,依据此项就可以找到对应的参数了,这个方法非常实用

二、第二种前台查看,进入长文本编辑界面以后(记得是双击长文本编辑器进入),点击菜单转到—->表头,里面出现的就是对应的那些参数值,如下图:

e69caae591bde5908d3

e69caae591bde5908d11

如果是要用ABAP代码创建文本用函数CREATE_TEXT,修改文本用SAVE_TEXT

贴上用过的几个代码:

创建抬头文本

call function ‘CREATE_TEXT’

    exporting

      fid       = ‘0001′

      flanguage = ‘1′

      fname     = s_deliv_numb

      fobject   = ‘VBBK’

    tables

      flines    = it_texts.

  refresh it_texts.

创建行项目文本

call function ‘CREATE_TEXT’

      exporting

        fid       = wa_thead-tdid

        flanguage = ‘1′

        fname     = wa_thead-tdname

        fobject   = ‘VBBP’

      tables

        flines    = it_texts.

读取抬头文本

      call function ‘READ_TEXT’

        exporting

*         CLIENT                        = SY-MANDT

          id                            = ‘0001′

          language                      = ‘1′

          name                          = name

          object                        = ‘VBBK’

        tables

          lines                         = lines[]

                .

参数的值如果是抬头文本可以到表STXH查看,如果是项目文本可以到STXL查看

读取行项目文本

call function ‘READ_TEXT’

        exporting

*         CLIENT                        = SY-MANDT

          id                            = ‘0001′

          language                      = ‘1′

          name                          = name

          object                        = ‘VBBP’

        tables

          lines                         = lines[]

 CALL FUNCTION ‘SAVE_TEXT’

          EXPORTING

           CLIENT                = SY-MANDT

            HEADER                = HEADER

            SAVEMODE_DIRECT      = ‘X’

          TABLES

            LINES                 = LINES

                  .

 

 

http://blog.sina.com.cn/s/blog_53b2e1f70100znfn.html

 

用途:常常会用到类似于说明或者备注这样的信息,这些信息就是长文本信息。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

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

抱歉!评论已关闭.