Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 
former_member681427
Participant
646
如果您需要暴露SAP HANA数据库中的数据时,最佳实践方案是使用OData。这篇博文将讲解如何将SAP HANA Cloud中的表作为OData服务暴露出来。

你将获得这些内容


 如何在SAP BTP上Cloud Foundry的环境中创建CAP模型
 如何通过CDS在SAP HANA Cloud中创建表格
 如何通过OData服务暴露到SAP BTP Cloud Foundry运行环境

CAP架构: SAP Cloud Application Programming模型简称SAP CAP,是一种架构,一种库,也是用以创建企业级服务和应用的工具。


另外,我们还会用到Core Data Services(CDS)。CDS是我们通用的建模语言,其以概念性的、简洁的和可理解的方式获取静态资源,它是CAP的支柱。

 

前置条件


环境设置


授权配置


为了CAP开发,需要为Cloud Foundry空间配置一些资源。下面这些计划需要配置到你的Cloud Foundry空间。(为子账户添加授权)





























授权 计划
Application Runtime 2G
HANA hdi-shared
SAP HANA Cloud hana
SAP HANA Cloud hana-cloud-connection
SAP HANA Cloud relational-data-lake

订阅SAP Business Application Studio


登陆SAP BTP主控室,进入到自己的子账户中,浏览到Service MarketPlace(应用市场),订阅Application Studio


配置角色集合
从左侧边框栏选择 角色集合 ,点击 “+” 按钮添加新的角色集合。

进入新角色集合BAS,点击编辑添加角色,再添加自己的用户,最后点击保存
确保至少添加Administrator,Developer角色。



注释:注意应用程序标识符一般以prod-mta开头



登陆SAP Business Application Studio


在左侧栏中点击 实例和应用, 点击小图标登陆SAP Business Application Studio。



创建开发空间


点击 Create Dev Space 建立自己的开发空间。


输入一个开发空间的名称,在这里我们选择全栈云应用。在右侧勾选HANA相关的扩展插件,点击创建按钮,并等待创建完成,之后会自动进入到开发空间。



第一步:在SAP Business Application Studio里创建新项目


在欢迎界面上选择 Create project from template
选择 CAP 磁贴并点击下一步。


输入新项目名称,选择功能 hanamta 和 samples


完成项目创建并在在workspace中打开。项目文件结构会按以下方式显示:

所有的示例数据文件都在 db 文件夹里,包含.csv文件和data-model.cds文件。



第二步: 为package.json文件配置CDS



  • 更新@sap/hana-client的值



"@sap/hana-client": "^2.6.61"   



  • 更新 scripts 部分



    "start": "cds run",
"hana": "cds deploy --to hana:mycapdemo-db --auto-undeploy",
"build": "cds build/all --clean"



  • 在 cds 章节中添加新片段 hana



"hana": {
"deploy-format": "hdbtable"
}



  • 将db类型更新为 hana



"kind": "hana"


这是完整的package.json文件供您参考,需要注意的是将hana实例名 mycapdemo-db 记住,后面会用到。
注释: 字段 "name": "mycapdemo" 和hana实例名 “mycapdemo-db” 保持对应关系。这样做将会大大降低后续步骤中手动改配置的工作。


{
"name": "mycapdemo",
"version": "1.0.0",
"description": "A simple CAP project.",
"repository": "<Add your repository here>",
"license": "UNLICENSED",
"private": true,
"dependencies": {
"@sap/cds": "^5",
"express": "^4",
"@sap/hana-client": "^2.6.61"
},
"devDependencies": {
"@sap/hdi-deploy": "^4.2.0",
"sqlite3": "^5.0.2"
},
"scripts": {
"start": "cds run",
"hana": "cds deploy --to hana:mycapdemo-db --auto-undeploy",
"build": "cds build/all --clean"
},
"eslintConfig": {
"extends": "eslint:recommended",
"env": {
"es2020": true,
"node": true,
"jest": true,
"mocha": true
},
"globals": {
"SELECT": true,
"INSERT": true,
"UPDATE": true,
"DELETE": true,
"CREATE": true,
"DROP": true,
"CDL": true,
"CQL": true,
"CXL": true,
"cds": true
},
"rules": {
"no-console": "off",
"require-atomic-updates": "off"
}
},
"cds": {
"requires": {
"db": {
"kind": "hana"
}
},
"hana": {
"deploy-format": "hdbtable"
}
}
}


