Imports ERPConnect Public Class ClassSAP Public Shared SAPConnectionString Public Shared SAP_CONNECTION As New R3Connection() 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(" >> SAP Connectionstring: " & SAPConnectionString, False) con.Open(SAPConnectionString) SAP_CONNECTION.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 MsgBox("Error in SAP ConnectionInit: " & ex.Message, MsgBoxStyle.Critical) 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 RESULT_TABLE As DataTable = New DataTable If LogErrorsOnly = False Then ClassLogger.Add(" >> Get data from FuBa-Function", False) Dim func As RFCFunction Try func = SAP_CONNECTION.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) SAP_CONNECTION.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) SAP_CONNECTION.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 Public Shared Function Return_Datatable_for_Table(tablename As String, where_clause As String, Optional RowLimit As Integer = 0) Try Dim RESULT_TABLE As DataTable = New DataTable If LogErrorsOnly = False Then ClassLogger.Add(" >> Get data from SAP Table", False) Dim table As New ERPConnect.Utils.ReadTable(SAP_CONNECTION) 'Dim cWhereClause = "SAP_OBJECT EQ '' AND AR_DATE GE ''" 'Dim sSearchDate1 = "20160101" 'cWhereClause = Replace(cWhereClause, "", Objekttyp.Text) 'cWhereClause = Replace(cWhereClause, "", sSearchDate1) If where_clause <> "" Then table.AddCriteria(where_clause) End If table.TableName = tablename If RowLimit <> 0 Then table.RowCount = RowLimit End If If LogErrorsOnly = False Then ClassLogger.Add(" >>Table.Run executing.....", False) table.Run() If LogErrorsOnly = False Then ClassLogger.Add(" >>Table.Run executed", False) RESULT_TABLE = table.Result SAP_CONNECTION.Close() Return RESULT_TABLE Catch ex As Exception ClassLogger.Add(">> Unexpected Error in SAP Table Result: " & ex.Message, False) MsgBox("Unexpected Error in SAP Table Result: " & ex.Message, MsgBoxStyle.Critical) Return Nothing End Try End Function End Class