1、获取长文本
常用的方式就是通过READ_TEXT函数获取长文本,且每次只能获得一行数据,在报表中将会严重拖慢查询速度。
所以,此处介绍如何通过后台表查询长文本
"-----------------------------@斌将军-----------------------------
TYPES:BEGIN OF ty_stxl_raw,
clustr TYPE stxl-clustr,
clustd TYPE stxl-clustd,
END OF ty_stxl_raw.
TYPES:BEGIN OF ty_ltext,
tdname TYPE stxl-tdname,
tdid TYPE stxl-tdid,
ltext TYPE string,
END OF ty_ltext.
TYPES:BEGIN OF ty_string,
line TYPE char255,
END OF ty_string.
DATA:lt_tline TYPE TABLE OF tline,
ls_tline TYPE tline,
lt_stxl_raw TYPE TABLE OF ty_stxl_raw,
ls_stxl_raw TYPE ty_stxl_raw,
lt_ltext TYPE TABLE OF ty_ltext,
ls_ltext TYPE ty_ltext,
lt_string TYPE TABLE OF ty_string.
"查询长文本表
SELECT
stxl~relid,
stxl~tdobject,
stxl~tdname,
stxl~tdid,
stxl~tdspras,
stxl~srtf2,
stxl~clustr,
stxl~clustd
FROM stxh
INNER JOIN stxl ON stxh~tdobject = stxl~tdobject AND stxh~tdname = stxl~tdname
AND stxh~tdid = stxl~tdid AND stxh~tdspras = stxl~tdspras
INTO TABLE @DATA(lt_stxl)
WHERE stxh~tdobject = 'EKPO'
AND stxh~tdid IN ( 'F01','F03','F04' )
AND stxh~tdspras = @sy-langu
AND stxh~tdname = '410000148200010'
AND stxl~relid = 'TX'.
"解码为字符串
LOOP AT lt_stxl INTO DATA(ls_stxl).
REFRESH:lt_stxl_raw,lt_tline,lt_string.
CLEAR:ls_stxl_raw.
ls_stxl_raw-clustr = ls_stxl-clustr.
ls_stxl_raw-clustd = ls_stxl-clustd.
APPEND ls_stxl_raw TO lt_stxl_raw.
"对长文本进行解码
IMPORT tline = lt_tline FROM INTERNAL TABLE lt_stxl_raw.
"对特殊符号的转换
CALL FUNCTION 'CONVERT_ITF_TO_STREAM_TEXT'
TABLES
itf_text = lt_tline
text_stream = lt_string.
"获得订单对应的多个长文本
CLEAR:ls_ltext.
LOOP AT lt_string INTO DATA(ls_string).
ls_ltext-ltext = ls_ltext-ltext && ls_string-line.
ENDLOOP.
ls_ltext-tdname = ls_stxl-tdname.
ls_ltext-tdid = ls_stxl-tdid.
APPEND ls_ltext TO lt_ltext.
CLEAR:ls_stxl.
ENDLOOP.
"-----------------------------@斌将军-----------------------------
2、特殊符号
在长文本中如果出现"<"等特殊符号,会被转换成"<(><<)>",当遇到这些特殊符号被转换,取出后,可以通过函数CONVERT_ITF_TO_STREAM_TEXT处理一下,使用方法参考上面代码
3、底表查不到长文本
有时会发现,长文本框中分明有值,但是在STXH、STXL中找不到对应的记录,READ_TEXT函数也查询不到结果,
但是在下边有一行说明,“从何处采用文本”
这是因为配置了此长文本默认从采购订单中带出对应的物料描述,可以通过事务代码:SPRO确认配置,路径如图所示
选择对应的长文本类型,可以看到从以下地方自动获取文本作为长文本
标签:ltext,raw,二三,获取,lt,ls,文本,TYPE,stxl From: https://blog.51cto.com/BinGeneral/6167104