实现SAP连接外部数据库

也可用SM30维护DBCON的内容

SAP提供了对原生sql的操作,主要有以下几个类组成:

  • CL_SQL_STATEMENT - Execution of SQL Statements
  • CL_SQL_PREPARED_STATEMENT - Prepared SQL Statements
  • CL_SQL_CONNECTION - Administration of Database Connections
  • CX_SQL_EXCEPTION - Exception Class for SQL Error

还会用到:

  • CL_SQL_RESULT_SET- Resulting Set of an SQL Query
  • CX_PARAMETER_INVALID- Superclass for Parameter Error

示例代码:

FUNCTION xxx.
TYPES: BEGIN OF t_sp_test,
a TYPE char10,
END OF t_sp_test,
t_sp_test_tab TYPE TABLE OF t_sp_test. DATA: lt_sp_test TYPE t_sp_test_tab,
ls_sp_test TYPE t_sp_test. DATA: lv_root_message TYPE string.
DATA: lv_sql_message TYPE string.
DATA: lv_param_message TYPE string.
DATA: lr_cxsql TYPE REF TO cx_sql_exception.
DATA: lr_cxpar TYPE REF TO cx_parameter_invalid.
DATA: l_con_ref TYPE REF TO cl_sql_connection.
DATA: l_stmt_ref TYPE REF TO cl_sql_statement.
DATA: l_res_ref TYPE REF TO cl_sql_result_set.
DATA: lv_stmt TYPE string.
DATA: l_dref TYPE REF TO data,
ncount TYPE i,
l_error TYPE c. result = 0. TRY.
CALL METHOD cl_sql_connection=>get_connection
EXPORTING
con_name = dbconn
RECEIVING
con_ref = l_con_ref.
CATCH cx_sql_exception INTO lr_cxsql.
result = 1.
lv_root_message = lr_cxsql->get_text( ).
lv_sql_message = lr_cxsql->sql_message.
CONCATENATE msg lv_root_message lv_sql_message INTO msg SEPARATED BY '/'.
EXIT.
ENDTRY. IF result <> 1.
LOOP AT sql INTO lv_stmt. CALL METHOD l_con_ref->create_statement
RECEIVING
stmt_ref = l_stmt_ref. TRY. CALL METHOD l_stmt_ref->execute_update
EXPORTING
statement = lv_stmt
RECEIVING
rows_processed = ncount. CATCH cx_sql_exception INTO lr_cxsql.
result = 1.
lv_root_message = lr_cxsql->get_text( ).
lv_sql_message = lr_cxsql->sql_message.
CONCATENATE msg lv_root_message lv_sql_message INTO msg SEPARATED BY '/'.
EXIT. CATCH cx_parameter_invalid INTO lr_cxpar.
result = 1.
lv_root_message = lr_cxpar->get_text( ).
lv_param_message = lr_cxpar->parameter.
CONCATENATE msg lv_root_message lv_sql_message INTO msg SEPARATED BY '/'.
EXIT.
ENDTRY.
ENDLOOP.
ENDIF. IF result = 1.
CALL METHOD l_con_ref->rollback.
ELSE.
CALL METHOD l_con_ref->commit.
ENDIF. GET REFERENCE OF ls_sp_test INTO l_dref. IF dbconn <> 'DEFAULT'.
CALL METHOD l_con_ref->close.
ENDIF.
ENDFUNCTION.
  • Import

    • DBCONN TYPE C
  • Export
    • RESULT TYPE I
    • MSG TYPE BAPI_MSG
  • Tables
    • SQL

