1, 取保SAP系统与HANA 数据库服务器网络连接

在SE38中运行report RSBDCOS0,ping一下HANA database,确保没有丢包现象发生。

也可以通过tcode:OS01来ping hana database服务器。

2, 在SAP ABAP系统中创建HANA数据库链接

使用TCode: DBCO创建ABAP系统到hana数据库的链接,这步有点类似SM59。

在connection info字段中,输入HANA服务器的hostname或者是IP地址,格式如下,

Hostname:315

其中,315   是端口, 是 HANA的instance号。

DBCO创建完毕后,通过报表ADBC_TEST_CONNECTION来检查是否创建成功,

输入DB connection名字HDB(上图创建的),运行,连接成功会提示,successfully opened。

除了用报表ADBC_TEST_CONNECTION还可以用tcode:DBACOCKPIT来检查HANA数据库连接。

3, ABAP程序实现

创建完SAP abap系统和HANA数据库的连接后,就可以通过abap程序来读取hana数据库中的数据了,

这主要是通过类CL_SQL_CONNECTION,CL_SQL_STATEMENT,CL_SQL_RESULT_SET来实现的。

完整代码:

ABAP

REPORT ztest_hana_connection.

TYPE-POOLS:adbc.

DATA lv_sql TYPE string.

DATA lv_from TYPE string.

DATA lv_where TYPE string.

DATA lv_where2 TYPE string.

DATA lv_where3 TYPE string.

DATA : v_rows TYPE i.

DATA : lt_meta TYPE adbc_rs_metadata_descr_tab,

lt_column TYPE adbc_column_tab,

ls_meta LIKE LINE OF lt_meta,

ls_column LIKE LINE OF lt_column.

*Define variables for the connection

DATA: lr_dbconn TYPE REF TO cl_sql_connection,

lv_con TYPE dbcon_name VALUE 'HDB',

lr_sql_env TYPE REF TO cl_sql_statement,

lr_sql_result TYPE REF TO cl_sql_result_set,

lr_sql_exc TYPE REF TO cx_sql_exception, "#EC NEEDED

lr_par_exc TYPE REF TO cx_parameter_invalid, "#EC NEEDED

dref TYPE REF TO data,

tab_ref TYPE REF TO data,

gt_components TYPE cl_abap_structdescr=>component_table,

gs_components LIKE LINE OF gt_components.

FIELD-SYMBOLS :

TYPE any.

*Get connection

lr_dbconn = cl_sql_connection=>get_connection( con_name = lv_con ).

CREATE OBJECT lr_sql_env

EXPORTING

con_ref = lr_dbconn.

* SQL statment

lv_sql = 'SELECT * FROM ZLYTEST01'.

* excute SQL

lr_sql_result = lr_sql_env->execute_query( lv_sql ).

* get SQL resule set

lt_meta = lr_sql_result->get_metadata( ).

LOOP AT lt_meta INTO ls_meta.

ls_column = ls_meta-column_name.

APPEND ls_column TO lt_column.

gs_components-name = ls_meta-column_name.

gs_components-type ?= cl_abap_datadescr=>describe_by_data( p_data = ls_meta-data_type ).

APPEND gs_components TO gt_components.

ENDLOOP.

DATA lr_tabledescr TYPE REF TO cl_abap_tabledescr.

lr_tabledescr = cl_abap_tabledescr=>create(

p_line_type = cl_abap_structdescr=>create( p_components = gt_components ) ).

CREATE DATA tab_ref TYPE HANDLE lr_tabledescr.

* get REFERENCE OF LT_DATA INTO tab_ref.

lr_sql_result->set_param_table(

EXPORTING

itab_ref = tab_ref " Reference to Output Variable

corresponding_fields = lt_column ).

**Execute the query

lr_sql_result->next_package( ).

v_rows = lr_sql_result->next( ).

ASSIGN tab_ref->* TO

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

REPORTztest_hana_connection.

TYPE-POOLS:adbc.

DATAlv_sqlTYPEstring.

DATAlv_fromTYPEstring.

DATAlv_whereTYPEstring.

DATAlv_where2TYPEstring.

DATAlv_where3TYPEstring.

DATA:v_rowsTYPEi.

DATA:lt_metaTYPEadbc_rs_metadata_descr_tab,

lt_columnTYPEadbc_column_tab,

ls_metaLIKELINEOFlt_meta,

ls_columnLIKELINEOFlt_column.

*Define variables for the connection

DATA:lr_dbconnTYPEREF TOcl_sql_connection,

lv_conTYPEdbcon_nameVALUE'HDB',

lr_sql_envTYPEREF TOcl_sql_statement,

lr_sql_resultTYPEREF TOcl_sql_result_set,

lr_sql_excTYPEREF TOcx_sql_exception,"#EC NEEDED

lr_par_excTYPEREF TOcx_parameter_invalid,"#EC NEEDED

drefTYPEREF TO data,

tab_refTYPEREF TO data,

gt_componentsTYPEcl_abap_structdescr=>component_table,

gs_componentsLIKELINEOFgt_components.

FIELD-SYMBOLS:

TYPEany.

*Get connection

lr_dbconn=cl_sql_connection=>get_connection(con_name=lv_con).

CREATE OBJECTlr_sql_env

EXPORTING

con_ref=lr_dbconn.

* SQL statment

lv_sql='SELECT * FROM ZLYTEST01'.

* excute SQL

lr_sql_result=lr_sql_env->execute_query(lv_sql).

* get SQL resule set

lt_meta=lr_sql_result->get_metadata().

LOOP ATlt_metaINTOls_meta.

ls_column=ls_meta-column_name.

