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 LOGGER.Debug("", False) LOGGER.Debug("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") LOGGER.Debug("SAP Connectionstring: " & SAPConnectionString, False) con.Open(SAPConnectionString) SAP_CONNECTION.Open(SAPConnectionString) LOGGER.Debug("SAP-Connection created!", False) LOGGER.Debug("", False) Return True Catch ex As Exception MsgBox("Error in SAP ConnectionInit: " & ex.Message, MsgBoxStyle.Critical) LOGGER.Warn("Error in SAP ConnectionInit: " & ex.Message) 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 LOGGER.Debug("Get data from FuBa-Function", False) Dim func As RFCFunction Try func = SAP_CONNECTION.CreateFunction(FuBaName) LOGGER.Debug("func.Execute", False) func.Execute() LOGGER.Debug("function was executed", False) Catch ex As Exception LOGGER.Warn("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 LOGGER.Debug("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 LOGGER.Debug("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 LOGGER.Warn("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 LOGGER.Debug("Define Datatable with SplitCharacter method", False) Dim split() = RowMaskresult.Split(SplitCharacter) If split.Length > 0 Then ColCount = split.Length - 1 CURRENT_COL_COUNT = ColCount LOGGER.Debug("ColCount: " & ColCount.ToString, False) LOGGER.Debug("Split-Results: ", False) For Each s As String In split LOGGER.Debug(" # " & s, False) Next 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 LOGGER.Debug("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 LOGGER.Debug("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 LOGGER.Debug("RowCount FuBa: " & RESULT_TABLE.Rows.Count.ToString, False) Return RESULT_TABLE Else Return Nothing End If Catch ex As Exception LOGGER.Warn("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 LOGGER.Warn("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 LOGGER.Debug("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.WhereClause = where_clause End If table.TableName = tablename If RowLimit <> 0 Then table.RowCount = RowLimit End If LOGGER.Debug(" >>Table.Run executing.....", False) table.Run() LOGGER.Debug(" >>Table.Run executed", False) RESULT_TABLE = table.Result SAP_CONNECTION.Close() Return RESULT_TABLE Catch ex As Exception LOGGER.Warn("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 Public Shared Function LINK_ARC_OBJECT(table As String, barcode As String, contrep As String, docid As String, ardate As String, doctype As String) Try LOGGER.Debug("CREATE_ARC_OBJECT", False) Dim sapfunc As RFCFunction = SAP_CONNECTION.CreateFunction("BAPI_BARCODE_SENDLIST") 'Create and fill the frist row Dim row As RFCStructure = sapfunc.Tables(table).AddRow() row("BARCODE") = barcode row("CONTREP") = contrep row("DOCID") = docid row("ARDATE") = ardate row("DOCTYPE") = doctype ' Execut e the function sapfunc.Execute() ' process return structure Dim ret As RFCStructure = sapfunc.Imports("RETURN").ToStructure() If (ret("TYPE").ToString().Equals("")) Then Console.WriteLine("No error reported") Return "" Else Return ret("MESSAGE") End If Catch ex As Exception LOGGER.Warn("Unexpected Error in SAP Table Result: " & ex.Message, False) MsgBox("Unexpected Error in CREATE_ARC_OBJECT: " & ex.Message, MsgBoxStyle.Critical) Return ex.Message End Try End Function Public Shared Function INSERT_ARCHIVE_OBJECT(ARCHIV_ID As String, ARC_DOC_ID As String, AR_OBJECT As String, OBJECT_ID As String, SAP_OBJECT As String, DOC_TYPE As String, table As String) Try LOGGER.Debug("INSERT_ARCHIVE_OBJECT", False) Dim sapfunc As RFCFunction = SAP_CONNECTION.CreateFunction("ARCHIV_CONNECTION_INSERT") 'Create and fill the frist row 'Dim row As RFCStructure = sapfunc. sapfunc.Exports("ARCHIV_ID").ParamValue = ARCHIV_ID sapfunc.Exports("ARC_DOC_ID").ParamValue = ARC_DOC_ID sapfunc.Exports("AR_OBJECT").ParamValue = AR_OBJECT sapfunc.Exports("OBJECT_ID").ParamValue = OBJECT_ID sapfunc.Exports("SAP_OBJECT").ParamValue = SAP_OBJECT sapfunc.Exports("DOC_TYPE").ParamValue = DOC_TYPE ' row("AR_DATE") = AR_DATE ' Execut e the function Try sapfunc.Execute() Catch ex As Exception MsgBox("Unexpected Error in sapfunc.Execute: " & ex.Message, MsgBoxStyle.Critical) Dim ret As RFCStructure = sapfunc.Imports("RETURN").ToStructure() If (ret("TYPE").ToString().Equals("")) Then Console.WriteLine("No error reported") Return "ERROR in Function Execute" Else Return ret("MESSAGE") End If End Try ' process return structure Return "" Catch ex As Exception LOGGER.Warn("Unexpected Error in INSERT_ARCHIVE_OBJECT: " & ex.Message, False) MsgBox("Unexpected Error in INSERT_ARCHIVE_OBJECT: " & ex.Message, MsgBoxStyle.Critical) Return ex.Message End Try End Function End Class