在ABAP中如何使用native sql连接外部数据库?求解

发布网友 发布时间:2022-04-21 07:29

我来回答

2个回答

懂视网 时间:2022-04-07 22:29

 1.工作环境需求

    A. The operating system user <sid>adm must be able to log on to the secondary database.

    B. The R/3 table DBCON must be maintained.

    C. The correct database library ‘dboraslib.<ext>‘ must exist in the kernel directory. 
Connect  to SQL Server database Prerequisite: At least one Windows application server must be available on the R/3 system and the DBSL dynamic library (DLL) dbmssslib.dll must be installed on this server. This dll can be downloaded from the SAP Service Marketplace.

dbmssslib.dll

2. 配置连接信息

配置TCODE: dbco

任何配置信息都存储在DBCON表中.

配置示例:

A.访问MSSQL的配置示例(参见SAP Notes 1749)

CON_NAME: <my_conn_name>
DBMS: MSS
USER_NAME: <db_user>
PASSWORD:  <password>
CON_ENV: MSSQL_SERVER=<server_name> MSSQL_DBNAME=<db_name>

   db_user could be sapr3 for example if the server is running R/3.  The password field may be blocked from view by asterisks in sm30. USER_NAME can be left blank in order to use integrated security (4.6d kernel and later).  In that case make sure that the OS User running R/3 has the required privilege on the remote server.  A dummy password must be entered in sm30, it will not be used when the user name is blank.
Specifying the server name

           The server name is simply the name of the SQL Server or named instance i.e. the hostname (for a default instance), or <host>/<instname>
Starting with release 6.40 however there are some special considerations that should be taken into account.  When running with kernel release 6.40 or later, the R/3 system will prepend a protocol specifier to the server name.  Example:
   1. For a server running on the same server:
            np:<servername>
  2. For a remote server:
            tcp:<servername>
This forces the connection to be made with a named pipes and tcp/ip protocols respectively.
When specifying the server name you can override this by setting your own protocol (tcp: or np:), or you can make R/3 avoid setting any prefix by using simply :<servername> - a colon in front of the server name.

B.访问ORACLE的配置示例()

   Connection name        logical name of the connection

     DBMS                   ORA

     User name              Oracle users

     DB password            password for the above-mentioned Oracle user

     Conn.info              TNS alias

     Permanent              Usually should not be set for a secondary connection.

 

3.       程序中如何使用

例程一
report zdbcon .
data: dbn(128).
EXEC SQL.
CONNECT TO ‘DAN1‘
ENDEXEC.
EXEC SQL.
SET CONNECTION ‘DAN1‘
ENDEXEC.
EXEC SQL.
SELECT db_name() INTO :DBN FROM SVERS
ENDEXEC.
write: / ‘current database name‘, dbn. 
DAN1在DBCON表中配置
CON NAME DAN1 
DBMS MSS 
USER NAME iis_log 
PASSWORD CON ENV 
MSSQL_SERVER=tcp:###.###.###.### MSSQL_DBNAME=iislog 


例程二
Here is an example for how to connect to another server with CON_NAME=BSK.  The example assumes BSK is running R/3:

 EXEC SQL.
  CONNECT TO ‘BSK‘
ENDEXEC.
EXEC SQL.
  SET CONNECTION ‘BSK‘
ENDEXEC.
EXEC SQL.
  SELECT db_name() INTO :DBN FROM SVERS
ENDEXEC.
WRITE: / ‘current database name‘, DBN.
EXEC SQL.
  SET CONNECTION DEFAULT
ENDEXEC.
EXEC SQL.
  SELECT db_name() INTO :DBN FROM SVERS
ENDEXEC.
WRITE: / ‘current database name‘, DBN. 

abap直连第三方数据库(sqlserver,oracle)

标签:abap直连第三方数据库sqlserve   oracle   abap 直连第三方数据库   abap 操作第三方数据库表   

热心网友 时间:2022-04-07 19:37

nt系统,后台数据库是oracle,访问外部数据比较容易,需要在sap网站上下载关于数据库的dll文 件,放到它制定的目录下,然后就可以做数据库连接了,然后就可用natvie sql了。 至于linux系统+后台是oracle,访问外部数据库现在我还没有在sap的网站上找到直接访问外部 sql server的直接方法。 ABAP可以通过OLE来实现对外部SQL的访问,但是可惜的是,只能前台运行,不能跑后台。不知 道哪位有跑后台的例子。通过DBCO配置DBCON表,然后在ABAP里面写native SQL来实现数据库连接 可以跑后台吗?在这里看到几个好帖,是介绍通过配置DBCON表的,但是现状是UNIX+ORACLE的后 台数据库,第一步,非要在服务器段做ORACLE和外部SQL的连接之后,才能配置DBCON,然后再调 用本地SQL吗?这个问题瞒烦的。能不能直接配一下DBCON,然后调用native SQL就OK了?!

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com