第三步: 安装关键依赖


从菜单中选择终端terminal,并执行这行命令:
npm install



第四步: 创建hdi-container



  • 登陆你的 org/space
    点击菜单 View->Find Command->Login to Cloud Foundry,输入你的登陆BTP的账号和密码完成登陆,并选择自己要部署应用的org/space。 接下来将创建hana实例campdemo-db,整个创建过程可能会持续几分钟。执行如下命令行:


npm run hana


CDS工具将会自动完成数据库表的创建,不需要手动创建。另外将从BTP中自动获取数据库的登陆凭证,并保存在default-env.json文件中。


返回到SAP BTP主控制台,浏览到你的子账户,检查实例菜单,确认 capdemo-db 存在。



第五步: 检查OData服务可用性


执行命令行:
npm start

执行完命令行,点击“Open in new tab” 测试我们的cds.service是否正常工作。如果能正常看到此页面,则说明你的cds.service已经正常工作了。



第六步: 在部署前检查文件内容(选配)


注释: 如果你先前在定义hana实例名称时保持了“项目名称-db”这样的格式未做更改,则请跳过这一步

示例: 我在创建hana实例时另取了一个新名字 "myhana-db"

  • 检查文件 manifest.yml
    打开文件/home/user/projects/mycapdemo/gen/db/manifest.yml, 保证services名称和你新创建的hana实例名称保持一致(即在第二步中定义的名称)。如果在第二步中定义了不同的hana实例名称,则需要将services名称更新为实际新建的hana实例名称。

  • 检查文件 mta.yml
    打开文件 /home/user/projects/mycapdemo/mta.yml,将所有相关的名称全部更新为如下正确内容:



## Generated mta.yaml based on template version 0.4.0
## appName = mycapdemo
## language=nodejs; multiTenant=false
## approuter=
_schema-version: '3.1'
ID: mycapdemo
version: 1.0.0
description: "A simple CAP project."
parameters:
enable-parallel-deployments: true

build-parameters:
before-all:
- builder: custom
commands:
- npm install --production
- npx -p @sap/cds-dk cds build --production

modules:
# --------------------- SERVER MODULE ------------------------
- name: mycapdemo-srv
# ------------------------------------------------------------
type: nodejs
path: gen/srv
requires:
# Resources extracted from CAP configuration
- name: myhana-db
provides:
- name: srv-api # required by consumers of CAP services (e.g. approuter)
properties:
srv-url: ${default-url}

# -------------------- SIDECAR MODULE ------------------------
- name: mycapdemo-db-deployer
# ------------------------------------------------------------
type: hdb
path: gen/db
parameters:
buildpack: nodejs_buildpack
requires:
# 'hana' and 'xsuaa' resources extracted from CAP configuration
- name: myhana-db


resources:
# services extracted from CAP configuration
# 'service-plan' can be configured via 'cds.requires.<name>.vcap.plan'
# ------------------------------------------------------------
- name: myhana-db
# ------------------------------------------------------------
type: com.sap.xs.hdi-container
parameters:
service: hana # or 'hanatrial' on trial landscapes
service-plan: hdi-shared
properties:
hdi-service-name: ${service-name}


第七步: 为新应用添加路由


确保在你的org/space里已经具有了合法可用的域名。打开文件/home/user/projects/mycapdemo/mta.yml,在片段“mycapdemo-srv”中添加新参数routes(注意保持yaml文件格式正确)。

modules:
# --------------------- SERVER MODULE ------------------------
- name: mycapdemo-srv
# ------------------------------------------------------------
type: nodejs
path: gen/srv
parameters:
routes:
- route: "mycapdemo.apps.sap-samples.scpcloud.top"
requires:
# Resources extracted from CAP configuration


第八步: 部署我的服务到SAP BTP平台 / Cloud Foundry运行环境中



  • 编译MTA文件
    在文件mta.yml上右键点击"Build MTA"菜单

  • 部署mta到Cloud Foundry运行时环境
    执行此命令行完成应用部署


cf deploy mta_archives/mycapdemo_1.0.0.mtar



第九步: 通过外部链接访问OData服务


登陆到SAP BTP主控制台,导航浏览到 org/空间,定位到应用页面。
点击“mycapdemo-srv”进入应用详细视图。点击链接“mycapdemo.apps.sap-samples.scpcloud.top”打开你的应用。