Temat: Wypełnianie pól w SAPie za pomocą danych z excela
albo lecisz w jednym SUM tekstem ciągłym, albo przywołujesz podprogram z makra EXCELA
np:
call co02_zlecenie
trzeba SAPa skonfigurować - jeżeli nie masz uprawnień do obsługi skryptow, to nie będzie działać.
Mogę napisać...U mnie działa...ale jak nie podasz komunikatów błędów, to trudno podać diagnozę.
poniżej frabment obszerny kodu do tworzenia routingu kosztowego na bazie produkcyjnego:
Sub tworz() 'tworzenie routingu
Dim Ans
Ans = MsgBox("Na pewno chcesz utworzyć routingi kosztowe??", vbOKCancel, "Wybór")
If Ans = vbCancel Then
End
End If
If Ans = vbOK Then
End If
Call sap
Call pobierz
Windows("routing.xls").Activate
ActiveWorkbook.Close (0)
End Sub
Sub pobierz()
'Dim kod As String 'trzeba odczytać kod z routing.xls
Windows("routing.xls").Activate
nrow = Range("A65536").End(xlUp).Row
i = 2
For i = 2 To nrow
kod = Cells(i, "A")
Call kopiowanie
Next i
End Sub
Sub sap()
If Not IsObject(LRW) Then
Set SapGuiAuto = GetObject("SAPGUI")
Set LRW = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(Connection) Then
Set Connection = LRW.Children(0)
End If
If Not IsObject(session) Then
Set session = Connection.Children(0)
End If
If IsObject(WScript) Then
WScript.ConnectObject session, "on"
WScript.ConnectObject LRW, "on"
End If
session.findById("wnd[0]/tbar[0]/okcd").Text = "/nca01"
session.findById("wnd[0]").sendVKey 0
End Sub
Sub kopiowanie()
'4. wchodzi do SAP do otwartej transakcji CA01
If Not IsObject(LRW) Then
Set SapGuiAuto = GetObject("SAPGUI")
Set LRW = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(Connection) Then
Set Connection = LRW.Children(0)
End If
If Not IsObject(session) Then
Set session = Connection.Children(0)
End If
If IsObject(WScript) Then
WScript.ConnectObject session, "on"
WScript.ConnectObject LRW, "on"
End If
session.findById("wnd[0]/usr/ctxtRC27M-MATNR").Text = kod 'kod materiału
session.findById("wnd[0]/tbar[1]/btn[5]").press
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[1]/usr/ctxtRC27M-MATNR").Text = kod 'kod materiału
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[0]/usr/subGENERALVW:SAPLCPDA:1211/ctxtPLKOD-STATU").Text = "60"
session.findById("wnd[0]/usr/subGENERALVW:SAPLCPDA:1211/txtT412T-TXT").SetFocus
session.findById("wnd[0]/usr/subGENERALVW:SAPLCPDA:1211/txtT412T-TXT").caretPosition = 0
session.findById("wnd[0]").sendVKey 0
'i tu pętla przechodzi przez kolejne pola przewodnika
Call petla
End Sub
Sub petla()
Dim i
'Dim pole As String
For i = 0 To 160 'było 80
If Not IsObject(LRW) Then
Set SapGuiAuto = GetObject("SAPGUI")
Set LRW = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(Connection) Then
Set Connection = LRW.Children(0)
End If
If Not IsObject(session) Then
Set session = Connection.Children(0)
End If
If IsObject(WScript) Then
WScript.ConnectObject session, "on"
WScript.ConnectObject LRW, "on"
End If
'pole = session.findById("wnd[0]/usr/tblSAPLCPDITCTRL_1400/ctxtPLPOD-ARBPL[2," & i & "]").Text
stanowisko = session.findById("wnd[0]/usr/tblSAPLCPDITCTRL_1400/ctxtPLPOD-ARBPL[2," & i & "]").Text
If stanowisko <> "" Then
Call konta
If kosztowe = "C510KO" And stanowisko = "KO" Then
session.findById("wnd[0]/usr/tblSAPLCPDITCTRL_1400/ctxtPLPOD-ARBPL[2," & i & "]").Text = "C510KO"
session.findById("wnd[0]/usr/tblSAPLCPDITCTRL_1400/ctxtPLPOD-ARBPL[2," & i & "]").SetFocus
session.findById("wnd[0]/usr/tblSAPLCPDITCTRL_1400/ctxtPLPOD-ARBPL[2," & i & "]").caretPosition = 6
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]").sendVKey 0
'session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[0]/usr/subDEFAULTVAL:SAPLCPDO:1211/txtPLPOD-VGW04").Text = "10"
session.findById("wnd[0]/usr/subDEFAULTVAL:SAPLCPDO:1211/ctxtPLPOD-VGE04").Text = "H"
session.findById("wnd[0]/usr/subDEFAULTVAL:SAPLCPDO:1211/ctxtPLPOD-LAR04").Text = "POOL"
session.findById("wnd[0]/usr/subDEFAULTVAL:SAPLCPDO:1211/ctxtPLPOD-LAR04").SetFocus
session.findById("wnd[0]/usr/subDEFAULTVAL:SAPLCPDO:1211/ctxtPLPOD-LAR04").caretPosition = 4
session.findById("wnd[0]").sendVKey 0
If kosztowe = "C510KO" And stanowisko = "INFO" Then
session.findById("wnd[0]/usr/tblSAPLCPDITCTRL_1400/ctxtPLPOD-ARBPL[2," & i & "]").Text = "INFO"
End If
'poprawa danych
Else
session.findById("wnd[0]/usr/tblSAPLCPDITCTRL_1400/ctxtPLPOD-ARBPL[2," & i & "]").Text = kosztowe
End If
Else
i = 160 'było 80
End If
Next i
'zakonczenie i zapis
session.findById("wnd[0]/usr/tblSAPLCPDITCTRL_1400/ctxtPLPOD-ARBPL[2,1]").caretPosition = 6
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/tbar[0]/btn[11]").press
End Sub