ABAP 调用 DLL文件
Dll文件是WINDOWS的动态链接库, 一个DLL文件就是许多函数的集合, 每个函数可以实现各种功能.
有时外部程序调用SAP 的RFC, 实现与SAP程序的接口, 是以外部程序为主; 现在终于找到以SAP程序为主调用外部程序的方法了. 就是SAP 的ABAP语言调用DLL文件中的函数实现一些功能, 例如可以用DLL文件连接外部数据库读取数据.
在网上找了好久,都没有一个完整的答案, 也没有一个完整的实例, 根据网上的各种说法, 整合到一起, 终于成功, 原来这么简单
网上有个SAP 调用JAVA 程序的方法, 但是还要在SAP中用SM59 配置什么东东,很麻烦. 一:创建DLL文件
启动VB6.0开发工具,创建ActiveX.DLL工程
在类模块中写function
'写一个函数.输入参数,返回参数加100 后的值Public Function AbapCallVbDll(ByVal n As Integer) As Long
AbapCallVbDll = n + 100
End Function
'写一个函数.输入参数,返回参数加100 后的值, 并消息框提示
Public Function VbMsg(ByVal n As Integer) As Long
VbMsg = n + 100
MsgBoxVbMsg
End Function
'写一个函数.输入数据库文件名,和查询条件,返回查询到的结果
Public Function ReadDbData(ByValDataFileName As String, ByVal key As String) As String Dim ADO As New ADODB.Connection
Dim FPQMRST As New ADODB.Recordset
ADO.ConnectionString = " Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" &DataFileName& ";Persist Security Info=False;"
If ADO.State = 0 Then ADO.Open
FPQMRST.Open "SELECT * FROM FPUSER WHERE 类别= '" & key & "'", ADO, adOpenKeyset, adLockPessimistic, adCmdText
ReadDbData = FPQMRST.Fields("签名")
End Function
生成DLL文件
注册DLL 文件
把生成的DLL文件复制到C:\windows\sysrem32下, 然后运行regsvr32 vbDllTest2.dll .需要有管理员权限
二.ABAP程序调用DLL文件
SE38新建程序后, 代码如下:
REPORT ZABAP_CALL_DLL.
INCLUDE OLE2INCL.
DATA Win32 TYPE OLE2_OBJECT.
DATA ret TYPE i.
data restr type string.
CREATE OBJECT Win32 'MyVbDllTest.VbDllTest'.
CALL METHOD OF Win32 'AbapCallVbDll' = RET
EXPORTING
#1 = 350. "调用DLL中的function AbapCallVbDll输入参数 350
write ret.
CALL METHOD OF Win32 'VbMsg' = RET
EXPORTING
#1 = 1000. "调用DLL中的显示消息的function VbMsg输入参数 1000
write ret.
"调用DLL中读取数据库的function ReadDbData输入参数数据库路径和文件名, 和一个查询条件
CALL METHOD OF Win32 'ReadDbData' = reStr
EXPORTING
#1 = 'C:\DBDATA\system1.mdb'
#2 = '收款人'.
write restr.
free win32.
运行效果: