SAP中READ_TEXT的替代方案

SAP READ_TEXT 用法 SAP PP READ-TEXT 获取工单长文本用法 阅读详情
AI摘要

本文探讨了SAP系统中长文本的高效处理方法,对比了不同读取方式的性能,发现IMPORTFROMINTERNALTABLE方法相较于传统READ_TEXT方法性能提升了约10倍。此外,文章还介绍了如何在CDS中实现长文本查询。

首先大家都知道关于SAP的长文本从表里是不能直接获取到的,它是以binary形式存放于STXL表中,之前我们获取长文本都是通过LOOP中嵌套READ_TEXT函数来进行长文本的获取,这并不是一个高效的解决方案,因为每次都会操作数据库读取,所以我试图寻找其他的替代方案,在查阅资料后,发现以下两种解决方案,为了明显的比较这几种方式的区别,写了一个demo程序,通过SAT性能检测工具来进行对比,几种方式实现如下.

1.首先获取到测试所用订单数据↓

2. 使用三种方式来分别获取每条订单对应的长文本

3.传统READ_TEXT的方式

4.使用IMPORT FROM INTERNAL TABLE的方式

5.使用READ_TEXT_TABLE功能实现(READ_MULTIPLE_TEXTS也有同样的效果)

6.另外关于TLINE的读取也有系统已经封装好的函数来进行转换,可按需使用

通过多次运行SAT进行性能测试(只截取了两张图来说明问题),可以发现IMPORT的方式完全碾压LOOP中套用READ_TEXT的方式,大约提升约10倍性能,其次为READ_TEXT_TABLE的方式,也大约比嵌套READ_TEXT的方式快了约6倍,所以以后对于长文本的获取可以采用新的方式。

发现了新的方法后,我在想既然可以IMPORT将binary形式数据转为可读数据,那反向是否可以实现根据长文本精准反向查找对应订单,很遗憾,SAP不支持在where condition中使用LRAW类型的字段,不管是在ABAP SQL,还是EXEC SQL,或者在CDS,AMDP中均无法通过标准check,CDS也不支持将LRAW类型通过CAST转换为String或者其他类型,所以如果有这种需求目前只能通过先将所有STXL数据查询出来,通过IMPORT FROM INTERNAL TABLE的方式解析完再进行匹配,能提前限制范围最好,也算是曲线救国吧,效率也算是可以接受的。

CDS以及AMDP中也是同样类似的报错。

另外,在CDS中其实是可以实现查询长文本的功能,借助Virtual Elements可以实现该效果,但很遗憾的是它只能应用于ODATA服务,在SE16N或者程序中调用该CDS,不会得到任何结果

实现方式如下:

1.创建虚拟字段,并为其添加如下注释

  @ObjectModel.readOnly: true

  @ObjectModel.virtualElement: true

  @ObjectModel.virtualElementCalculatedBy: 'ABAP:ZCL_DEMO_CDS_TEST'

2.其次在SE24创建自定义类,并实现接口IF_SADL_EXIT_CALC_ELEMENT_READ

3.实现接口中的两个方法

其中GET_CALCULATION_INFO方法只是提供处理所需的字段列表,不需要添加额外代码,但是依旧需要点进去激活,CALCULATE方法实现如下:

所有coding部分结束,进行服务测试,下图可见成功取得长文本

/sap/opu/odata/sap/ZLONG_TEXT_CDS/ZLONG_TEXT(tdobject='VBBK',tdname='2000011414',tdid='Z101',tdspras='J')

以上,在UI5或者FIORI面板中可以正常展示,利用其他注解可以实现将虚拟字段添加为筛选字段或者排序字段

@ObjectModel.filter annotation  实现添加为筛选字段

@ObjectModel.sort annotation   实现添加为排序字段

具体实现方式参考官方地址:https://help.sap.com/viewer/cc0c305d2fab47bd808adcad3ca7ee9d/7.51.7/en-US/a7fc007921d44263b09ccc092392b05f.html

