ich möchte gerne mittels VBA aus SAP mir eine Liste aller Aufträge mit Produkten zu jedem Auftrag in Excel anzeigen lassen.
Bisher habe ich ein Skript vorliegen, mit dem ich mir zu einer Auftragsnummer verschiedene Informationen anzeigen lassen kann:
Sub sap()
Dim oBook As Workbook
Dim oSheet As Worksheet
Dim oBapiCtrl As Object
Dim oBapiLogon As Object
Dim oSalesOrder As Object
Dim oCustomer As Object
Dim oProduct As Object
Dim oItem As Object
Dim iIndex As Integer
Set oBook = Application.ActiveWorkbook
Set oSheet = oBook.Worksheets(1)
Set oBapiCtrl = CreateObject("sap.bapi.1")
Set oBapiLogon = CreateObject("sap.logoncontrol.1")
oBapiCtrl.Connection = oBapiLogon.NewConnection
oBapiCtrl.Connection.hostname = "atvies9910zx"
oBapiCtrl.Connection.System = "SEP"
oBapiCtrl.Connection.Client = "100"
oBapiCtrl.Connection.User = oSheet.Cells(2, 3)
oBapiCtrl.Connection.Password = oSheet.Cells(3, 3)
oBapiCtrl.Connection.Language = "DE"
oBapiCtrl.Connection.SystemNumber = "56"
If oBapiCtrl.Connection.Logon(0, True) True Then
MsgBox "User or Password incorrect", vbInformation, "SAP Logon"
Exit Sub
End If
If oBapiCtrl.Connection.IsConnected Then
Set oSalesOrder = oBapiCtrl.GetSAPObject("SalesOrder", oSheet.Cells(2, 5))
oSheet.Cells(6, 2).Value = "Sales Document"
oSheet.Cells(6, 3).Value = "Net Value"
oSheet.Cells(6, 4).Value = "Customer Number"
oSheet.Cells(6, 5).Value = "Document Date"
oSheet.Cells(6, 6).Value = "Number of Items"
oSheet.Cells(6, 7).Value = "Division"
oSheet.Cells(7, 2).Value = oSalesOrder.Getlist.salesdocument
oSheet.Cells(7, 3).Value = oSalesOrder.netvalue
oSheet.Cells(7, 4).Value = oSalesOrder.orderingparty.customerno
oSheet.Cells(7, 5).Value = oSalesOrder.documentdate
oSheet.Cells(7, 6).Value = oSalesOrder.items.Count
oSheet.Cells(7, 7).Value = oSalesOrder.Division
End If
iIndex = 10
oSheet.Cells(9, 2).Value = "Order No"
oSheet.Cells(9, 3).Value = "Item No"
oSheet.Cells(9, 4).Value = "Product Code"
oSheet.Cells(9, 5).Value = "Product Description"
oSheet.Cells(9, 6).Value = "Selling Quantity"
oSheet.Cells(9, 7).Value = "Selling UoM"
For Each oItem In oSalesOrder.items
oSheet.Cells(iIndex, 2).Value = oItem.SalesDocumentno
oSheet.Cells(iIndex, 3).Value = oItem.itemNo
oSheet.Cells(iIndex, 4).Value = oItem.material.material
oSheet.Cells(iIndex, 5).Value = oItem.material.materialdescription
oSheet.Cells(iIndex, 6).Value = oItem.targetquantity
oSheet.Cells(iIndex, 7).Value = oItem.targetquantityunit
iIndex = iIndex + 1
Next
Set oBapiLogon = Nothing
Set oBapiCtrl = Nothing
End Sub
Ich bin ein ziemlicher Anfänger in VBA-Programmierung und habe dieses Skript auch nur mithilfe etlicher Foren zusammenstellen können.Könnt ihr mir helfen und erklären, wie ich die Funktion SalesOrder.GetList mit einbaue, um das oben Geforderte zu erreichen?
Viele Grüße,
Joey