Hallo zusammen,
ich benötige Hilfe bzgl. Datenupload einer Excel-Tabelle nach SAP:
Ich update momentan Lieferantenstammdaten und führe den Upload aus einer Excel Tabelle nach SAP durch.
ist es möglich, das beim einem leeren Feld z. B. beim Feld Steuernummer, der in SAP event. vorhandene Wert nicht mit Blank überschrieben wird. Der Script soll nur dann Daten ins SAP übertragen, wenn Zellen gefüllt sind.
Mein Script:
Sub SAPScript()
If Not IsObject(SAP_applic) Then
Set SapGuiAuto = GetObject("SAPGUI")
Set SAP_applic = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(session) Then
On Error GoTo errHandler
Set Connection = SAP_applic.Children(0)
End If
If Not IsObject(session) Then
Set session = Connection.Children(0)
End If
Rem ADDED BY EXCEL *************************************
Dim objExcel
Dim objSheet, intRow, i
Set objExcel = GetObject(, "Excel.Application")
Set objSheet = objExcel.Workbooks("Kreditor_SMTP_Steuernummer_Umsatzsteueridentnummer.xlsm").Worksheets("Kreditor")
For i = 2 To objSheet.UsedRange.SpecialCells(xlCellTypeVisible).Rows.Count
Kreditor = Trim(CStr(objSheet.Cells(i, 1).Value)) 'Column1
Name = Trim(CStr(objSheet.Cells(i, 2).Value)) 'Column2
SMTP = Trim(CStr(objSheet.Cells(i, 3).Value)) 'Column3
Steuernummer = Trim(CStr(objSheet.Cells(i, 4).Value)) 'Column4
Umsatzsteueridentnummer = Trim(CStr(objSheet.Cells(i, 5).Value)) 'Column5
Check = Trim(CStr(objSheet.Cells(i, 6).Value)) 'Column6
Rem ADDED BY EXCEL *************************************
'On Error Resume Next
session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[0]/okcd").Text = "/NMK02"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/chkRF02K-D0110").Selected = True
session.findById("wnd[0]/usr/chkRF02K-D0120").Selected = True
session.findById("wnd[0]/usr/chkRF02K-D0310").Selected = False
session.findById("wnd[0]/usr/chkWRF02K-D0320").Selected = False
session.findById("wnd[0]/usr/ctxtRF02K-LIFNR").Text = Kreditor
session.findById("wnd[0]/usr/ctxtRF02K-EKORG").Text = "5001"
session.findById("wnd[0]/tbar[0]/btn[0]").press
session.findById("wnd[0]/usr/subADDRESS:SAPLSZA1:0300/subCOUNTRY_SCREEN:SAPLSZA1:0301/txtSZA1_D0100-SMTP_ADDR").Text = SMTP
session.findById("wnd[0]/usr/subADDRESS:SAPLSZA1:0300/subCOUNTRY_SCREEN:SAPLSZA1:0301/txtSZA1_D0100-SMTP_ADDR").SetFocus
session.findById("wnd[0]/usr/subADDRESS:SAPLSZA1:0300/subCOUNTRY_SCREEN:SAPLSZA1:0301/txtSZA1_D0100-SMTP_ADDR").caretPosition = 22
'session.findById("wnd[0]/usr/subADDRESS:SAPLSZA1:0300/subCOUNTRY_SCREEN:SAPLSZA1:0301/txtSZA1_D0100-SMTP_ADDR").caretPosition = 18
session.findById("wnd[0]/tbar[1]/btn[8]").press
session.findById("wnd[0]/usr/txtLFA1-STCEG").Text = Umsatzsteueridentnummer
session.findById("wnd[0]/usr/txtLFA1-STENR").Text = Steuernummer
session.findById("wnd[0]/usr/txtLFA1-STCEG").SetFocus
session.findById("wnd[0]/usr/txtLFA1-STCEG").caretPosition = 11
session.findById("wnd[0]/tbar[0]/btn[11]").press
Set SAPsession = Nothing
Set SAPconnection = Nothing
Set SapGuiAuto = Nothing
'Here follows the rest of the VBScript.
If Err.Number <> 0 Then
'The Excel worksheet has e.g. 3 columns of data and an error column.
ActiveSheet.Cells(i, 6).Value = "Here is an error."
Else
ActiveSheet.Cells(i, 6).Value = "O.K."
End If
On Error GoTo 0
Rem FINALIZATION CONTROL CHECK ************************
aux = Kreditor & " " & Name & " " & SMTP & " " & Steuernummer & " " & Umsatzsteueridentnummer & " " & Check
CreateObject("WScript.Shell").Run ("cmd /c @echo %date% %time% " & aux & " >> C:\SCRIPT\PlOrCreationLog.txt")
Next
MsgBox "Process Completed"
Rem FINALIZATION CONTROL CHECK ************************
Exit Sub
errHandler:
MsgBox "Der Code kann nicht ausgeführt werden!" & vbCrLf & vbCrLf & "Fehlertext:" & vbCrLf & _
"Die Transaktion MK02 (Kreditor ändern) konnte nicht gestartet werden!", 48, "Information"
End Sub
Tabellen Aufbau:
Kreditor, Name, SMTP, Steuernummer, Umsatzsteuernummer
200500, Testlieferant1, Testlieferant@gmx.de, Steuernummer 1231231230, Umsatzsteuernummer: DE123123123
300500, Testlieferant1, Testlieferant@gmx.de, Steuernummer leer, Umsatzsteuernummer: DE123123124
die leere Zelle bei Steuernummer soll nicht als Blank ins SAP geschrieben werden!
Freundliche Grüße und Danke vorab
D. Böck