SAP 读取销售/发票长文本(Read_text)的使用方法 1, 简介 SAP中有很多地方用到了长文本,这些长文本保存在表STXL和STXH里面,STXH保存抬头长文本,STXL保存行项目的.需要通过函数READ_TEXT去读取长文本. 2, 查看销售订单长文本 可以在VA03中看到销售订单的抬头和行项目长文本: 抬头长文本: 行项目: 长文本log中的object 和 ID在调用函数Read_text时用到 3, 例子代码 以读取销售行项目长文本为例: 读取上图中销售订单60000649行项目200的delivery text的长文本 ABAP DATA: 阅读详情

相关推荐

SAP long text SAP长文本读取。

<br />wutong<br /> <br />用途:常常会用到类似于说明或者备注这样的信息,这些信息就是长文本信息。long text.<br />查看:比如销售订单中(SO) 的表单头和表单行项目都可以进行长文本的备注。查看途径: VA02-->输入订单号-->goto--->header--->texts-->show detail (一个放大镜的图标)-->goto --->header.到texts这一步就可以看到备注信息,在最后一步可以看到备注的 头信息。Item的备注页可以通过类似的途径来查

myonlywutong的专栏 4562

READ_TEXT读取长文本

在SAP中,有时候会有一大段的文本内容需要保存,不存表,可以通过函数READ_TEXT读取: CALL FUNCTION 'READ_TEXT' EXPORTING client = sy-mandt id = '0001' language = '1' name

哈士奇呀的博客 1909

SAP READ_TEXT 读取物料长描述

SAP 使用READ_TEXT读取物料长描述

weixin_46075394的博客 1390

SAP通过函数READ_TEXT读取长文本

后勤模块的数据例如采购订单、销售订单等都涉及到表头文本,但是表头文本不存在底表中,这时如果想取表头文本需要用到READ_TEXT函数。下面以取采购订单表头文本为例。输入事务代码:ME23N...

yannickdann的博客 8004

SAP ABAP长文本处理:SAVE_TEXT与READ_TEXT函数详解

在SAP ABAP开发中,长文本处理是核心技能之一,涉及业务单据的备注、说明等关键信息存储。其原理基于SAP特有的文本存储架构,通过文本对象、文本ID和文本名称这‘三维坐标’在簇表STXH和STXL中定位数据。这种设计提供了灵活性,但要求开发者必须通过标准函数进行存取,而非直接操作数据库表。从技术价值看,掌握长文本处理能确保数据的一致性和安全性,同时支持复杂的业务场景,如多语言文本、自定义文本对象等。在应用场景上,它广泛用于销售订单、采购订单、财务凭证等业务对象的文本管理,是报表开发、接口处理和业务增强的必

weixin_31421613的博客 364

SAP ABAP长文本读取性能瓶颈诊断与批量优化实战:从READ_TEXT到READ_TEXT_TABLE

本文深入探讨了SAP ABAP中长文本读取的性能瓶颈问题,对比分析了传统READ_TEXT函数与READ_TEXT_TABLE的批量优化方法。通过实战案例展示了如何将读取5000条物料长文本的时间从48秒优化至6秒,提升效率达8倍以上,为ABAP开发者提供了可复用的性能优化方案。

weixin_28738165的博客 396

SAP SO10文本传输失败排查:从$TMP到CTS的完整链路

在SAP项目实施中,文本对象(如SO10标准文本)是打印输出和业务条款的核心载体,其正确传输直接影响生产系统的业务一致性。SAP文本传输依赖CTS(Change and Transport System)机制,涉及文本头表STXBHEAD、内容表STXBTEXT,以及开发类(Package)和文本ID配置等关键环节。理解这些基础原理,能帮助顾问从根源上规避“改了却没生效”的典型问题。实际运维中,文本传输失败常源于$TMP本地对象陷阱、文本ID未启用传输属性、请求未正确分配或程序读取参数(如对象ID、语言)不

