SAP ABAP中讀取項目文本的方法


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

這在用法上就大同小異了。在此不多贅述。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM