cancel
Showing results for 
Search instead for 
Did you mean: 

SAP- Connect to SAP from using .net connectors - error calling SAP query

user123567
Discoverer
0 Kudos

getting below error when calling below code:

    destination FSD failed when calling RFC_METADATA_GET’

    ‘Exception thrown: 'SAP.Middleware.Connector.RfcCommunicationException' in sapnco.dll

    ----------------------------------------

    Private Shared Function Invoke(ByVal destination As RfcDestination, ByVal table As String, ByVal fields As List(Of SAPFieldItem), ByVal options As List(Of SAPFieldItem))

    Try

    '04052022

    Dim func As IRfcFunction = destination.Repository.CreateFunction("RFC_GET_CUST") ' QUE_DOTNET__01 'RFC_GET_CUST

    'set fields

    If fields IsNot Nothing Then

    Dim fs As IRfcTable = func.GetTable("FIELDS")

    For i As Integer = 0 To fields.Count - 1

    fs.Append()

    fs.CurrentIndex = i

    fs.SetValue("FIELDNAME", fields(i).FieldId)

    Next

    End If

    'set options

    If options IsNot Nothing Then

    Dim opts As IRfcTable = func.GetTable("OPTIONS")

    For i As Integer = 0 To options.Count - 1

    opts.Append()

    opts.CurrentIndex = i

    opts.SetValue("TEXT", If(i > 0, " AND ", "") + options(i).makeWhere)

    Next

    End If

    func.SetValue("QUERY_TABLE", SAPFieldItem.escape(table))

    func.Invoke(destination)

    Dim result As New List(Of Dictionary(Of String, String))

    Dim index As Integer = 0

    Dim struct As IRfcTable = func.GetTable("FIELDS")

    Dim columns As New Dictionary(Of String, Integer)

    For i As Integer = 0 To struct.Count - 1

    struct.CurrentIndex = i

    columns.Add(struct.GetString("FIELDNAME"), struct.GetInt("LENGTH"))

    Next

    Dim data As IRfcTable = func.GetTable("DATA")

    For i As Long = 0 To data.Count - 1

    data.CurrentIndex = i

    Dim line = data.GetString("WA")

    Dim row As New Dictionary(Of String, String)

    Dim position As Integer = 0

    For Each c In columns

    If position + c.Value <= line.Length Then

    row.Add(c.Key, line.Substring(position, c.Value).Trim)

    ElseIf position <= line.Length Then

    row.Add(c.Key, line.Substring(position).Trim)

    Else

    row.Add(c.Key, String.Empty)

    End If

    position += c.Value

    Next

    result.Add(row)

    Next

    Return result

    Catch ex As Exception

    Console.WriteLine(ex.Message)

    End Try

    End Function"

    Accepted Solutions (0)

    Answers (1)

    Answers (1)

    user123567
    Discoverer
    0 Kudos

    i am using sapnco.dll and sapnco_utils.dll libraries V 3.0.2.0