DBCO的更多相关文章

  1. 【ABAP系列】SAP 使用事务码DBCO实现SAP链接外部数据库以及读取例程

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP 使用事务码DBCO实现S ...

  2. .数据库连接池技术:DBCP和C3P0

    数据库连接池技术:DBCP和C3P0 1.什么是数据库连接池 已知的方法是需要访问数据库的时候进行一次数据库的连接,对数据库操作完之后再释放这个连接,通常这样业务是缺点很明显的: 用户每次请求都需要向 ...

  3. Mosquitto pub/sub服务实现代码浅析-主体框架

    Mosquitto 是一个IBM 开源pub/sub订阅发布协议 MQTT 的一个单机版实现(目前也只有单机版),MQTT主打轻便,比较适用于移动设备等上面,花费流量少,解析代价低.相对于XMPP等来 ...

  4. SAP技术相关Tcode

    ABAP的常用tcode 开发----------------------------------------------- SE51  屏幕制作 SE91  MESSAGE OBJECT SE80  ...

  5. SAP连接HANA数据库

    既然都用HANA了,为什么还要在SAP端,连接HANA数据库,做数据库处理..... 因为HANA数据库,没个用户在STADIO上建的数据库表...只能这个用户使用,而做Universe 设计的时候, ...

  6. ABAP知识点提纲

    编号 课程名称 课程内容 预计课时 10.1.1~10.1.2 SAP系统与产品集 1. 了解SAP常见产品 ,了解SAP系统架构 1 10.1.3~10.1.4 导航界面与用户界面 1. 了解SAP ...

  7. SAP R/3系统的R和3分别代表什么含义,负载均衡的实现原理

    1972年,SAP诞生,推出了RF系统(实时财务会计系统), 后来命名为R1. R指Real time.3既指第三代系统,又代表3层架构. 三层架构分别为下图的Presentation server ...

  8. SAP系统接口方式:

    SAP系统接口方式: 1.PI - 信使中间件 (大公司多选择) 数据: SAP- PI- U8 U8- PI- SAPPI 底层用的还是webservice 技术优点:实时性高: 可处理大数据(在调 ...

  9. ABAP常用事务码

    开发----------------------------------------------- SE51  屏幕制作 SE91  MESSAGE OBJECT SE80  对象浏览器(可以建开发类 ...

随机推荐

  1. ABAP-JSON数据格式互转

    *&---------------------------------------------------------------------* *& Report ZRICO_TES ...

  2. iframe+form表单提交数据

    <h6>基于iframe+Form表单</h6> <iframe id="iframe" name="ifra" onclick= ...

  3. ACM__搜素之BFS与DFS

    BFS(Breadth_First_Search) DFS(Depth_First_Search) 拿图来说 BFS过程,以1为根节点,1与2,3相连,找到了2,3,继续搜2,2与4,相连,找到了4, ...

  4. 4.Python文件操作

    文件内需要写入的内容 Seems the love I’ve ever known 看来,过去我所知道的爱情 Has always been the most destructive kind 似乎总 ...

  5. 一小段测试atof的代码

    #include <stdio.h> //#include <stdlib.h> double a=0; int main(int argc, char *argv[]) { ...

  6. Zabbix点滴记录

    转自 眄眄的闺蜜 简单检查中的icmppingloss[<target>,<packets>,<interval>,<size>,<timeout ...

  7. Windows命令行打开常用界面

    本文主要介绍Windows下命令行操作打开常用界面,使用方法为在DOS命令行下输入相关命令.可以减少多次操作界面.可以尝试在命令行执行下面提到的命令感受下,快捷键主要内容包括: 1.查看计算机的基本信 ...

  8. delphi 实现两个exe文件共享内存映像的代码

    创建内存映像的程序 ------------------------------------------------------------------------------------------ ...

  9. MOSS 2007 错误0x80040E14解决

    今天公司内网莫名的出现错误,只能新建列表条目,不能创建网站,到后来列表条目也不能创建了,一直报0x80040E14错误.于是Google一把,搜索这个错误号,然后在apearce 的Blog找到了原因 ...

  10. iOS中的MVC

      我们今天谈谈cocoa程序设计中的 模型-视图-控制器(MVC)范型.我们将从两大方面来讨论MVC: 什么是MVC? M.V.C之间的交流方式是什么样子的? 理解了MVC的概念,对cocoa程序开 ...