SAP接口集成-abap调用外部数据库


前言

PI/PO集成方式很多,但是有趣的灵魂不多,现在介绍一个直接用abap调用外部数据库的特殊方法


提示:以下是本篇文章正文内容,下面案例可供参考

一、SAP配置外部数据源

DBCO建立数据源(如果连接不上可能还是需要人家basis帮忙看看)
在这里插入图片描述
在这里插入图片描述
连接字符:MSSQL_SERVER=IP MSSQL_DBNAME=db_name OBJECT_SOURCE=实例

如果是oracle还是需要设置参数:AL11—— /usr/sap/DEV/SYS/profile/oracle/tnsnames.ora

BOPRD =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = ****->服务器IP)(PORT = 1521->端口)) 
    )
   (CONNECT_DATA =
      (SID = orcl)
      (SERVER = ***->服务器IP)
       (SERVICE_NAME = orcl)
    )
  )

二、使用步骤

1.新建测试程序

se38

*&---------------------------------------------------------------------*
*& Report ZTEST_DBCO
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZTEST_DBCO.
"dbco配置好p_connr为连接名
DATA: p_connr TYPE dbcon-con_name  VALUE 'dbconame'.
data :l_field1 TYPE char30,l_field2 TYPE CHAR30 ,l_field3 TYPE CHAR30 . 

TRY.
    " 1.打开连接
    EXEC SQL.
      CONNECT TO :p_connr
    ENDEXEC.
    IF sy-subrc <> 0.
      RAISE EXCEPTION TYPE cx_sy_native_sql_error.
    ELSE.
      MESSAGE '连接成功' TYPE 'S'.
    ENDIF.   
    EXEC SQL.
      SET CONNECTION :p_connr
    ENDEXEC.
   "2.执行sql脚本,使用native sql 
   EXEC SQL .
      OPEN  C1 FOR  SELECT ProductId , StoreId , StoreCode
      FROM T_Product
      WHERE StoreCode ='A010122'
   ENDEXEC.
   "3.读取游标数据
   DO.  "读取游标 ":t001-mandt, :t001-bukrs
   EXEC SQL.
     FETCH NEXT C1 INTO l_field1,:l_field2 ,:l_field3
   ENDEXEC.
  IF sy-subrc <> 0.
    EXIT.
  ELSE.
    WRITE: / l_field1,l_field2 ,l_field3    . "写到界面
  ENDIF.
ENDDO.
"使用完关闭游标
EXEC SQL.
  CLOSE c1
ENDEXEC.

* 4.最后关闭连接
    EXEC SQL.
      DISCONNECT :p_connr
    ENDEXEC.
  CATCH cx_sy_native_sql_error.
    MESSAGE `Error in Native SQL.` TYPE 'E'.
ENDTRY.

FORM loop_output.
  WRITE: / l_field1,l_field2 ,l_field3.
ENDFORM .

2.使用场景介绍

项目中尝试过使用场景如下:
(1)报表核对,PI建立了接口,为了检查是否漏数据,我们做了数据核对报表,直接调用数据库校验pi运算后的结果
(2)BW实现即时数据抽取和展示,打包成函数供bw使用

总结

今天做bw即时数据抽取需求用到,分享给大家。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小猿的hello World

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值