效率优化:批量读取长文本

部署运行你感兴趣的模型镜像

批量读取长文本,一直是一个很影响ABAP代码效率的问题。

问了一下ChatGPT,如何批量读取长文本,回答如下:

eb4209d664d617178e8466b1a2439c31.png

老掉牙的READ_TEXT,呵!不过如此嘛!

继续问,“abap如何不使用read_text函数,批量读取长文本”,ChatGPT就开始编小作文了。

毕竟,这种专业性的知识——没人喂它,它自己是不会知道的。

回归正题。

LOOP里使用函数READ_TEXT,效率实在太低了。

实在不太建议业务顾问在做方案的时候把可能在报表里会查询的字段放到长文本里去,ABAP读取起来真的是头疼死了。

如果真的有这个需求,那就用下面这个函数吧,READ_TEXT_TABLE(老版本可能没有),它是通过For All Entries In的方式去读取数据库的,避免了LOOP中的循环读取。

这个函数读取出来的长文本,需要进一步转化才能得到string类型的文本。为了方便使用,我做了个FORM如下:

*&---------------------------------------------------------------------*
*& 获取长文本
*&---------------------------------------------------------------------*
FORM get_longtext TABLES it_longtext STRUCTURE zabaps_longtext.
  DATA: lt_text_headers TYPE TABLE OF thead,
        lt_text_table   TYPE text_lh.


  SORT it_longtext BY tdobject tdname tdid.
  DELETE ADJACENT DUPLICATES FROM it_longtext COMPARING tdobject tdname tdid.


  lt_text_headers = CORRESPONDING #( it_longtext[] ).
  MODIFY lt_text_headers FROM VALUE #( tdspras = sy-langu ) TRANSPORTING tdspras WHERE tdspras = ''.


  CALL FUNCTION 'READ_TEXT_TABLE'
    IMPORTING
      text_table   = lt_text_table
    TABLES
      text_headers = lt_text_headers.


  CLEAR it_longtext[].
  LOOP AT lt_text_table ASSIGNING FIELD-SYMBOL(<ls_text_table>).
    CLEAR it_longtext.


    MOVE-CORRESPONDING <ls_text_table>-header TO it_longtext.
    LOOP AT <ls_text_table>-lines ASSIGNING FIELD-SYMBOL(<ls_line>).
      it_longtext-longtext = it_longtext-longtext && <ls_line>-tdline.
    ENDLOOP.
    APPEND it_longtext.
  ENDLOOP.
ENDFORM.

zabaps_longtext的字段内容如下:

003788d98c0715423af0596066c9707b.png


我的SE38插件工具箱——视频介绍:

https://www.bilibili.com/video/BV1hP4y1N7Qz/

联系286503700获取

ABAP文章汇总:

https://mp.weixin.qq.com/s/djmMeM0qfDxPPwxbjuJABA

Excel文章汇总:

https://mp.weixin.qq.com/s/NwJ0SzIrn9hVmaCMo-UYyA

网盘永久链接:

https://mp.weixin.qq.com/s/f_WwKZdwM-vPEstTjjz_eQ

关注公众号,点下方菜单打开上面的链接,更方便哦。

笔者微信:286503700(QQ同号)

如果喜欢,谢谢转发。

您可能感兴趣的与本文相关的镜像

GPT-oss:20b

GPT-oss:20b

图文对话
Gpt-oss

GPT OSS 是OpenAI 推出的重量级开放模型,面向强推理、智能体任务以及多样化开发场景

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值