排行
数据库百科
核心案例
行业报告
月度解读
大事记
产业图谱
中国数据库
向量数据库
时序数据库
实时数据库
搜索引擎
空间数据库
图数据库
数据仓库
大调查
2021年报告
2022年报告
年度数据库
2020年openGauss
2021年TiDB
2022年PolarDB
2023年OceanBase
首页
资讯
活动
大会
学习
课程中心
推荐优质内容、热门课程
学习路径
预设学习计划、达成学习目标
知识图谱
综合了解技术体系知识点
课程库
快速筛选、搜索相关课程
视频学习
专业视频分享技术知识
电子文档
快速搜索阅览技术文档
文档
问答
服务
智能助手小墨
关于数据库相关的问题,您都可以问我
数据库巡检平台
脚本采集百余项,在线智能分析总结
SQLRUN
在线数据库即时SQL运行平台
数据库实训平台
实操环境、开箱即用、一键连接
数据库管理服务
汇聚顶级数据库专家,具备多数据库运维能力
数据库百科
核心案例
行业报告
月度解读
大事记
产业图谱
我的订单
登录后可立即获得以下权益
免费培训课程
收藏优质文章
疑难问题解答
下载专业文档
签到免费抽奖
提升成长等级
立即登录
登录
注册
登录
注册
首页
资讯
活动
大会
课程
文档
排行
问答
我的订单
首页
专家团队
智能助手
在线工具
SQLRUN
在线数据库即时SQL运行平台
数据库在线实训平台
实操环境、开箱即用、一键连接
AWR分析
上传AWR报告,查看分析结果
SQL格式化
快速格式化绝大多数SQL语句
SQL审核
审核编写规范,提升执行效率
PLSQL解密
解密超4000字符的PL/SQL语句
OraC函数
查询Oracle C 函数的详细描述
智能助手小墨
关于数据库相关的问题,您都可以问我
精选案例
新闻资讯
云市场
登录后可立即获得以下权益
免费培训课程
收藏优质文章
疑难问题解答
下载专业文档
签到免费抽奖
提升成长等级
立即登录
登录
注册
登录
注册
首页
专家团队
智能助手
精选案例
新闻资讯
云市场
微信扫码
复制链接
新浪微博
分享数说
采集到收藏夹
分享到数说
首页
/
SAP 如何实现跨系统取数 SAP读取ORACLE或者SQL server数据库
SAP 如何实现跨系统取数 SAP读取ORACLE或者SQL server数据库
ERP全球顾问云平台
2021-09-29
2532
如何实现SAP跨系统取数 SAP读取ORACLE或者SQL server数据库
创建连接参数
公司在实施SAP后,可能会与其他业务系统进行集成。
这样,就需要不同系统间进行同步数据,下面介绍SAP如何从其他数据库读取数据。
以SQL为例。
第一步:
创建数据库连接参数,键入DBCO(或使用SM30维护表DBCON的内容),进入数据库连接总览界面。
添加一个新的连接参数,输入连接名,DBS是指连接数据库的类型,SQL的为MSS,用户名,需在数据库系统中存在的,密码,连接信息:
MSSQL_SERVER=IP adress MSSQL_DBNAME=dbname OBJECT_SOURCE=dbname;
ABAP编码
然后键入se38,新建一个报表程序。
以下是代码内容。
report ZCMH0026.
*--------------------------------------------------------------------*
*------- DBCO 里的连接信息 -------------------------------*
*--MSSQL_SERVER=10.1.7.7 MSSQL_DBNAME=saptest OBJECT_SOURCE=saptest ------------*
*----连接名称:
YANGTEST ----------------------------------------*
*-----------------------------------------------------------------*
DATA g_conexion LIKE dbcon-con_name VALUE 'YANGTEST'.
DATA: exec_ref TYPE REF TO cx_sy_native_sql_error,
error_text TYPE string.
DATA: g_errorstr(250) TYPE c.
DATA: BEGIN OF WA_TRANS ,
NAME(30) TYPE C,
LIST(30) TYPE C,
END OF WA_TRANS.
DATA: dbcur TYPE CURSOR.
START-OF-SELECTION.
*首先建立数据库连接
PERFORM sub_conndb USING g_conexion.
PERFORM getdata.
"PERFORM updatedata.
"PERFORM INSERTDATA.
END-OF-SELECTION.
FORM sub_conndb USING conn LIKE dbcon-con_name.
CLEAR g_errorstr.
g_conexion = conn.
TRY.
"-- 连接SQL SERVER
EXEC SQL.
CONNECT TO :G_CONEXION
ENDEXEC.
EXEC SQL.
SET CONNECTION :G_CONEXION
ENDEXEC.
CATCH cx_sy_native_sql_error INTO exec_ref.
CONCATENATE '无法连接至SQL数据库 连接名:' g_conexion INTO g_errorstr.
ENDTRY.
ENDFORM.
"-- 获取 SQL SERVER 里的表数据 方法一
FORM getdata.
*-- 表 TABLE_2 是SQL 数据库 saptest 里存在的表
TRY.
EXEC SQL.
OPEN dbcur FOR SELECT * FROM TABLE_2
ENDEXEC.
WRITE:/ 'NAME' , 'LIST'.
DO.
EXEC SQL.
FETCH NEXT dbcur INTO :wa_trans.
ENDEXEC.
IF sy-subrc <> 0.
EXIT.
ELSE.
WRITE:/ WA_TRANS-NAME , WA_TRANS-LIST.
ENDIF.
ENDDO.
EXEC SQL.
CLOSE dbcur
ENDEXEC.
CATCH cx_sy_native_sql_error INTO exec_ref.
g_errorstr = exec_ref->get_text( ).
CONCATENATE '读取数据出错,' g_errorstr INTO g_errorstr.
WRITE:/ g_errorstr.
ENDTRY.
ENDFORM.
"-- 获取 SQL SERVER 里的表数据 方法二 :
不使用游标
FORM getdata2.
TRY.
EXEC SQL PERFORMING LOOP_OUTPUT.
SELECT *
INTO :WA_TRANS
FROM TABLE_2
ENDEXEC.
CATCH cx_sy_native_sql_error INTO exec_ref.
g_errorstr = exec_ref->get_text( ).
CONCATENATE '读取数据出错,' g_errorstr INTO g_errorstr.
WRITE:/ g_errorstr.
ENDTRY.
ENDFORM.
FORM LOOP_OUTPUT.
WRITE :/ WA_TRANS-NAME,' ',WA_TRANS-LIST.
ENDFORM.
FORM updatedata.
TRY.
EXEC SQL .
update TABLE_2 set list = 11 where name = 1
ENDEXEC.
CATCH cx_sy_native_sql_error INTO exec_ref.
g_errorstr = exec_ref->get_text( ).
CONCATENATE '更新数据出错,' g_errorstr INTO g_errorstr.
WRITE:/ g_errorstr.
ENDTRY.
PERFORM getdata2.
ENDFORM.
FORM INSERTDATA.
TRY.
EXEC SQL .
insert TABLE_2(name,list) values(5,55)
ENDEXEC.
CATCH cx_sy_native_sql_error INTO exec_ref.
g_errorstr = exec_ref->get_text( ).
CONCATENATE '插入数据出错,' g_errorstr INTO g_errorstr.
WRITE:/ g_errorstr.
ENDTRY.
PERFORM getdata2.
ENDFORM.
声明:感谢SAP道长分享的文章,若侵权联系删除,欢迎阅读原文!
oracle
sql server
文章转载自
ERP全球顾问云平台
,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
领墨值
有奖问卷
意见反馈
客服小墨