22. SAP ABAP OData 服务的 $count 和 $inlinecount 两个操作的区别

本教程前一步骤,我们已经提到,我们开发的图书管理 OData 服务,尽管没有为 $count 这个操作进行特别的代码实现,但是 SAP ABAP OData 框架,仍然帮助我们提供了默认的实现。

美中不足的是,这个框架级别的默认实现,如下图蓝色区域所示,从性能上来说不是最优的。

因为我们仅仅需要知道系统里指定 EntitySet 的个数,但是框架默认的实现,仍然把系统里所有的图书数据的每一个字段,通过 SELECT * 全部取出来放置到 GET_ENTITYSET 方法的输出参数,然后通过 lines 函数统计这个内表的行数。

本文介绍 $count 操作的 正规 实现方式,以及其同 $inlinecount 两个操作的区别。

$count 操作的正规实现,受 SAP ABAP OData 框架实现第 134 行 has_count 方法调用的启发。我们在我们图书管理 OData 服务的 DPC_EXT 类里,同样可以调用这个方法,来判断当前的请求是否是一个 $count 操作。

ABAP备忘 memo alpha 转换"增加前导0 DATA: lv_matnr TYPE matnr VALUE '15000042'. lv_matnr = |{ lv_matnr ALPHA = IN }|. WRITE: lv_matnr. "示例结果:000000000015000042 "删除前导0 DATA: gs_matnr TYPE matnr VALUE '000000000015000042'. DATA(gs_out_matnr) = |{ gs_mat. 阅读详情

相关推荐

21. SAP ABAP OData 服务的 $count 操作实现

理论上讲,只要 SAP ABAP OData 服务的 DPC_EXT 类正确实现了 GET_ENTITYSET 方法,那么无需为 $count 操作进行额外的实现,因为按照本文介绍,OData 框架会自动帮我们完成 $count 操作的实现。然而也不难发现,对于一个纯粹的 $count 请求,实际上并不需要从数据库表里读取完整的图书数据,这是对数据库资源和计算资源的浪费。 本教程后续步骤,我们会介绍 $count 操作的正确实现,以及其和 $inlinecount 的区别。

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

SAP-ABAP: Open SQL集合函数COUNT(统计行数)、SUM(数值求和)、AVG(平均值)、MAX/MIN(极值)深度指南

SAP-ABAP: Open SQL集合函数COUNT(统计行数)、SUM(数值求和)、AVG(平均值)、MAX/MIN(极值)深度指南

baidu_35680696的博客 705

SAP Fiori 里的 List 是如何做到懒加载 Lazy load 的

今天一同事问我这个问题:S/4HANA Fiori应用里的列表,一旦Scroll到底部就会自动向后台发起新的请求把更多的数据读取到前台显示。 以Product Master这个应用为例,我点击搜索之后,结果区域显示当前系统一共有140个product,但是只有前25个返回并显示在浏览器里。 这个分页效果是UI5 OData的参数实现的:$skip=0&top=25。 而总数140...

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

SAP OData 开发从入门到提高教程的目录

笔者 18 年的 SAP 技术开发生涯,对 SAP OData 服务的开发,测试,发布,部署,测试,及基于各种不同 SAP 技术实现的 OData 服务的幕后技术实现细节和使用场合,均有着深入的研究。

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

33. 如何找出 SAP Fiori Launchpad 里点击 tile 之后,读取业务数据调用的是哪个 SAP 后台系统的 OData 服务

笔者曾经写过一篇文章[SAP Fiori应用的三种部署方式],里面介绍了 SAP Fiori 应用部署的一种典型方式:Fiori 应用的载体即 SAP UI5 应用,部署在 Gateway 系统上,也称 Frontend Server(前台服务器)。 当用户访问 Fiori Launchpad 代表 SAP UI5 应用的一个个 tile 之后,实际打开的是每个 tile 对应的 SAP UI5 应用,后者通过 OData 服务,从 SAP 后台服务器(Backend Server) 读取业务数据,执行业

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

如何在 SAP BTP 平台 ABAP 编程环境里消费基于 SOAP 的 Web Service

Jerry 2014 年时,曾经在 SAP 社区上写过一篇英文博客,介绍了如何在 ABAP On-Premises 系统里,创建和消费 Web Service: Step by step to create, consume and trace web service in ABAP system 这篇文章的中文版,请移步这个链接: 最详细的 SAP ABAP Web Service 创建和消费步骤讲解 到了

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

在 ABAP 里用 PASSWORD_FORMAL_CHECK 预检查密码规则

本文介绍了在 SAP 系统中检查密码规则的最佳实践,重点分析了函数模块 PASSWORD_FORMAL_CHECK 的使用场景与限制。该函数适用于在用户注册、密码生成和系统集成等场景中进行密码形式规则预检,包括长度、字符组成等静态要求,但不涉及历史密码、身份验证等动态规则。文章建议通过封装标准函数调用来实现统一校验逻辑,避免前端、后端与系统参数的不一致,并强调了结合 Profile Parameter 和 Security Policy 的重要性。文中还提供了基础调用示例和面向对象封装方案,帮助开发人员在不

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

在 ABAP 里把 UUID 玩明白:CL_SYSTEM_UUID 的生成、转换与 OData 实战

摘要:SAP系统中跨系统唯一标识符(UUID)的生成与处理是分布式开发的关键问题。CL_SYSTEM_UUID作为ABAP核心工具,支持生成16字节UUID并提供四种编码格式(X16、C22、C26、C32)的相互转换。X16格式适合高性能数据库存储,C32十六进制字符串便于接口传输和日志追踪。工程实践中建议采用"存储用X16,传输用C32"的组合策略,并通过封装服务类统一处理异常。在Gateway/RAP集成时需特别注意格式一致性,避免接口联调问题。UUID在分布式写入、离线生成、幂等

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

SAP Gateway Payload Trace 深度解析,从一条 OData 报文追到真实问题

SAP Gateway Payload Trace是排查OData服务问题的关键工具,特别适用于请求成功但业务数据异常的场景。该工具记录HTTP请求/响应的原始内容(Header/Body),能发现常规错误日志无法捕捉的问题。通过事务码/IWFND/TRACES可激活跟踪,建议按用户或URI前缀缩小范围。每条记录包含请求方法、大小、响应格式等元数据,详细视图可查看原始报文和事务ID,支持下载分析。与性能跟踪分开使用,该工具能有效定位协议层问题,是连接前后端数据的"黑匣子"。(149字)

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

SAP 里那些 deprecated 和 obsolete 应用,到底该怎么处理

SAP应用中"deprecated"和"obsolete"状态的区别及其影响 摘要: SAP系统中"Application is deprecated"和"Application is obsolete"状态虽看似简单,但对系统升级和权限管理有重要影响。"Deprecated"表示应用仍可使用但不再开发,处于过渡阶段,需寻找替代方案;"Obsolete"则表示应用已过时且不再维护授权数据,不应继续使用。这两个状态涉及SAP应用生命周期管理、授权数据维护、后继事务迁移及Fiori内容治理,在S/4HANA升级

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

用 STAUTHTRACE 精准定位 SAP 权限检查问题

SAP 权限排查的关键在于精准定位问题原因,而 STAUTHTRACE 工具能有效捕捉运行时权限检查的详细信息。与 SU53 仅显示最近失败检查不同,STAUTHTRACE 能记录整个业务流程中的所有权限检查(成功和失败),帮助分析组织层级字段、RFC调用、Fiori/OData服务授权等复杂问题。使用时需注意限制跟踪范围、完整执行业务动作并及时关闭跟踪。该工具与 SU22、ST01 形成互补,是解决权限问题的有力手段。

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

在 ABAP SQL 里按行生成 UUID:uuid( ) 函数的语义、陷阱与 Clean Core 实战

摘要:SAP S/4HANA项目中UUID的应用与实现 本文探讨了SAP S/4HANA项目中UUID(通用唯一标识符)的应用场景和实现方式。在跨系统数据交换时,传统业务键(如订单号、供应商编码)常因系统差异、数据迁移等原因出现冲突,而UUID能提供全局唯一性且无需中心化号段服务。文章分析了UUID的多种表示形式(RAW16、Base64、GUID字符串等)及其转换方法,并重点介绍了ABAP SQL中的uuid()函数特性:它为结果集的每行生成新UUID,返回RAW16类型,适用于临时标识场景而非永久主键。

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

走进 STAD 的底层世界,ABAP Statistical Records 如何帮我们定位性能瓶颈

