批量读取长文本,一直是一个很影响ABAP代码效率的问题。 问了一下ChatGPT,如何批量读取长文本,回答如下:
老掉牙的READ_TEXT,呵!不过如此嘛! 继续问,“ a bap 如何 不使用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的字段内容如下:
我的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同号)** ****
**如果喜欢,谢谢转发。**