有时外部程序调用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 MsgBox VbMsg End Function
'写一个函数.输入数据库文件名,和查询条件,返回查询到的结果
Public Function ReadDbData(ByVal DataFileName 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 & \"'\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.
运行效果:
因篇幅问题不能全部显示,请点此查看更多更全内容