汪子熙
19年深耕企业管理软件领域(2007 年 1 月~ 至今),精通 ABAP, Java, Javascript, Typescript, 精通 UI5, Fiori, Fiori Element, Angular, Kubernetes, SAP HANA, SAP BTP. 具有通过阅读 Github 上各种优秀的开源框架和工具源代码的习惯,对于我来说阅读源代码,就像阅读中国白话文一样轻松自然。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ABAP CDS View 从入门到精通教程目录:ABAP CDS View 在 SAP 技术体系中的重要地位
学习 ABAP CDS View 的开发技术,体会其背后的设计理念,也就掌握了 SAP S/4HANA 底层数据模型的设计精髓。原创 2025-03-13 19:37:33 · 3913 阅读 · 5 评论
-
ABAP CDS 和 HANA SQL 的关系
摘要: ABAP CDS与HANA SQL既有紧密联系又有本质区别。ABAP CDS作为语义数据建模框架,在SQL基础上扩展了业务语义层,通过注解(annotations)、关联关系(associations)等机制为数据附加业务含义,并支持权限控制、客户端处理等ABAP平台特性。虽然CDS实体最终会转换为HANA数据库对象执行,但它并非简单的SQL封装,而是构建了独立于数据库的语义模型。二者在数据库执行层深度融合,ABAP CDS通过代码下推技术将计算任务优化到HANA层完成。实际开发中应优先使用ABAP原创 2026-04-14 09:26:58 · 690 阅读 · 0 评论 -
ABAP CDS View 从入门到精通教程第一篇:ABAP CDS View 在 SAP 技术体系中的重要地位
摘要:本文介绍了SAP开发技术专家提供的多套SAP开发教程,涵盖ABAP、UI5、Fiori、OData、BTP等技术领域。重点阐述了ABAP CDS View在SAP S/4HANA中的核心地位,作为虚拟数据模型(VDM)的关键技术,它实现了OLTP和OLAP的统一处理。文章还说明了学习CDS View的前置条件,包括需要SAP NetWeaver 7.50 SP01或更高版本系统,以及使用SAP ABAP Development Tool进行开发实践。作者具有16年SAP开发经验,这些教程形成了完整的S原创 2025-12-17 14:04:00 · 579 阅读 · 0 评论 -
SAP CDS View 教程里的标准视图:SEPM_I_SalesOrderItem_E 当成一张表来用之前,你需要先弄清它到底是什么
摘要:SEPM_I_SalesOrderItem_E 是 SAP EPM demo 中的预交付 CDS 视图,用于表示销售订单行项目数据。它采用 VDM 命名规范,_E 后缀表示对外隐藏内部 UUID 键,提供业务友好的外部 ID 接口。该视图常见于 ABAP Platform 7.50+、开发版系统及 Gateway 教程中,可像表一样通过 Open SQL 查询。实际项目中,这类视图能有效解决内外系统键值映射问题,示例代码展示了如何查询其数据。使用时需注意系统是否安装了 EPM demo 内容。原创 2025-12-09 14:09:10 · 418 阅读 · 0 评论 -
面向 ABAP 开发者的 CDS cond_expr 比较运算符全攻略(含可运行示例)
ABAP CDS比较运算符使用指南:本文系统梳理了ABAP CDS中关系比较运算符(=、<>、<、>、<=、>=)的使用规则,重点解析了可比较类型、空值处理等关键概念。文章提供了六类高频比较场景的工程实践,包括等值比较、顺序比较、空值安全处理等,并给出基于SFLIGHT/SPFLI的完整示例代码。特别强调NUMC类型比较的注意事项和NULL值处理差异,帮助开发者避免常见陷阱,确保条件表达式的正确性和性能优化。原创 2025-10-19 14:31:03 · 163 阅读 · 0 评论 -
ABAP CDS SELECT, data_source 深入解析:从实体、路径表达式到别名与联接的工程化实践
本文系统讲解了ABAP CDS中data_source的四个关键方面:1)合法数据源对象包括透明表、视图和CDS实体;2)路径表达式必须以association结束;3)参数化视图需在FROM子句显式传参;4)对比association与JOIN的使用场景。文章强调工程实践要点:路径表达式必须起别名、参数化视图的传参语法、透明表限制,并通过完整示例演示参数化视图传参和路径表达式使用。面向有经验的开发者,结合官方文档与项目实践,提供实用指导。原创 2025-10-19 14:30:08 · 148 阅读 · 0 评论 -
ABAP CDS 条件表达式 cond_expr 全面解读:语义、优先级、可读性与性能的实战之道
【ABAP CDS条件表达式实战指南】摘要: 本文系统讲解CDS视图中的条件表达式(cond_expr)开发要点,涵盖语法结构、布尔运算优先级和五类关系表达式(比较/区间/模式/空值/初始值)的差异与注意事项。重点剖析WHERE/ON/FILTER/CASE等场景下条件编写的特殊规则,通过销售订单过滤的三种实现方案对比不同写法的优劣。特别提供可运行的CDS视图示例(包含反连接等典型场景)及配套ABAP报表代码,并给出正确性、可读性与性能优化的三位一体实践建议。适合中高级ABAP开发者提升CDS条件表达式的开原创 2025-10-19 14:29:26 · 175 阅读 · 0 评论 -
特殊符号星号和井号在 ABAP CDS View 中的两种使用场景
通过两个并列键 NODE_KEY 与 RELATKEY,开发者可以用标准 ABAP SQL 的层次查询或 CDS Hierarchy 接口,一次性拉出完整子树,再依据 NODE_LEVEL 调整缩进,轻松复原树形结构。假设我们想开发一个 CDS View,将 ABAP 系统帮助文档里所有的类型为 DOC 的文档信息抓取出来。它记录了所有 ABAP 关键字文档的层级与排列方式,并以只读的系统表形式随 SAP 安装包一同交付。注意,这种写法下,句号后面的单引号可以省略。我们是通过硬编码的方式写死在代码里的。原创 2025-07-09 23:52:08 · 332 阅读 · 0 评论 -
11. SAP ABAP CDS View Session Variable 配套练习
本文是下面这篇教程的配套练习,帮助大家巩固对 SAP ABAP CDS View Session Variable 概念的理解和运用。大家在 ABAP Development Tool 里使用菜单,打开 SAP 标准的 CDS View在运行时等价于系统字段 SY-UNAME.与显式参数相比,优势是 CDS View 的调用者无法篡改这个传入值,确保审计追踪一致性。:对应 SY-MANDT. 在多租户场景,系统可强制只读当前客户端数据。:映射 SY-LANGU。原创 2025-07-09 12:48:15 · 393 阅读 · 0 评论 -
12. SAP ABAP CDS View @Environment 注解的使用
注解是一个在 Java,JavaScript,TypeScript,Python 等主流编程语言里都广泛存在的概念,以其简洁的语法和强大的扩展能力,承担起在编译期生成代码、在运行期提供反射支持、在框架中实现声明式编程等关键角色。的值传递进 CDS View,可以使用下面的语法,在圆括号里进行参数传递,这种语法很像 ABAP 面向对象编程领域里给。加了这个注解的 CDS View,其好处是,在 ABAP OPEN SQL 里,我们就不用再人工传递。啦,这个参数传递由 CDS View 运行时框架包办了。原创 2025-05-27 12:22:08 · 584 阅读 · 0 评论 -
11. 在 SAP ABAP CDS View 中使用系统变量 Session Variable
本文继续 SAP CDS View 系列开发知识的讲述,笔者会介绍如何在 CDS View 的源代码里,访问 SAP 系统提供的 Session Variable - 系统会话变量。在 ABAP Development Tool 里运行这个 CDS View,这次不用再手动输入用户名称了,而绿色的 system_language 这一列,数据就来自会话变量。是 CDS View 系统提供的三大会话变量之一,在书写了这些会话变量的 CDS View 被用户执行时,这些变量会自动被填充上对应的值。原创 2025-05-26 18:37:02 · 833 阅读 · 0 评论 -
10. 带有输入参数的 SAP ABAP CDS View
通过这种办法,我们将距离区间检索的逻辑,封装在 CDS View 内部,避免了让 ABAP 开发人员在 OPEN SQL 里手动编写 between 语句去查询记录的工作量。这里的参数名称后缀 l 代表 low,即距离范围的最小值,h 代表 high 即距离最大值。,假设我们想查询航班飞行距离在 6000 ~ 8000 KM 区间内的航班记录,在 SE16 里指定。开头,告诉 CDS View 编译器,紧跟在这些声明后面的,就是我们要给 CDS View 定义。的参数,这里的参数名称前缀。原创 2025-05-26 18:36:03 · 1200 阅读 · 0 评论 -
SAP ABAP CDS View 源代码搜索工具
笔者之前的教程文章,分享了笔者原创的一个 CDS View 源代码行数统计工具:有个朋友问我 ABAP Development Tool 里关于搜索 CDS View 源代码的问题。笔者尝试了一下,ABAP Development Tool 提供的功能,只支持 ABAP 报表和 ABAP 类里源代码的搜索。原创 2025-05-13 23:48:26 · 721 阅读 · 0 评论 -
SAP ABAP CDS View 源代码行数统计工具
有个教程读者向我咨询,他的领导要求一个可视化的 ALV 报表,简单了解下部门 CDS View 开发工作量。既然要出 ALV 报表,首要任务就是提供数据,即统计某个 ABAP 开发包下面,每个 CDS View 的源代码行数。正好笔者以前开发过这样一个 CDS View 源代码行数统计,这里分享出来给各位读者使用。工具的使用方法很简单,因为我封装到一个 ABAP 类里了,大家在自己的 ABAP 系统里新建一个类,将本文末尾的源代码,拷贝到自己的类里,激活即可。我的类名称叫。原创 2025-05-13 20:54:57 · 870 阅读 · 0 评论 -
使用 ABAP Development Tool 开发 SAP ABAP CDS View 的一些操作小技巧
本文包含了笔者平时搜集和总结的一些使用 ABAP Development Tool 开发 CDS View 的小技巧,能够提高开发效率。原创 2025-04-27 13:33:37 · 810 阅读 · 0 评论 -
SAP CDS View association 的工作原理,与数据库传统 join 操作的区别讲解
笔者前一篇教程,介绍了 SAP CDS View 里如何创建 association:本文就来一一对这些问题进行解答。首先我们来研究如何消费创建好的 SAP CDS View 中的 association 数据。在上图 ABAP Development Tool 里展示的 CDS View 界面,点击 F8 快捷键,进入 Data Preview 即数据预览界面。我们随便选中一条行项目,右键,发现右键菜单里,赫然有一条的菜单项。看来这个功能肯定和 association 相关了。原创 2025-04-11 17:39:03 · 761 阅读 · 0 评论 -
如何创建 SAP ABAP CDS View 的 Association
所以本文我们虽然学习了如何创建 SAP CDS View 的 association,知道了 association 是用来在 CDS View 里将两张数据库表关联起来,但根本不知道怎么使用这个 association. 而且从 association 的写法来看,似乎和本教程之前介绍 inner join,left join 这些数据库表的连接操作没什么区别,都是根据两张表的 carrid 和 connid 字段相同进行的连接。只看到了我们在 CDS View 源代码实现里,放出来的四个字段。原创 2025-04-11 15:08:45 · 660 阅读 · 0 评论 -
使用 SAP ABAP CDS View 重新实现数据库表的 Inner Join 操作
它保证 ZCDS_INNER_JOIN 中出现的每一条记录,都是在 sflight 表和 spfli 表中确切存在并且满足航空公司编号 (carrid) 和航班编号 (connid) 都相同的情况。此处使用 inner join 关键字,代表这个 CDS View 的数据源来自两张表的「内连接操作」,即只保留在这两个表中都能匹配到的记录。读取的这些字段,是这张 CDS View 从底层哪些数据库表 join 出来的——CDS View 为只需要读取数据的 ABAP 开发人员,原创 2025-04-11 09:56:35 · 786 阅读 · 0 评论 -
SAP ABAP 数据库四种表连接的辨析:Inner Join,Outer Join,Left Join 和 Right Join
笔者这套 SAP ABAP CDS View 开发教程迄今为止的文章,已经创建了一个最简单的,基于单张数据库表的 CDS View.我们现在开始扩展 CDS View 的复杂度,用 CDS View 来连接多张数据库表。在动手开发之前,我们需要扫清一个学习道路上的知识障碍。经典的数据库表操作里有一种叫做 Join 即连接的操作,更进一步细分,有 Inner Join,Outer Join,Left Join 和 Right Join 四种。这些连接操作的区别是什么?我们可以参考下面这张示意图。原创 2025-04-10 10:12:17 · 1390 阅读 · 1 评论 -
3. 使用 ABAP OPEN SQL 读取 CDS View 数据时,数据库层面到底发生了什么事?
如果设置为 true,举个例子,如果底层数据库表的 key 字段为 A,B 和 C,那么我们在 CDS View 里,可以同下图9~11行演示的 key 关键字,重新定义 CDS View 的 key 字段。执行查询,即可观察到我们的 ABAP 程序里,使用 OPEN SQL 的 SELECT 关键字,读取 CDS View。: 这个注解用来控制 ABAP CDS View 编译器的行为,初学者可以不用管,直接使用默认的 true 值。的操作,最后实际读取的是这个 CDS View 通过注解。原创 2025-04-05 22:58:08 · 628 阅读 · 5 评论 -
2. 第一个 SAP CDS View 源代码的详细解析:CDS View 和底层自动生成 SQL View 的关系讲解
笔者前一篇教程文章,带着大家在 ABAP 系统创建了一个最简单的基于sflight数据库表的 CDS View:本文对这简单的 14 行源代码背后的知识点进行详细讲解。CDS 全称是 Core Data Services,它是一种数据建模技术,帮助开发者以更直观和高层的方式去描述数据库中所需的数据结构。在一个典型的 SAP ABAP 开发场景里,CDS 经常被用来编写各种用于报表、接口或业务逻辑的数据视图。通常,这些视图包含一系列注解。原创 2025-04-05 13:37:20 · 797 阅读 · 0 评论 -
1. 动手开发第一个 SAP CDS View
在开始学习前,大家需要根据这篇文章介绍的步骤,在自己本地电脑上,把 ABAP Development Tool 安装好。右键单击这个添加好的 ABAP 开发包,选择新建一个 ABAP Repository Object,类型就选择。,就可以像在 SAPGUI 里使用 SE16 那样,查看这个 CDS View 的内容。笔者下一篇文章,会详细介绍我们创建的第一个 CDS View 的每一行代码的详细含义。从本文开始,正式进入 CDS View 开发的学习。的条件,然后点击 Run 重新执行,得到结果。原创 2025-04-05 13:31:52 · 991 阅读 · 0 评论 -
SAP ABAP 四种传统的数据库视图类型介绍之四:Help View
作为其中一项重要的功能,Help View 允许开发人员在 SAPGUI 和 ABAP 程序中调用 Text Table 和 Search Help 等 ABAP 对象,以提供快速、准确的数据查找和输入建议。打开 H_T002 之后,同前面介绍的其他三种数据库视图一样,Help View 也需要定义 Table/Join Conditions 即数据来源的表,以及这些表之前通过怎样的关联关系进行连接。一种方式是分配给某个 Search Help,对用户的输入提供辅助选择。我们到系统中看一个具体的例子。原创 2025-03-31 18:23:13 · 965 阅读 · 0 评论 -
SAP ABAP 四种传统的数据库视图类型介绍之三:Maintenance View
用户根本不操心这些字段值后台是怎么存储的,他只需要录入数据,点击保存,然后 Maintenance View 会将四个字段值,分别存储到数据库表1,2,3 中去。时已经提过,这种类型的数据库视图,主要用于对一个或多个数据库表进行逻辑上的连接和整合,构成一个虚拟表,使得在应用程序中可以以单一视图的方式访问分散在不同表中的数据。用这种方式,我们可以查询和某个 Maintenance View 业务相关的其他相关 SPRO 配置,因为在 SPRO 里,业务上相关的配置总是相邻出现。原创 2025-03-29 10:44:15 · 857 阅读 · 0 评论 -
SAP ABAP 四种传统的数据库视图类型介绍之二:Projection View
一是该 projection view 只暴露了底层 TADIR 表的四个字段,因此通过该 view 维护数据,在维护界面我们只能维护一条记录的四个字段,如下图所示。使用 Projection view 的优点在于其设计灵活性:如果系统中原始的数据库表字段较多,通过投影仅保留关键信息可有效降低从数据库层到应用层之间的数据传输负担,且保持数据的一致性。其二是笔者之前的文章提到,TADIR 是 ABAP 系统重要的对象注册表,如同 window 操作系统的注册表一样,一般的应用开发人员不应该去修改其内容。原创 2025-03-25 09:42:20 · 1209 阅读 · 0 评论 -
SAP ABAP 四种传统的数据库视图类型介绍之一:Database View
例如,某企业的订单管理系统中,订单数据存放在订单表中,而客户信息存放在客户表中。所以我们在开始系统学习 ABAP CDS View 之前,至少得对传统数据库视图,要有一个最基本的了解,否则根本就不知道 ABAP CDS View 到底是在一个怎样的基础之上做的增强。假设我想查询系统里某用户创建的 ABAP 类的前一百条数据,包含 ABAP 类的名称,UUID,和创建者的用户名。开发了一张数据库视图,拥有 F1,F2,F4 和 F6 四个字段,分别从表1,表2和表3 的同名字段取值。原创 2025-03-25 08:25:49 · 1646 阅读 · 0 评论
分享