ABAP基础知识 怎么访问HANA数据库中的其它CATALOG的表

前言

CATALOG 或者SCHEMA 都属于数据库的抽象概念,主要用来解决命名冲突问题.

本文主要讨论怎么在ABAP的环境下访问数据库其它CATALOG中的表.

CATALOG VS SCHEMA

之前也没有认真理解这两个概念的差异, 只知道是架构在表的上级层次,(就像表家族的姓氏一般.) 以为二者只是不同数据库对同一个概念的不同称呼.

网上搜索了一下,有人认真比对了二者的差异. 因为HANA数据库的小众化,列表中没有提及.

但是从HANA STUDIO中的查看, HANA应该是支持catalog,不支持schema ,同时,每个用户都会有一个同名的catalog

3828e8ab75f5ab7bb3faca5876235f9a.png

580ad9be60dae8d892e77a4ba35dd319.png

ABAP环境的CATALOG名

ECC/S4系统安装的时候,也会在HANA数据库中创建一个CATALOG. 

可以通过数据库工具(TCODE:DB02,还有其它TCODE也能进入相同的界面)查看,大部分的ECC/S4系统使用的HANA CATALOG名称是 SAPABAP1 或者SAPHANADB . 

似乎安装系统的过程中,BASIS可以自定义CATALOG名称. ABAP数据字典对应的表都在这个CATALOG中. 大部分情况也不需要访问其它CATALOG的表.

20f0a23c9418bc1e92798100db5d6187.png

访问其它CATALOG的情况

如果使用了SLT同步数据表内容 .

详见链接

无峰,公众号:ABAP 技巧与实战SAP操作手册之 LT数据同步配置

SLT工具为了避免目标数据库存在同名表,会根据同步的配置名创建一个同名的CATALOG. 在目标数据库的ABAP系统中, 如果需要访问这些同步过来的表, 就需要涉及到本文讨论的话题了. 怎么访问数据库中其它CATALOG的表.

461ca82c964ff6dcd838a98130164f62.png

访问方式

  • SQL编辑器访问

  • OPENSQL 访问

  • ADBC访问

  • 外部视图访问

  • CDS视图访问(ADMP)

01

SQL编辑器访问

SQL编辑器是ABAP中的一个SQL语句编辑执行的工具(通过DB02事务代码可以进入),可以方便的创建记录访问数据库的SQL语句及查看执行情况.

SQL编辑器的底层逻辑使用了ADBC访问访问数据库.

这种访问方式不是一种正式的访问方式. 推荐大家使用它来熟悉表结构及内容.

之前写过一个代码生成工具, 可以直接通过在SQL语句中添加注释,来生成一个ABAP报表程序(该文章是付费文章, 无法引用,感兴趣的请自行查找)

97eec1eaf54fc81ec13ab5def8ab195f.png

6fa67d59a8e2fbbe9a41b6d266babcd2.png

02

NATIVE SQL 访问

NATIVE SQL 是ABAP中支持的一种通过数据库SQL语句访问本地或外部数据库(通过DBCO建立连接) 的方式.

DBCO建立数据库连接

无峰,公众号:ABAP 技巧与实战ABAP基础知识 访问外部数据库-配置篇

NATIVE SQL详见连接

无峰,公众号:ABAP 技巧与实战ABAP基础知识 访问外部数据库-开发篇


03

ADBC访问

ADBC 访问方式详见

无峰,公众号:ABAP 技巧与实战ABAP基础知识 访问外部数据库-开发篇

数据同步平台也是采用的这种方式访问外部数据库

04

外部视图访问

先在HANA STUDIO 中创建HANA视图. (怎么创建HANA视图不在本文讨论范畴,有兴趣的可以自行百度). HANA视图的 default client 属性中的session client 依赖于用户主记录中维护的session client . 建议session client 维护成 cross , 同时HANA视图中添加MANDT 字段. 在应用层面再确定CLIENT

697fcbf4c1a7881519e189675759fe51.png

9aad34cd2cada857402ae013f5be5c74.png

用ECLIPS创建外部视图

89f1504ae95b96e7d04c7a4bf45e9e10.png

cbf48201675a023c2f29985de3dfe5cb.png

外部视图可以在SE11/SE16N中访问. 同时可以像ABAP视图一样在ABAP语句中直接访问

27892c6bbb33330b13bb7dd5931218f2.png

05

CDS视图访问(AMDP)

AMDP(ABAP Managed Database Procedures)

de0cd4c447b7d3ff2430ba0ae05e6ccd.png

AMDP是一种特殊的调用HANA 原生SQL的方式

CDS视图中是不支持直接使用HANA SQL语句, 只能如下方式实现.

创建一个类(该类只能在ECLIPSE中创建,SAPGUI中只能查看, 不能创建)和CDS视图配合来完成对数据库中其它CATALOG中的表的访问

  1. 指定类使用特定的界面

  2. 指定类方法关联 TABLE FUNCTION (CDS视图中的TABLE FUNCTION)

  3. 指定类方法中使用SQL脚本,只读属性

  4. 原生HANA SQL语句

  5. CDS中定义的TABLE FUNCTION 同2

  6. 指定CDS视图执行创建的类方法

创建好的CDS视图因为不能定义ABAP视图名称, 因此无法通过SE11/SE16N访问, 只能通过ABAP语句访问

a7c7533efeec0825ed8f7b3e7ac623ce.png

fcf425e5cbfd702a105c5e0a4e40bc16.png

总结

本文的部分内容和前序访问外部数据库的方式有些重叠. 

访问数据库的CATALOG也可以理解成访问一个指定的外部数据库(在创建DBCO连接时可以执行CATALOG的名称). 所以二者使用的方法是一致的. 

最后两种(通过HANA视图创建外部视图访问,及通过CDS 及ADMP访问)就比较有针对性了. 更贴近本文的主题.

总之, 条条大路通罗马, 选择一个你最熟悉的路,或者在百度地图中标识最近的直通罗马. 咱们罗马见.

约定

如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.       

    (如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程. 越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.)

1f159b425a5eb6fc79c68f4b3dd94450.png

公众号 : syjf1976_abap

          ABAP开发技巧

微信号 : 392077

请微信联系管理员: 

syjf1976 

sharry_xlp  

Yannick_Duan 

申请进入公众号讨论群提问或者参与话题讨论

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值