SAP系统性能问题常表现为事务缓慢、页面加载延迟或服务响应不稳定。通过STAD工具可深入分析ABAP统计记录,将模糊问题转化为具体数据。这些记录由SAP内核自动生成,包含CPU时间、数据库访问等关键指标,不依赖应用日志。统计记录在Dialog Step完成后生成,并按小时分文件存储,需注意时间窗口设置。STAD通过过滤条件快速定位问题根源,为性能优化提供可靠依据。

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

Matlab2018a崩溃解决的办法No sandbox or build area path

Matlab 2018a (No sandbox or build area path)出现崩溃后需要使用terminal进行如下操作: cd /home/david/MySoft/MATLAB/R2018a/bin/glnxa64 (你的matlab路径) mkdir exclude mv libfreetype* exclude/ 执行后图片如下: 如果你用的Windows系统,请手动按照上面步骤剔除了dll。 Matlab 2018a (No sandbox or build are

David Xiao 1万+

科研党福音:如何用Zotero+Paper Agent打造你的AI论文速递系统(附详细配置教程)

本文为科研工作者提供了一套利用Zotero和开源工具Paper Agent构建自动化AI论文速递系统的详细教程。该系统能基于用户在Zotero中的文献库智能学习研究兴趣,每日自动从arXiv等平台筛选、下载并深度解读最相关的前沿论文,生成个性化日报,实现从被动接收到主动精准获取的知识工作流重塑。

kite3的博客 501

数字后端零基础入门系列 | Innovus零基础LAB学习Day9

数字后端零基础入门系列 | Innovus零基础LAB学习Day9

weixin_37584728的博客 4564

KEIL5编译报错L6200E:__stdout重定义问题分析与解决

本文深入分析KEIL5编译报错L6200E中__stdout重定义问题的根源,指出因未完整定义__stderr导致与标准库stdio_streams.o冲突。提供完整重定义标准流、启用MicroLIB库等解决方案,帮助开发者彻底解决Symbol multiply defined错误,提升嵌入式开发效率。

uran的专栏 947

深度学习的unfold操作

对于彩色图像这样的三维数据,unfold操作会对每个通道分别进行上述的二维展开操作。例如,一个 RGB 图像,在对其进行unfold操作时,红色通道、绿色通道和蓝色通道的数据都会被独立地按照定义的窗口和步长展开,然后将这些展开后的通道数据按照原来的通道顺序组合在一起,形成新的张量。与我们熟悉的卷积类似,unfold也是使用一个特定大小的窗口和步长自左至右、自上至下滑动,不同的是,卷是滑动后与核求乘积(所以取名为卷积),而unfold滑动后不求乘积,是将窗口内的数据展开。

xulibo5828的博客 2156

告别Windows!Oculus Quest 2在Mac M1上的串流实战(scrcpy+SideQuest避坑指南)

本文为Mac M1用户提供了Oculus Quest 2在macOS上实现高清低延迟串流的实战指南。通过使用开源工具scrcpy和SideQuest,绕开官方限制,详细讲解了从环境准备、无线调试到画质与延迟优化的完整步骤,重点解决了Apple Silicon芯片Mac的连接与性能问题,助你告别Windows依赖。

weixin_29224309的博客 290

广工计组实验f2一位全加器

一位全加器实验

weixin_63692154的博客 2838

2026年大数据开发工程师常见面试选择题

大数据面试高频考点解析 摘要:本文汇总了30道大数据开发面试高频题目,涵盖Hadoop生态、Spark、Flink、Kafka等核心组件。重点包括:1)HDFS架构与特性(5V特征、副本机制);2)MapReduce/Spark原理(Shuffle过程、RDD抽象);3)实时计算(Kafka消费组、Flink Watermark);4)数据仓库设计(分层模型、性能优化)。特别强调数据倾斜、小文件问题等实战场景的解决方案,以及从日志、资源等多维度排查任务异常的方法。掌握这些基础原理和典型问题应对策略,是应对大

不务正业的猿 439

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

上一篇: 21. SAP ABAP OData 服务的 $count 操作实现
下一篇: SAP UI5 SimpleForm 控件的 adjustLabelSpan 属性
汪子熙
汪子熙 新星创作者: 前端开发技术领域 新星创作者: 前端开发技术领域 优质创作者: 软件测试技术领域 优质创作者: 软件测试技术领域 领域专家: 数据库技术领域 领域专家: 数据库技术领域
博客等级 码龄16年 3万+粉丝 1万+原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

汪子熙

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值