weixin_29611239的博客 205

读取销售订单长文本(Read_text)

读取销售订单长文本(Read_text) 石头 十二月 28, 2015 函数 3,899 views 0 [隐藏] 1, 简介 2, 查看销售订单长文本 3, 例子代码 4, 测试结果 1, 简介 SAP中有很多地方用到了长文本,这些长文本保存在表STXL和STXH里面,STXH保存抬头长文本,STXL保存行项目的.需要通过函数READ_TEXT去读取长文本. 2, 查看销售...

hewusheng10的专栏 1854

【转载】SAP ABAP中读取项目文本 READ_TEXT 的方法

在SAP系统里面很多地方都用到了长文本,这些长文本的值以其他字符的形式存在表STXL和STXH里面,不能直接去这两个表里面去取值,而是要通过函数READ_TEXT去取,很多新手不了解的地方可能就是怎么取到READ_TEXT函数里面的那些参数值,我这边介绍两种方法,通过这两种方法都可以找到那几个参数: 一、第一种利用跟踪查询,不是用ST05跟踪,而是去表里面跟踪查询,比如你刚刚创建了一个销售订单的长...

伟绍博客 2984

SAP-ABAP:掌握SAP文本处理利器:READ_TEXT函数全面解析与学习分享

《SAP文本处理利器:READ_TEXT函数详解》深入解析了该函数在ABAP开发中的核心作用。文章首先介绍了SAP独特的文本存储机制(STXH/STXL表),阐明READ_TEXT作为业务对象与长文本间标准桥梁的重要性。重点讲解了函数的四大关键参数(ID、OBJECT、NAME等)和TLINE输出结构,并提供销售订单文本读取的代码示例。最后总结了六大实战要点:文本ID准确性验证、多行文本拼接技巧、性能优化方法、异常处理规范、封装函数优先原则及文本格式清洗注意事项。通过系统化的解析,帮助开发者高效处理各类业务

baidu_35680696的博客 1270

92. SAP ABAP 系统里长文本 Long Text 的设计和读取函数 READ_TEXT 的详细讲解

SAP ABAP中的长文本(Long Text)是指在SAP系统中存储和管理较长文本信息的一种机制。长文本通常用于存储描述性信息、注释、说明等,这些文本信息可能超过了标准数据库表字段的长度限制。 长文本的作用主要有以下几点: 1. 更多的信息存储:长文本允许您存储和显示比标准表字段允许的更多信息。例如,产品描述、用户注释、维护计划等可能需要大量的文本来详细描述。 2. 更好的可读性:长文本提供了更好的文本格式化选项,可以改善可读性。用户可以使用段落、列表、字体样式等格式化文本,以便更容易地理解和阅读。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1996

SAP READ_TEXT读取和SAVE_TEXT写入长文本

本文介绍了SAP系统中SAVE_TEXT函数模块的使用方法,用于保存或更新文本对象。主要内容包括:1) SAVE_TEXT的作用和关键标识字段;2) 前期文本对象和ID的维护步骤;3) 函数参数说明;4) 完整ABAP调用示例代码;5) 结果验证方法;6) 常见问题处理;7) 扩展介绍了READ_TEXT函数。文章详细讲解了从零开始调用SAVE_TEXT保存文本的全过程,包括参数设置、代码编写和事务提交等关键环节,并提供了实际应用中的注意事项。

weixin_44072448的博客 661

93. 使用 ABAP 代码调用 READ_TEXT 读取 SAP 系统业务对象的长文本(Long Text)内容

本文介绍如何在 ABAP 程序里通过调用函数 READ_TEXT 来读取 SAP 业务对象的 Long Text 长文本内容。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1321

SAP: Read_Text()函数的使用方法

首先引用一下http://blog.sina.com.cn/s/blog_537fde6301008ymp.html文章中方法,感谢lin998 ! 以下为引用内容 ***************************************************** 在SAP系统中,有时候会有大段文本内容需要保存,例如:销售发货(VL03N),在单据的概览中,有一个[文本]项,在此处可

