1.直接可以从READ_TEXT中取长文本。
查找READ_TEXT要填写属性的方法。
2.情况描述: (以下为转载)
假设在做me21n,va01,mm01,vf01的时候输入了长本文,在保存的时候想要通过增强得到长文本的内容,是不能通过read_text的function来读取的,原因是该信息还在内存里没有写到数据表STXH中,那么有什么办法能够取到
如果我在billing head的text ID是‘z004’的文本
Biliing的增强是:
Enhancement : SDVFX002 User exit for A/R line in transfer to accounting
Component: EXIT_SAPLV60B_002
所以代码就放到这里面:
DATA BEGIN OF THEADER. INCLUDE STRUCTURE THEAD. DATA END OF THEADER. DATA: LINES LIKE STANDARD TABLE OF TLINE WITH HEADER LINE. DATA: LMEMORY_ID(30) VALUE 'SAPLSTXD'. "do not change data: CATALOG LIKE TCATALOG OCCURS 0 WITH HEADER LINE. IMPORT CATALOG from MEMORY ID 'SAPLSTXD'. READ TABLE CATALOG WITH KEY TDID = 'Z004' TDOBJECT = 'VBBK'. CHECK SY-SUBRC = 0. CONCATENATE LMEMORY_ID CATALOG-ID INTO LMEMORY_ID. IMPORT THEAD TO THEADER TLINE TO LINES FROM MEMORY ID LMEMORY_ID.
通过这段代码可以得到当前的text文本信息
IMPORT CATALOG from MEMORY ID ’SAPLSTXD’.
在catalog里面存放的是各个文本的head信息,主要包含了textID TextObject可以看到下面的debug截图:
图中的字段TDOBJECT存放的是billing的head还是item的object, TDID是他的text ID(如果这个ID的text有数值就会包含在这个表中)这里关键的是‘ID’这个字段,把这个字段的值前面加上SAPLSTXD就可以得到想要的文本的路径,如现在我想要抓取billing header的‘Z004’的文本内容,那么它对应的内存地址就是SAPLSTXD000003再通过上图的这些信息,调用
IMPORT THEAD TO THEADER
TLINE TO LINES
FROM MEMORY ID ‘SAPLSTXD000003’.就可以得到billing head的text id是‘z004’的文本内容,得到文本内容,文本内容放在lines内表里,如下图: