Using the VB example provided with this Stored procedure:
________________________________________________________________________________
Public Function DisplaySBOInfo(ObjectType As Variant, TransactionType As String, _
NumOfColsInKey As Variant, ListOfKeyColsTabDel As String, ListOfColsValTabDel As String) _
As String
On Error GoTo ErrorHandler
Dim sSBOInfo As String
sSBOInfo = "Object Type: " & CStr(ObjectType) & vbTab
sSBOInfo = sSBOInfo & "Transaction Type: " & TransactionType & vbTab
sSBOInfo = sSBOInfo & "Number of Columns in Key: " & CStr(NumOfColsInKey) & vbTab
sSBOInfo = sSBOInfo & "List of Columns: " & ListOfKeyColsTabDel & vbTab
sSBOInfo = sSBOInfo & "Values: " & ListOfColsValTabDel & vbCrLf
WriteToFile (sSBOInfo)
DisplaySBOInfo = sSBOInfo 'return value
ErrorHandler:
sSBOInfo = Err.Description
DisplaySBOInfo = Err.Description
End Function
Private Sub WriteToFile(InfoString)
Dim fso As New FileSystemObject
Dim ts As TextStream
Set ts = fso.OpenTextFile(App.Path & "Log.txt", ForAppending, True)
ts.Write InfoString
ts.Close
Set fso = Nothing
End Sub
_______________________________________________________________________________
The log file is create and the transaction is logged in fine.
The problem is this;
As soon as I call the SAP BO SDK from the dll and retrieve information of say (a business partner update) SAP freezes completely as if the is an infinite loop.
Yet I have no loops in my code.
Here is my code that freezes SAP :
______________________________________________________________________________
Public Function DisplaySBOInfo(ObjectType As Variant, TransactionType As String, _
NumOfColsInKey As Variant, ListOfKeyColsTabDel As String, ListOfColsValTabDel As String) _
As String
On Error GoTo ErrorHandler
Dim oCompany As SAPbobsCOM.Company
Set oCompany = New SAPbobsCOM.Company
Dim BusinessPartners As SAPbobsCOM.BusinessPartners
Dim oRecordSet As SAPbobsCOM.Recordset
oCompany.Server = "SQL_Server"
oCompany.DbPassword = "PassWord"
oCompany.DbUserName = "Admin"
oCompany.CompanyDB = "SBODemo_US"
oCompany.UserName = "manager"
oCompany.Password = "manager"
oCompany.UseTrusted = False
oCompany.Connect
If oCompany.Connected Then
'Getting a new BusinessPartners object
Set BusinessPartners = oCompany.GetBusinessObject(oBusinessPartners)
'// Getting a new Recoset object
Set oRecordSet = oCompany.GetBusinessObject(BoRecordset)
oRecordSet.DoQuery ("Select cardcode from ocrd where cardcode = '" & ListOfColsValTabDel & "'")
'// asigning (linking) the Recordset object
'// to the Browser.Recordset property
BusinessPartners.Browser.Recordset = oRecordSet
Dim sSBOInfo As String
sSBOInfo = "Businesspartner name: " & BusinessPartners.CardName
WriteToFile (sSBOInfo)
DisplaySBOInfo = sSBOInfo 'return value
Else
sSBOInfo = "Not connected"
WriteToFile (sSBOInfo)
DisplaySBOInfo = sSBOInfo 'return value
End If
oCompany.Disconnect
'BusinessPartners.Close
Set oCompany = Nothing
Set oRecordSet = Nothing
Set BusinessPartners = Nothing
ErrorHandler:
sSBOInfo = Err.Description
DisplaySBOInfo = Err.Description
End Sub
Private Sub WriteToFile(InfoString)
Dim fso As New FileSystemObject
Dim ts As TextStream
Set ts = fso.OpenTextFile(App.Path & "Log.txt", ForAppending, True)
ts.Write InfoString
ts.Close
End Sub
________________________________________________________________________________
I think by retrieving information from the SDK it might be triggering something that calls SBO_sp_TransactionNotification and calls my dll. Which would cause an infinite loop?
I?m completely at a loss for ideas?
Denis