首页 > 其他分享 >获取长文本二三事

获取长文本二三事

时间:2023-03-09 20:47:32浏览次数:44  
标签:ltext raw 二三 获取 lt ls 文本 TYPE stxl

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确认配置,路径如图所示

 选择对应的长文本类型,可以看到从以下地方自动获取文本作为长文本

    此页面的语言为英语   翻译为中文(简体)        
  • 中文(简体)
  • 中文(繁体)
  • 丹麦语
  • 乌克兰语
  • 乌尔都语
  • 亚美尼亚语
  • 俄语
  • 保加利亚语
  • 克罗地亚语
  • 冰岛语
  • 加泰罗尼亚语
  • 匈牙利语
  • 卡纳达语
  • 印地语
  • 印尼语
  • 古吉拉特语
  • 哈萨克语
  • 土耳其语
  • 威尔士语
  • 孟加拉语
  • 尼泊尔语
  • 布尔语(南非荷兰语)
  • 希伯来语
  • 希腊语
  • 库尔德语
  • 德语
  • 意大利语
  • 拉脱维亚语
  • 挪威语
  • 捷克语
  • 斯洛伐克语
  • 斯洛文尼亚语
  • 旁遮普语
  • 日语
  • 普什图语
  • 毛利语
  • 法语
  • 波兰语
  • 波斯语
  • 泰卢固语
  • 泰米尔语
  • 泰语
  • 海地克里奥尔语
  • 爱沙尼亚语
  • 瑞典语
  • 立陶宛语
  • 缅甸语
  • 罗马尼亚语
  • 老挝语
  • 芬兰语
  • 英语
  • 荷兰语
  • 萨摩亚语
  • 葡萄牙语
  • 西班牙语
  • 越南语
  • 阿塞拜疆语
  • 阿姆哈拉语
  • 阿尔巴尼亚语
  • 阿拉伯语
  • 韩语
  • 马尔加什语
  • 马拉地语
  • 马拉雅拉姆语
  • 马来语
  • 马耳他语
  • 高棉语
 

TRANSLATE with x English
Arabic Hebrew Polish
Bulgarian Hindi Portuguese
Catalan Hmong Daw Romanian
Chinese Simplified Hungarian Russian
Chinese Traditional Indonesian Slovak
Czech Italian Slovenian
Danish Japanese Spanish
Dutch Klingon Swedish
English Korean Thai
Estonian Latvian Turkish
Finnish Lithuanian Ukrainian
French Malay Urdu
German Maltese Vietnamese
Greek Norwegian Welsh
Haitian Creole Persian  
  TRANSLATE with COPY THE URL BELOW Back EMBED THE SNIPPET BELOW IN YOUR SITE Enable collaborative features and customize widget: Bing Webmaster Portal Back

标签:ltext,raw,二三,获取,lt,ls,文本,TYPE,stxl
From: https://www.cnblogs.com/BinGeneral/p/17201323.html

相关文章

  • Python获取路径不在执行文件下
    在一次python打包exe过程中,我需要拼接文件路径。将程序当前目录和指定文件名拼接成一个新的路径。获取当前程序文件目录我使用的代码是here=os.path.abspath(os.path.......
  • File的获取和判断
    publicstaticvoidmain(String[]args)throwsIOException{Filef=newFile("C:\\a.txt");//isFile()方法测试此抽象路径名表示的File是否为......
  • 获取时间字符串
    importtimeimportdatetimedefget_time_str():#定义文件名,年月日时分秒随机数#fn=time.strftime('%Y%m%d%H%M%S')#fn=fn+'_%d'%random.r......
  • [转]C# 获得窗体句柄并发送消息(利用windows API可在不同进程中获取)
    编写程序模拟鼠标和键盘操作可以方便的实现你需要的功能,而不需要对方程序为你开放接口。首先,引入如下API接口:  [DllImport("user32.dll")]publicstaticexternIntP......
  • 富文本编译器-配合gin使用
    一。引入样式<!--IncludeEditorstyle.--><linkhref="https://cdn.jsdelivr.net/npm/froala-editor@latest/css/froala_editor.pkgd.min.css"rel="stylesheet"type......
  • MegEngine 使用小技巧:借助 DataLoader 获取分批数据
    在使用MegEngine进行模型训练时,首先要进行的是数据加载和预处理。在此过程中,MegEngine中的megengine.data模块,提供了数据分批功能,其内部实现流程如下图:通过使用Datal......
  • 文本域 文件域
    <doctypehtml><html><head>  <metacharset="utf-8">  <title>study</title>  <style>  </style></head><body><!--cols="50"rows="10"文本......
  • Mysql导出文本文件
    使用mysqldump命令导出文本文件mysqldump-uroot-pPassword-T目标目录dbname[tables][option];其中:Password参数表示root用户的密码,密码紧挨着-p选项。-T:只有......
  • [chatGPT]unity中,我希望一个角色有一个链表能获取到场上所有“creature”的transform,
    关键字:unity游戏对象管理,unity,unity实例管理,unity触发方法我unity中,我希望一个角色有一个链表能获取到场上所有“creature”的transform,当creature增加或减少时刷新这个......
  • 【WebRtc】获取音视频数据
    首页截图获取音视频关键Code获取摄像头数据/***获取流数据*/openUserMeida(){varthat=this//判断是否支持获取媒体数据......