获取长文本二三事
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确认配置,路径如图所示
选择对应的长文本类型,可以看到从以下地方自动获取文本作为长文本
定期更文,欢迎关注