Imports ERPConnect Public Class ClassSAP Private Shared SAPConnectionString Public Shared Function ConnectionInit(Host As String, SysNumber As String, Username As String, PW As String, Client As String, Lang As String) Try If LogErrorsOnly = False Then ClassLogger.Add("", False) If LogErrorsOnly = False Then ClassLogger.Add(">> SAP Connect started:", False) SAPConnectionString = String.Format("USER={0} LANG={1} CLIENT={2} SYSNR={3} ASHOST={4} PASSWD={5}", Username, Lang, Client, SysNumber, Host, PW) Dim con As New R3Connection() ERPConnect.LIC.SetLic("W86DWC992C") If LogErrorsOnly = False Then ClassLogger.Add(">> " & SAPConnectionString, False) con.Open(SAPConnectionString) If LogErrorsOnly = False Then ClassLogger.Add(">> SAP-Connection created!", False) If LogErrorsOnly = False Then ClassLogger.Add("", False) Return True Catch ex As Exception ClassLogger.Add("Error in SAP ConnectionInit: " & ex.Message, True) Return False End Try End Function Public Shared Function FuBa_Returndatatable_Seperated(FuBaName As String, SplitCharacter As String, Optional RowLimit As Integer = 0) Try Dim SAPCon As New R3Connection() SAPCon.Open(SAPConnectionString) Dim RESULT_TABLE As DataTable = New DataTable If LogErrorsOnly = False Then ClassLogger.Add(" >> Get data from FuBa-Function", False) Dim func As RFCFunction Try func = SAPCon.CreateFunction(FuBaName) If LogErrorsOnly = False Then ClassLogger.Add(" >> func.Execute", False) func.Execute() If LogErrorsOnly = False Then ClassLogger.Add(" >> function was executed", False) Catch ex As Exception ClassLogger.Add(">> Unexpected Error in Create SAP Function: " & ex.Message, False) MsgBox("Error in Create SAP Function: " & ex.Message, MsgBoxStyle.Critical) Return Nothing End Try Dim FUNCT_ROW_COUNT As Integer = 1 Dim RowMaskresult As String = "" Try If LogErrorsOnly = False Then ClassLogger.Add(" >> Checking FunctionExecute", False) 'Den ersten Wert ausgeben lassen um die Spalten zu splitten For Each row As RFCStructure In func.Tables("T_INDEX").Rows Try If row.Item(1).ToString.Contains(SplitCharacter) Then RowMaskresult = row.Item(1).ToString If LogErrorsOnly = False Then ClassLogger.Add(" >> RowMask result: " & RowMaskresult, False) FUNCT_ROW_COUNT = 2 End If Catch ex As Exception RowMaskresult = "ErrorInGetSeperatedResult: " & ex.Message End Try If FUNCT_ROW_COUNT = 2 Then Exit For Next Catch ex As Exception ClassLogger.Add(">> Unexpected Error in Checking FunctionExecute: " & ex.Message, False) MsgBox("Error in Checking FunctionExecute: " & ex.Message, MsgBoxStyle.Critical) SAPCon.Close() Return Nothing End Try FUNCT_ROW_COUNT = 1 Dim ColCount As Integer If SplitCharacter <> "" And RowMaskresult.Contains(SplitCharacter) Then Try If LogErrorsOnly = False Then ClassLogger.Add(" >> Define Datatable with SplitCharacter method", False) Dim split() = RowMaskresult.Split(SplitCharacter) If split.Length > 0 Then ColCount = split.Length - 1 CURRENT_COL_COUNT = ColCount If LogErrorsOnly = False Then ClassLogger.Add(" >> ColCount: " & ColCount.ToString, False) ClassLogger.Add(" >> Split-Results: ", False) For Each s As String In split ClassLogger.Add(" # " & s, False) Next End If For x = 0 To ColCount ' Declare DataColumn and DataRow variables. Dim column As DataColumn column = New DataColumn() column = New DataColumn() column.DataType = Type.GetType("System.String") column.ColumnName = "Column " & x.ToString RESULT_TABLE.Columns.Add(column) Next If LogErrorsOnly = False Then ClassLogger.Add(" >> Datatable Columns after Split created", False) ' Create new DataRow objects and add to DataTable. 'Jetzt die Zeilen der Function durchlaufen For Each row As RFCStructure In func.Tables("T_INDEX").Rows Dim new_row As DataRow If RowLimit <> 0 Then If RowLimit = FUNCT_ROW_COUNT Then If LogErrorsOnly = False Then ClassLogger.Add(" >> RowCount limited to" & RowLimit.ToString & " rows. Exit SAP Function", False) Exit For End If End If new_row = RESULT_TABLE.NewRow() Dim Rowresult As String = row.Item(1).ToString If Rowresult.Contains(SplitCharacter) Then Dim RowSplit() = Rowresult.Split(SplitCharacter) Dim col_index = 0 'Jetzt die Spaltenwerte in die NewRow eintragen For x = 0 To ColCount new_row(x) = RowSplit(x) Next FUNCT_ROW_COUNT += 1 RESULT_TABLE.Rows.Add(new_row) End If Next If LogErrorsOnly = False Then ClassLogger.Add(" >> RowCount FuBa: " & RESULT_TABLE.Rows.Count.ToString, False) Return RESULT_TABLE Else Return Nothing End If Catch ex As Exception ClassLogger.Add(">> Unexpected Error in Create Datatable with split-method: " & ex.Message, False) MsgBox("Unexpected Error in Create Datatable with split-method: " & ex.Message, MsgBoxStyle.Critical) SAPCon.Close() Return Nothing End Try Else Return Nothing End If Catch ex As Exception ClassLogger.Add(">> Unexpected Error in Function FuBa_ReturnDatatable Seperated: " & ex.Message, False) MsgBox("Unexpected Error in Function FuBa_ReturnDatatable Seperated: " & ex.Message, MsgBoxStyle.Critical) Return Nothing End Try End Function End Class