实现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. Django权限auth模块详解

    转自:http://www.cnblogs.com/Finley/p/5575305.html 1,auth模块是Django提供的标准权限管理系统,可以提供用户身份认证,用户组和权限管理 2,aut ...

  2. docker之container

    转自:https://www.cnblogs.com/jsonhc/p/7760144.html 运行一个container的本身就是开启一个具有独立namespace的进程 进程有自己的网络,文件系 ...

  3. python语言中的数据类型之列表

    数据类型及内置方法 列表: list    可变类型,有序 用途:用来记录多个值(同属性) 定义方式:在[  ]内用逗号分隔开多个任意类型的值 l=['a','b','c'] #l=list(['a' ...

  4. 修饰词public、private、protected、默认、四者之间的区别

    在Java语法中,对于类与类中的成员变量和成员方法是通过访问控制符来区分控制的. 下面来看看这四种访问控制符的区别:(public.protected.private.default) 1.publi ...

  5. winform clickonce在线安装

    转 http://swanmsg.blog.sohu.com/162994305.html

  6. eval解析字符串为JSON对象

    对于服务器返回的JSON字符串,如果jquery异步请求没做类型说明,或者以字符串方式接受,那么需要做一次对象化处理,方式不是太麻烦,就是将该字符串放于eval()中执行一次. 这种方式也适合以普通j ...

  7. 学JS的心路历程-Promise(二)

    昨天有说到Promise的创建以及then的用法,今天我们来看错误处理. then onRejected 我们昨天有提到说,then两个函式参数,onFulfilled和onRejected,而onR ...

  8. SAP 数据类型

    数据元素和基本类型对应关系 数据字典预置类型 ABAP类型 运行长度 说明 ACCP N(6) 6 会计计算周期 CHAR C(n) 1-255 字符 CLNT C(3) 3 集团,数据区域代码 CU ...

  9. Oracle中PL/SQL的循环语句

    在PL/SQL中可以使用LOOP语句对数据进行循环处理,利用该语句可以循环执行指定的语句序列.常用的LOOP循环语句包含3种形式:基本的LOOP.WHILE...LOOP和FOR...LOOP. LO ...

  10. Centos 7升级内核

    检查当前 CentOS 系统内核版本 uname -sr 在 CentOS 7 上启用 ELRepo 仓库 rpm --import https://www.elrepo.org/RPM-GPG-KE ...