Skip to Content
avatar image
Former Member

SBO_sp_TransactionNotification problems....

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

Add comment
10|10000 characters needed characters exceeded

  • Follow
  • Get RSS Feed

1 Answer

  • avatar image
    Former Member
    Feb 04, 2004 at 12:05 PM

    I can see you are working with only one record.

    you don't need to use the Recordset in this case.

    use the GetByKey method of the business object with the card code as the key.

    Add comment
    10|10000 characters needed characters exceeded