山顶听风 1万+

手把手教你为智能手表DIY一个离线导航:LVGL + SD卡地图实战

本文详细介绍了如何为智能手表DIY一个离线导航系统,结合LVGL图形库和SD卡地图数据。从硬件选型、地图数据处理到LVGL地图引擎实现,提供了完整的实战指南,特别适合户外运动爱好者和嵌入式开发者。文章还分享了功耗优化、性能提升等实用技巧,帮助读者打造高效的离线导航解决方案。

weixin_42570484的博客 206

Android14 RK3576开发板有线网卡静态IP配置全攻略(附数据库修改详解)

本文详细介绍了在Android 14 RK3576开发板上实现有线网卡出厂默认静态IP配置的完整方案。通过深入修改系统源码和SettingsProvider数据库,扩展全局设置字段并注入默认值,确保设备首次启动即自动应用预设的IP地址、子网掩码、网关和DNS,适用于工业控制、数字标牌等批量部署场景,有效提升生产效率。

weixin_29253711的博客 606

Read_Text函数的使用方法

在SAP系统中,有时候会有大段文本内容需要保存,例如:销售发货(VL03N),在单据的概览中 ,有一个[文本]项,在此处可以填写单据的大段文本描述,那么该内容保存在哪里呢? 第一反应是找对应表的字段,那么你可能要失望了。在SAP系统中,可以供我们使用的数据库字段最大长度是255个文本字符(注:此处可能不正确),对于很长的文本肯定是不能直接保存到某个表的字段中的(注:至于具体保存在何处,还需要请教

笨鸟先飞,勤能补拙——zero小火柴菜鸟学习笔记 4407

将Apollo高精地图中的车道线叠加在多种导航地图上

本文介绍了将Apollo高精地图车道线叠加到普通导航地图的技术方案。高精地图具备厘米级车道精度和丰富的语义信息,叠加可实现可视化验证、调试分析和数据对比等功能。核心技术包括坐标系统转换(UTM/WGS84/BD09/GCJ02)和数据处理流程,通过Python脚本完成Apollo地图解析、坐标批量转换和多格式输出。文章详细提供了环境准备、工作目录创建和坐标转换脚本等操作步骤,实现了高精地图数据在OpenStreetMap、百度地图和高德地图上的可视化展示。

Hi20240217的博客 1332

SAP READ_TEXT函数的用法

*訂單表頭內文(JOHNSON) VBELNTEXT = INTAB-VBELN . CALL FUNCTION 'READ_TEXT' EXPORTING* CLIENT = SY-MANDT ID = '0001' LANGUAGE...

528

DQN网络代码调用env.reset()后存储观测信息报错问题ValueError: setting an array element with a sequence.解决处理

**reset()函数返回的是一个array类型以及其中数据的type!模拟游戏进行学习任务。因此需要将observation指定为真正需要的array信息即可,得到的的变量observation类型与Agent存储时的。因此怀疑返回的observation有问题,于是通过。报错信息提示为数据维度不对应,也即最初通过。在强化学习DQN网络代码实现过程中,针对。

Vulcan_Q的博客 4092

能碳双控| AIRIOT智慧能碳管理解决方案

基于AIRIOT打造的智慧能碳管理平台解决方案结合大数据、物联网、人工智能(AI)、数字孪生等新一代信息技术,通过整合碳达峰、碳中和、实时碳价、碳配额和碳资产等多个模块,为组织提供了全方位、灵活且智能的碳资产管理解决方案,有助于实现碳管理目标、提升可持续性,并适应碳市场的不断变化。

AIRIOT的博客 1808
下一篇: SAP中使用BAPI_PO_CREATE1或BAPI_PO_CHANGE更新EAN11字段或其他不存在于BAPI中字段
DeveloperMrMeng
博客等级 码龄5年 1770粉丝 113原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DeveloperMrMeng

觉得有用的佛系投币哦

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值