APPENDls_columnTOlt_column.

gs_components-name=ls_meta-column_name.

gs_components-type?=cl_abap_datadescr=>describe_by_data(p_data=ls_meta-data_type).

APPENDgs_componentsTOgt_components.

ENDLOOP.

DATAlr_tabledescrTYPEREF TOcl_abap_tabledescr.

lr_tabledescr=cl_abap_tabledescr=>create(

p_line_type=cl_abap_structdescr=>create(p_components=gt_components)).

CREATE DATAtab_refTYPEHANDLElr_tabledescr.

*  get REFERENCE OF LT_DATA INTO tab_ref.

lr_sql_result->set_param_table(

EXPORTING

itab_ref=tab_ref" Reference to Output Variable

corresponding_fields=lt_column).

**Execute the query

lr_sql_result->next_package().

v_rows=lr_sql_result->next().

ASSIGNtab_ref->*TO

以上。

hana数据库连接mysql_如何连接HANA数据库读取表数据相关推荐

  1. java连接Excel数据库读取,写入,操纵Excel表格

    java连接Excel数据库读取,写入,操纵Excel表格 (2009-11-15 14:21:03) 转载 标签: java excel 连接 杂谈 分类:技术文档 java连接MicroSoft ...

  2. Python从数据库读取大量数据批量写入文件的方法

    今天小编就为大家分享一篇Python从数据库读取大量数据批量写入文件的方法,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 使用机器学习训练数据时,如果数据量较大可能我们不能够一次性将 ...

  3. python批量读取文件内容_Python从数据库读取大量数据批量写入文件的方法

    使用机器学习训练数据时,如果数据量较大可能我们不能够一次性将数据加载进内存,这时我们需要将数据进行预处理,分批次加载进内存. 下面是代码作用是将数据从数据库读取出来分批次写入txt文本文件,方便我们做 ...

  4. python Django 连接mysql数据库创建表详细全过程

    python Django 连接mysql数据库创建表详细全过程 1,在数据库中新建一个要连接的数据库(在cmd命令行里登录数据库进行创建创建) mysql -u root -p**+密码** cre ...

  5. python读取数据库数据、并保存为docx_Python从数据库读取大量数据批量写入文件的方法...

    Python从数据库读取大量数据批量写入文件的方法 使用机器学习训练数据时,如果数据量较大可能我们不能够一次性将数据加载进内存,这时我们需要将数据进行预处理,分批次加载进内存. 下面是代码作用是将数据 ...

  6. php 查看mysql连接数据库_php基础之连接mysql数据库和查询数据

    php基础之连接mysql数据库和查询数据 文章主要介绍了php连接mysql数据库和查询数据的方法和示例,需要的朋友可以参考下,就跟随百分网小编一起去了解下吧,想了解更多相关信息请持续关注我们应届毕 ...

  7. php显示mysql数据实例_php 连接mysql数据库并显示数据 实例 转载 aoguren

    PHP连接MySQL数据库并显示数据//---------基本设定---------$mysql_server_name = "localhost";//服务器名称:$mysql_ ...

  8. 易语言数据库读取相关数据

    本课用的命令 读() 取记录号 () 取记录数() 到首记录 () 到尾记录 () 打开() 关闭() 跳过() 跳到() 本课实现功能 读,上一条,下一条,读首记录,读尾记录,读所有记录 视频链接: ...

  9. oracle数据库迁移部分表,oracle 数据库之间 表数据的 迁移

    主要是 需要将 正式环境的数据库 和测试环境的数据库的 表 数据同步一下,方便测试. 这样的效果, 可以使用 数据库的 备份 , exp imp 等其他的方式, 可是这样的方式, 需要 在 电脑里面 ...

最新文章

  1. 面试必问---Java线程池8大拒绝策略
  2. Java程序员从笨鸟到菜鸟之(八十)细谈Spring(九)spring+hibernate声明式事务管理详解
  3. 五十一、结合百度API接口打造 Python小项目
  4. wordcloud库
  5. Tomcat设置Http自动跳转Https
  6. 用t430搭建虚拟服务器教程,T430完美使用VmWare
  7. Asp.net 自定义config文件读取
  8. php gd support not found.,安装php71w-gd并获取错误GD库扩展不适用于此PHP安装
  9. appium+python 【Mac】Android夜神模拟器
  10. Android背景图片设置
  11. 兰花草c语言编码蜂鸣器,蜂鸣器奏乐-多种音乐分享
  12. gitlab使用教程详细
  13. 访问路由出现An error occurred
  14. 图神经网络学习(一)-GCN及其应用
  15. 【Win10 UWP】微信SDK基本使用方法和基本原理
  16. 用计算机完成下表的视距测量计算公式,2012测量学计算题库及参考答案
  17. SQL 数据操纵语言
  18. 7-1 简单计算器 (25 分)
  19. manjaro 搜狗输入法_五款良心无广告的纯净输入法推荐
  20. C++: string讲解 前序

热门文章

  1. Fuzzing技术简介
  2. 2021亚太杯C题(塞罕坝)赛后总结
  3. php imagick生成图片,php Imagick 生成图片
  4. 电源的恒压与恒流原理
  5. Dan Abramov - [Just JavaScript] 01 Mental Models(心智模型) 随便翻译一下
  6. 合工大计算机与信息学院保研,合肥工业大学计算机与信息学院(专业学位)电子与通信工程保研夏令营...
  7. 第一次出国 之 泰国游记,
  8. 更改mysql端口(全程细致)
  9. “房间里有100个人,每人都有100元钱,每轮每人要拿一元钱随机给另一个人”最后分布的python结果
  10. CSCI 1100 — Computer Science Homework