02-26-2024 10:24 AM
Hi there!
I am using OS v8.1 and SIC with latest ERPConnectStandard20.dll and the other dlls.
I can connect to SAP and retrieve data using READTABLE.
Now I am trying to use CreateFunction but I am struggling.
In my Smart Integration Function I have this :
Imports System
Imports System.Collections.Generic
Imports System.Data
Imports System.Data.Common
Imports System.Globalization
Imports System.IO
Imports System.Linq
'Added for SAP ERP Connect
Imports Microsoft.VisualBasic
Imports ERPConnect
Imports ERPConnect.Utils
Namespace OneStream.BusinessRule.SmartIntegrationFunction.SAPTest8
Public Class MainClass
Public Shared Function RunOperation() As DataTable
Dim r3Conn = New R3Connection("1.1.1.1", "00", "user", "pass", "EN", "224")
r3Conn.Protocol = ClientProtocol.NWRFC
r3Conn.Open()
Dim r3Func As RFCFunction = r3Conn.CreateFunction("BAPI_MATERIAL_GET_DETAIL")
r3Func.Exports("MATERIAL").ParamValue = "1001"
r3Func.Execute()
Return r3Func.Imports("MATERIAL_GENERAL_DATA").ToTable()
End Function
End Class
End Namespace
And in the Connector BR I have this line :
Dim rDto As RemoteRequestResultDto = BRApi.Utilities.ExecRemoteGatewayBusinessRule(si, remoteBusinessRule, remoteFunctionArguments, sicGatewayName, sicRemoteRuleFunction, String.Empty, False, sicTimeout)
It is not working as the ToADOTable is not working anymore.
Return r3Func.Imports("TOTALS_SPL").ParamValue.ToADOTable()
Can someone help me on this SIF to return the datatable?
And then to make it read by the Connector BR.
Thanks
Solved! Go to Solution.
03-08-2024 02:36 AM
Problem solved. All my code was fine, the mistake was on the client side. It was missing an error an export field! We had to use ABAP debugger to find out.
Thanks guys!
02-27-2024 10:04 AM
Hi @NicolasArgente , how do you know the datatable is not being returned?
Did you try to assign it from the return value:
Dim dataTable as DataTable = rDto.ResultSet
02-28-2024 08:10 AM
Hi Robb! Yes I tried that too. I believe there is a kind of bug with this new way of doing. FYI, I tried to return all the below :
'Return r3Func.Imports("MATERIAL_GENERAL_DATA").ParamValue.ToADOTable()
'Return r3Func.Imports("MATERIAL_GENERAL_DATA").ToTable()
'Return r3Func.Tables.Item("MATERIAL_GENERAL_DATA").ToADOTable()
'Return r3Func.Tables("MATERIAL_GENERAL_DATA").ToADOTable()
On the SAP side, we see the call, but the call is extremely fast. And at the end it returns nothing.
If anyone has ever used CreateFunction on OS v8.0 or 8.1. Please share your code of the SIF.
Thanks
03-08-2024 02:36 AM
Problem solved. All my code was fine, the mistake was on the client side. It was missing an error an export field! We had to use ABAP debugger to find out.
Thanks guys!
04-03-2024 12:32 PM
Hi Nicolas, I have build below code for SIF function. The table can be connected and should have data. But when I using another rule to call SIF function there is no data returned. do you know the reason?
04-03-2024 12:53 PM
@KKGamer It all seems good.
Just for testing, take away the Addfield. And check with the SAP team on their side. Also If they can trace info in the SAP debugger...
04-03-2024 01:04 PM
The ERPConenct code is working in V7 to extract data from same table so i believe it's fine from SAP side. And below is the code I used to call the SIF function, is there anything wrong on return the datatable? Thanks.
Dim rDto As RemoteRequestResultDto = BRApi.Utilities.ExecRemoteGatewayBusinessRule(si, "SAPConnection",Nothing, "sapdevtest", "RunOperation")
If (rDto.RemoteResultStatus = RemoteMessageResultType.Success) Then
BRAPI.ErrorLog.LogMessage(si,"Connect success")
BRApi.ErrorLog.LogMessage(si, "Data Returned: " & rDto.ResultSet.Rows.Count)
Dim dt As DataTable
dt = rDto.ResultSet
Return dt
Else
If (Not (rDto.remoteException Is Nothing)) Then
BRAPI.ErrorLog.LogMessage(si,"Connect failed")
Throw ErrorHandler.LogWrite(si, New XFException(si, rDto.remoteException))
End If
End If