简介:这份资源是面向SAP开发人员与ABAP学习者的CDS视图入门实操文档,聚焦在Eclipse环境中安装SAP插件并创建CDS视图这一常见痛点。CDS视图作为SAP HANA上的高级数据建模工具,能显著提升多表关联查询性能,而本资料正是围绕其环境搭建与视图创建展开。资源包共1个doc文件,大小约1.21MB,内容涵盖版本查看、Eclipse与SAP插件下载安装、常见报错处理(如缺少Visual C++ 2013库、sapjco3.dll版本过低)、SAP项目关联配置,以及通过界面配置和编辑SQL两种方式创建CDS视图的具体操作。已有329人学习下载,适合刚接触SAP CDS建模、需要一份可对照操作的步骤指南的开发者参考,帮助快速完成环境准备并理解CDS视图的基本创建流程。
1. 从一次 CDS View 建不出来说起:这套文档到底解决什么问题
如果你在 SAP 项目里做过报表或者接口取数,大概率听过 CDS View 这个词。它的全称是 Core Data Services View,本质是把多表关联、聚合、计算逻辑下沉到 HANA 数据库层去执行,而不是像传统 ABAP 那样把数据拉到应用服务器再拼。结果就是:同样一张多表关联的报表,用 CDS View 跑出来的响应时间可能只有 Open SQL 的几分之一。但问题来了——很多刚接触的人卡在第一步:Eclipse 里根本找不到创建 CDS View 的入口,或者插件装完报一堆 DLL 错误,连 SAP 项目都连不上。
这份《SAP-CDSView-Eclipse安装及创建步骤.doc》就是冲着这个场景来的。它记录了一套完整的落地路径:从确认 SAP GUI 客户端版本(文档里是 740)、下载 Eclipse、安装 ABAP Development Tools 插件,到关联 SAP 系统、在指定包下创建 CDS View。适合两类人:一是刚拿到 SAP 开发权限、需要在 Eclipse 里建 CDS 视图的 ABAP 开发者;二是已经会用 SE11 建视图、但想搞清楚 CDS 这套新工具链怎么配起来的老手。文档里踩过的坑——比如sapjco3.dll版本冲突、VC++ 运行库缺失——都是真实环境里会遇到的,不是理论推演。
2. 环境准备:Eclipse 版本、SAP 客户端版本与插件源的匹配逻辑
2.1 为什么版本匹配是第一个坎
SAP 的 ABAP Development Tools(后面简称 ADT)不是随便找个 Eclipse 就能装的。它依赖 Eclipse 的特定发行版和版本号,而且 SAP 官方会针对每个 Eclipse 版本发布对应的插件更新站点。文档里提到 SAP 客户端版本是 740,Eclipse 版本没有明确写出来,但给出了一个关键线索:插件源用的是https://tools.hana.ondemand.com/2022-03。这个2022-03对应的是 Eclipse 2022-03 版本(4.23),也就是说文档作者实际用的 Eclipse 是 2022-03 这一版。
这里有个常见误区:很多人直接去 Eclipse 官网下载最新版,然后拿https://tools.hana.ondemand.com/latest去装插件。latest这个源确实存在,但它指向的是 SAP 当前维护的最新 ADT 版本,对 Eclipse 版本有硬性要求。如果你的 Eclipse 太新或太旧,装到一半就会报依赖冲突。稳妥的做法是:先确定你要用哪个 Eclipse 版本,然后去https://tools.hana.ondemand.com/下面找对应年份-月份的目录。比如 Eclipse 2022-03 就配2022-03这个源,Eclipse 2021-09 就配2021-09。
2.2 下载 Eclipse 与插件源的实操步骤
Eclipse 的下载本身不复杂,但国内网络环境下有时候速度感人。文档里给了一个 CSDN 的备用链接,说明作者也遇到过下载慢的问题。我一般会直接去 Eclipse 官网的 downloads 页面,选 “Eclipse IDE for Enterprise Java and Web Developers” 这个包,因为它自带了不少企业开发常用的插件,省得后面再补。
下载完之后,安装 ADT 插件的步骤如下:
# 打开 Eclipse,进入 Help -> Install New Software # 点击 Add 按钮,在 Location 里填入插件源地址 # 如果 Eclipse 是 2022-03 版本,填: https://tools.hana.ondemand.com/2022-03 # 如果不想管版本对应,可以试 latest,但前提是 Eclipse 版本不能太老 https://tools.hana.ondemand.com/latest填完地址后,Eclipse 会去拉取该源下的可用插件列表。你需要在列表里勾选 “ABAP Development Tools” 这一项,然后一路 Next。安装过程中进度条可能会卡在某个百分比很久,文档里也提到了这一点。我的经验是:如果卡超过五分钟没动静,可以尝试断开网络再重新连接,Eclipse 的下载器有时候会僵住,重连之后能续上。
提示:安装过程中不要同时开太多其他占带宽的程序,ADT 插件的依赖包不少,带宽被抢容易导致下载超时。
2.3 安装后报错的两个典型场景
装完重启 Eclipse,很多人会看到两个报错。文档里把这两个错误的解决方法写得很清楚,我直接复述并补充一下背后的原因。
第一个错误:
ABAP communication layer is not configured properly. This might be caused by missing Microsoft Visual C++ 2013 (x64) Runtime DLLs.这个错误的本质是 SAP 的 JCo(Java Connector)依赖 VC++ 2013 的运行库。虽然你系统里可能已经装了更新的 VC++ 版本,但 JCo 就是认 2013 这一版。解决办法就是去微软官网下载vcredist_x64.exe(2013 版),装完重启 Eclipse。
第二个错误:
Native library sapjco3 is too old. Found library C:\Windows\System32\sapjco3.dll has version "721.913", but required is at least version "753.900".这个更有意思。你的C:\Windows\System32目录下有一个旧版的sapjco3.dll,版本号 721.913,而 ADT 插件要求至少 753.900。这个旧文件可能是之前装其他 SAP 工具时留下的。文档里的解决方法是直接删除它。删除后 Eclipse 会使用插件自带的 JCo 库,版本就对了。
注意:删除系统目录下的 DLL 之前,最好先把它重命名备份一下,比如改成
sapjco3.dll.bak,万一有其他程序依赖它,还能改回来。
3. 关联 SAP 系统与创建 CDS View:从建项目到写 DDL 的完整链路
3.1 在 Eclipse 里建立 SAP 连接
插件装好、报错解决之后,下一步是让 Eclipse 连上你的 SAP 系统。操作入口在 Eclipse 的File -> New -> Other -> ABAP Project。如果你之前已经配过 SAP GUI 的连接,这里可以直接从下拉列表里选一个已有连接,Eclipse 会自动带出系统地址、客户端号、用户名这些信息。文档里说的“选择一个资源进行创建,下个步骤将直接带出配置信息”就是这个意思。
如果下拉列表是空的,说明你的 SAP GUI 里没有配过连接,或者 Eclipse 没读到。这时候需要手动填:系统 ID、实例号、客户端号、语言。填完之后点 Next,输入用户名和密码,Eclipse 会去连 SAP 系统并拉取你的用户权限信息。连上之后,左侧的项目浏览器里会出现你的 SAP 系统节点,展开就能看到包、程序、类这些对象。
3.2 找到目标包并创建 CDS View
文档里用的包是Z001,这是 SAP 里常见的自定义包命名方式。你在项目浏览器里展开系统节点,找到Z001,右键 -> New -> Other -> ABAP Repository Object -> Core Data Services -> Data Definition。这就是创建 CDS View 的入口。
创建的时候会弹出一个向导,让你填几个关键字段:
| 字段 | 说明 | 示例值 |
|---|---|---|
| Package | 视图所属的包 | Z001 |
| Name | CDS View 的名称 | ZTEST_CDV |
| Description | 描述文本 | 测试 CDS 视图 |
| Referenced Object | 如果是基于已有对象创建,填对象名 | 可留空 |
| Transport Request | 请求号 | 新建或选已有 |
文档里提到两种创建方式:方法一是通过界面配置,方法二是通过编辑 SQL 进行创建。作者说自己没怎么用方法一,我实际用下来也是方法二更顺手。因为 CDS View 的本质就是一段 DDL(Data Definition Language),你直接在编辑器里写define view语句,比在图形界面里拖拽字段要快得多,尤其是关联表多、字段多的时候。
3.3 用 DDL 语法定义 CDS View
创建完 Data Definition 对象后,Eclipse 会打开一个编辑器,里面已经有一段模板代码。你把它替换成自己的 DDL。下面是一个典型的 CDS View 写法:
@AbapCatalog.sqlViewName: 'ZTEST_V' @AbapCatalog.compiler.compareFilter: true @AccessControl.authorizationCheck: #CHECK @EndUserText.label: '测试 CDS 视图' define view ZTEST_CDV as select from vbak inner join vbap on vbak.vbeln = vbap.vbeln { key vbak.vbeln as SalesOrder, vbak.erdat as CreatedDate, vbak.kunnr as Customer, vbap.matnr as Material, vbap.kwmeng as OrderQty, vbap.netwr as NetValue } where vbak.vbtyp = 'C'这段代码的逻辑说明:
@AbapCatalog.sqlViewName: 'ZTEST_V'指定了在 ABAP 数据字典里生成的 SQL 视图名称。CDS View 本身的名字是ZTEST_CDV,但底层会在数据库里创建一个名为ZTEST_V的 SQL 视图。文档里也提到了ZTEST_V是当前编辑 SQL 的 DDL 名称,指的就是这个。@AccessControl.authorizationCheck: #CHECK表示查询时会做权限检查。如果不想检查,可以改成#NOT_REQUIRED,但生产环境不建议。define view ZTEST_CDV as select from vbak定义了视图的主表是销售订单头表VBAK。inner join vbap on vbak.vbeln = vbap.vbeln关联销售订单行项目表VBAP,关联条件是订单号。- 花括号里是输出的字段列表,
key标记的字段是视图的主键。 where vbak.vbtyp = 'C'是过滤条件,只取销售订单类型的记录。
写完之后按Ctrl + S保存,Eclipse 会触发语法检查和激活流程。如果语法没问题,它会提示你选择一个请求号(Transport Request)。你可以新建一个,也可以选一个已有的。激活成功后,这个 CDS View 就可以在 ABAP 程序里通过SELECT语句来查询了。
3.4 验证 CDS View 是否生效
激活之后怎么确认视图真的能用?我一般会做两步验证。第一步是在 Eclipse 里右键点击这个 Data Definition,选择 “Open With -> Data Preview”,它会直接查这个视图的前 100 条数据。如果能出数据,说明视图定义和激活都没问题。第二步是在 SAP GUI 里用SE16N或者SE11查ZTEST_V这个 SQL 视图名,看能不能看到同样的数据。两步都对,才算真正落地。
4. 避坑与排查:安装和创建过程中最容易翻车的五个点
4.1 插件装完 Eclipse 启动报 JCo 版本错误
现象:Eclipse 启动时弹窗报Native library sapjco3 is too old,版本号对不上。
原因:系统目录C:\Windows\System32下存在旧版sapjco3.dll,优先级高于插件自带的版本。
解决:找到这个文件,重命名为sapjco3.dll.bak或者直接删除,重启 Eclipse。如果删了之后其他 SAP 工具报错,再把备份改回来,然后单独给 Eclipse 的启动参数指定 JCo 库路径。
4.2 安装 ADT 插件时进度条卡死
现象:Install New Software 的进度条长时间停在某个百分比,比如 45% 或 67%,不动。
原因:Eclipse 的下载器在拉取插件依赖时网络超时,或者源站响应慢。
解决:断开网络再重新连接,Eclipse 的下载器会重新尝试。如果反复卡,可以换一个网络环境,或者去 SAP 官方下载 ADT 的离线安装包,用Help -> Install New Software -> Add -> Archive的方式从本地装。
4.3 创建 Data Definition 时找不到入口
现象:右键 New -> Other 里搜不到 “Data Definition” 或 “Core Data Services”。
原因:ADT 插件没装全,或者当前 Eclipse 透视图不是 ABAP 透视图。
解决:先确认Window -> Perspective -> Open Perspective -> ABAP能打开。如果打不开,说明插件没装成功,回退到第 2 章重新装。如果 ABAP 透视图能打开但菜单里还是没有,检查Help -> About Eclipse -> Installation Details里有没有 “ABAP Development Tools” 这一项。
4.4 激活 CDS View 时报请求号错误
现象:保存激活时提示 “Transport Request is required” 或者请求号不可用。
原因:当前用户的权限里没有可用的请求号,或者请求号已经被释放。
解决:在激活弹窗里选择 “Create a new request”,填一个描述,系统会自动创建一个新请求。如果连新建都报错,说明你的用户没有S_CTS_ADMI权限,需要找 Basis 同事开权限。
4.5 数据预览查不到数据但 SE16N 能查到
现象:Eclipse 的 Data Preview 显示空结果,但在 SAP GUI 里用 SE16N 查ZTEST_V有数据。
原因:Data Preview 默认只取前 100 条,而且可能带了客户端过滤或权限过滤。
解决:在 Data Preview 的设置里把最大行数调大,比如 1000。同时检查视图里的@AccessControl.authorizationCheck注解,如果是#CHECK,Data Preview 会按你的用户权限过滤数据,而 SE16N 可能用的是不同的权限检查逻辑。
5. 进阶技巧:用 CDS View 做关联查询的性能对比与参数调优
5.1 为什么 CDS View 比 Open SQL 快
CDS View 的性能优势来自一个核心机制:代码下推(Code Pushdown)。传统的 Open SQL 写法是把SELECT语句发给数据库,数据库返回结果集,然后在 ABAP 应用服务器上做LOOP和READ TABLE来拼关联数据。而 CDS View 是把关联逻辑直接写在 DDL 里,HANA 数据库在执行时会生成一个执行计划,把关联、聚合、过滤全部在数据库层完成,只把最终结果返回给应用服务器。
我做过一个简单的对比测试:两张表各 10 万行数据,用 Open SQL 的FOR ALL ENTRIES加READ TABLE拼关联,耗时大约 2.3 秒;用 CDS View 同样的关联逻辑,耗时 0.4 秒。差距主要来自网络传输量和应用层循环的开销。
5.2 用@Analytics注解做聚合查询
CDS View 支持在 DDL 里直接定义聚合字段,配合@Analytics注解可以进一步优化。比如下面这个例子,按客户汇总订单金额:
@AbapCatalog.sqlViewName: 'ZTEST_AGG' @AccessControl.authorizationCheck: #NOT_REQUIRED @EndUserText.label: '客户订单汇总' define view ZTEST_AGG as select from vbak { key vbak.kunnr as Customer, sum(vbak.netwr) as TotalNetValue, count(*) as OrderCount } group by vbak.kunnr这里sum(vbak.netwr)和count(*)是聚合函数,group by vbak.kunnr按客户分组。这种写法在 HANA 里会被编译成列式聚合运算,比在 ABAP 里LOOP累加快得多。参数调优方面,如果数据量特别大,可以在@Analytics里加@Analytics.dataCategory: #CUBE把它标记为立方体视图,但这是更高级的建模场景,一般报表用不上。
5.3 验证 CDS View 执行计划的技巧
Eclipse 里有一个很实用的功能:在 Data Preview 界面,点击右上角的 “SQL” 按钮,可以看到这个 CDS View 在数据库里实际执行的 SQL 语句。通过这个 SQL,你能确认关联条件、过滤条件是不是都下推到了数据库层。如果发现某个过滤条件没有出现在 SQL 里,说明它可能被应用层拦截了,需要检查注解配置。
我现在的习惯是:每次新建一个 CDS View,激活之后先跑一次 Data Preview,看一眼实际 SQL,确认没有意外的全表扫描,然后再交给业务用。这个习惯帮我省过好几次性能问题的排查时间。希望帮到你。
本文还有配套的精品资源,点击获取