Search code examples
vbavisual-studio-2010sap-erpsaprfcbapi

SAP BAPI get all Functional Locations


I am trying to pull a list of every Functional Location out of SAP ERP using BAPI. When I run this code it returns with an empty table. I don't have very much experience with BAPI and I am trying to teach myself. Can someone please help with what I'm missing to make this work.

Thanks.

See code below:

Dim sapFunc As New SAPFunctionsOCX.SAPFunctions
    Dim objServer = sapFunc.Connection
    objServer.Client = "101"
    objServer.User = "MyUserName"
    objServer.Ticket = "MyKey"
    objServer.system = "PEC"
    objServer.MessageServer = "MyMessagerServer"
    objServer.GroupName = "PUBLIC"
    If objServer.logon(0, True) <> True Then
        MsgBox("Key Rejected")
        Exit Sub
    End If


    Dim objRfcFunc As SAPFunctionsOCX.Function
    objRfcFunc = sapFunc.Add("BAPI_FUNCLOC_GETLIST")
    'System.Console.Write(objRfcFunc.Description)

    If objRfcFunc.Call = False Then
        MsgBox("Error occured - " & objRfcFunc.Exception)
        Exit Sub
    End If

    Dim tab = objRfcFunc.Tables("FUNCLOC_LIST")
    System.Console.WriteLine("Input start:")
    For I = 1 To tab.RowCount
        For j = 1 To tab.ColumnCount
            System.Console.Write(tab.ColumnName(j) + ":")
            System.Console.WriteLine(tab.Cell(I, j))
        Next
    Next
    System.Console.WriteLine("Input end.")

Solution

  • I don't intend for this to be an answer, but if it helps then that's good. If it doesn't, I'll delete it.

    With objRfcFunc.tables("funcloc_ra")
        If .RowCount < 1 Then .Rows.Add
        .cell(1, 1) = "I"
        .cell(1, 2) = "EQ"
        .cell(1, 3) = "Your Func Loc"
    End With
    

    Do this after setting objRfcFunc and before calling it. The call will use these parameters.

    I means to Include, EQ means you want to find items equal to the value in low.