From 1530b63838da0f60796b258324e7b8aea87539fb Mon Sep 17 00:00:00 2001 From: SchreiberM Date: Tue, 17 May 2016 14:05:59 +0200 Subject: [PATCH] MS --- app/DD-Record-Organiser/ClassSAP.vb | 132 ++++++++++++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 app/DD-Record-Organiser/ClassSAP.vb diff --git a/app/DD-Record-Organiser/ClassSAP.vb b/app/DD-Record-Organiser/ClassSAP.vb new file mode 100644 index 0000000..9d4749d --- /dev/null +++ b/app/DD-Record-Organiser/ClassSAP.vb @@ -0,0 +1,132 @@ +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