本文共 1916 字,大约阅读时间需要 6 分钟。
PI/PO集成方式很多,但是有趣的灵魂不多,现在介绍一个直接用abap调用外部数据库的特殊方法
提示:以下是本篇文章正文内容,下面案例可供参考
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) ) )
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 c1ENDEXEC.* 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 .
项目中尝试过使用场景如下:
(1)报表核对,PI建立了接口,为了检查是否漏数据,我们做了数据核对报表,直接调用数据库校验pi运算后的结果 (2)BW实现即时数据抽取和展示,打包成函数供bw使用今天做bw即时数据抽取需求用到,分享给大家。
转载地址:http://bvcii.baihongyu.com/