通常我们在项目实施过程中,会遇到需要从外围系统数据库中取数,插入数据,删除数据等操作,通常我们都会使用native sql,下面介绍一下adbc的使用方法,个人感觉比native sql更好一些,而且更加符合面向对象的开发理念,至于什么是adbc,以及adbc更多的介绍,大家可以通过百度了解更多,这里就不一一介绍了,下面通过代码来讲解具体的使用方法。
更多的demo大家可参照sap标准的demo,以下:
背景:ECC需要从BW系统的表中获取数据,通常我们会在bw系统创建一个远程函数调用来获取,这里我们使用adbc的方式实现
1.首先,dbco创建ecc与bw 系统hanadb的数据库连接,可以找伟大的basis帮忙配置
2.创建一个程序,为了方便调试,增加了选择屏幕跟查询条件
PARAMETERS: p_con TYPE dbcon-con_name,
p_werks TYPE t001w-werks.
3.声明一个类,用于实现adbc的功能
CLASS adbc DEFINITION."类定义
"公共方法,对外公开
PUBLIC SECTION.
METHODS:
main."主方法
DATA con_ref TYPE REF TO cl_sql_connection.
"私有方法,用于本身系统调用
PRIVATE SECTION.
METHODS:
connect"连接数据库
IMPORTING p_con_name TYPE dbcon-con_name
RAISING cx_sql_exception,
select_into_table"取数
RAISING cx_sql_exception.
"插入数据,删除表,等大家可自行研究,这里就不写了
ENDCLASS.
4.类的具体实现
CLASS adbc IMPLEMENTATION.
METHOD main.
"连接数据库
connect( p_con ).
"取数
select_into_table( ).
ENDMETHOD.
METHOD connect.
"连接数据库
con_ref = cl_sql_connection=>get_connection( p_con_name ).
ENDMETHOD.
METHOD select_into_table.
"定义用户接收数据的内表
DATA :BEGIN OF ls_data,
plant TYPE t001w-werks,
END OF ls_data,
lt_data LIKE TABLE OF ls_data.
CLEAR:ls_data,lt_data.
"构造sql语句,具体的sql方式需要跟连接的数据库用法一致,例如下面的sql是hanadb的sql语句
DATA(l_stmt) = |SELECT TOP 100 "PLANT" FROM "SAPHANADB"."/BIC/AZTWWS0162" WHERE "PLANT" = '{ p_werks }'|.
"创建语句对象,要从哪个表取,后面放哪个表
DATA(l_stmt_ref) = con_ref->create_statement( tab_name_for_trace = |"SAPHANADB"."/BIC/AZTWWS0162"| ).
"执行sql
DATA(l_res_ref) = l_stmt_ref->execute_query( l_stmt ).
"这里可以不用,显得有些多余
DATA lt_column TYPE adbc_column_tab.
lt_column = VALUE #( ( 'PLANT' ) ).
"通过方法获取sql得到的数据
l_res_ref->set_param_table( EXPORTING itab_ref = REF #( lt_data )
corresponding_fields = lt_column ).
"必须通过下面的方法,数据才会写入到内表中
l_res_ref->next_package( ).
l_res_ref->close( ).
ENDMETHOD.
ENDCLASS.
5.调用main方法
START-OF-SELECTION.
"调用main方法
NEW adbc( )->main( ).
今天的文章 原生SQL接口API(ADBC)的使用分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/97534.html