This commit is contained in:
SchreiberM
2016-05-17 14:05:59 +02:00
parent 621a6cd469
commit 1530b63838

View File

@@ -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