SAP Jobsuche bei DV-Treff
dboeck
  • dboeck
  • SAP Forum - Neuling Thema Starter
vor 9 Jahre
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

Förderer

ScriptMan
vor 9 Jahre

Hallo dboeck,

das kommt mir wirklich bekannt vor. 😎

Wenn etwas zuvor leer ist, kann man danach fragen und dann entscheiden, was zu tun oder zu lassen ist:

z.B.

if not Steuernummer = "" then session.findById("wnd[0]/usr/txtLFA1-STENR").Text = Steuernummer

Grüße,

ScriptMan

dboeck
  • dboeck
  • SAP Forum - Neuling Thema Starter
vor 9 Jahre
Hallo ScriptMan,

funktioniert perfekt!

Vielen Dank für deine Unterstützung.

VG

Dietmar