konto usunięte
Temat: Tworzenie materiału w SAP za pomocą EXCEL i VB
Wymodziłem takie makro, które z arkusza w czasie 6 sekund wykonujeMM01 dla kilku zakładek.
Może komuś się przyda, może wspólnie rozwiniemy je dalej
Sub MM01_KOMPONENT()
'EXCEL
'program tworzy kod SAP dla linii danych, w której znajduje się kursor
Dim SAPkod As String
Dim opis As String
Dim rys As String
Dim MRP As String
Dim czas As Byte
Dim MEAS As String
'kopiowanie aktywnej linii danych do tempa
Sheets("Komponenty 0006").Select
ActiveCell.Rows("1:1").EntireRow.Select
Selection.Copy
Sheets("TEMP").Select
Range("A2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'czytanie danych z pliku do zmiennych- zakładka TEMP
Sheets("TEMP").Select
Range("A2").Select
SAPkod = ActiveCell.Value
Range("B2").Select
opis = ActiveCell.Value
Range("C2").Select
MEAS = ActiveCell.Value
Range("D2").Select
rys = ActiveCell.Value
Range("E2").Select
MRP = ActiveCell.Value
Range("F2").Select
czas = ActiveCell.Value
'zaznacza obrabianą linię na zielono - w innym makro sprawdza czy ta linia juz nie była przetwarzana
Sheets("Komponenty 0006").Select
Selection.Interior.ColorIndex = 4
'SAP
'sktypt "dobiera" się do SAP
'ważne! - domyślnie sktypt SAP stosuje słowo "Aplication" i
'powoduje to błąd w xls - zmien na inne dowolne słowo (np LRW)
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
'tu ważne - maximaze - robi wszystko na ekranie = wolniej
'Iconify - minimalizuje okna - u mnie tak 30-40% szybsze
' a poniżej w określonym oknie
session.findById("wnd[0]").resizeWorkingPane 141, 30, False
'session.findById("wnd[0]").maximize
'session.findById("wnd[0]").Iconify
'transakcja wymaga uruchomionego okna MM01 na ekranie podstawowym
'nie działa z menu głównego SAP
'nie działa z innej transakcji
'choć można wymusić poprzez włączenie /oMM01 lub /nMM01
'zmienna "SAPkod"
session.findById("wnd[0]/usr/ctxtRMMG1-MATNR").Text = SAPkod
session.findById("wnd[0]/usr/cmbRMMG1-MBRSH").key = "M"
session.findById("wnd[0]/usr/cmbRMMG1-MTART").key = "MOLD"
session.findById("wnd[0]/usr/cmbRMMG1-MTART").SetFocus
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[1]/tbar[0]/btn[19]").press
session.findById("wnd[1]/usr/tblSAPLMGMMTC_VIEW").getAbsoluteRow(0).Selected = True
session.findById("wnd[1]/usr/tblSAPLMGMMTC_VIEW").getAbsoluteRow(7).Selected = True
session.findById("wnd[1]/usr/tblSAPLMGMMTC_VIEW").getAbsoluteRow(8).Selected = True
session.findById("wnd[1]/usr/tblSAPLMGMMTC_VIEW").getAbsoluteRow(9).Selected = True
session.findById("wnd[1]/usr/tblSAPLMGMMTC_VIEW").getAbsoluteRow(10).Selected = True
session.findById("wnd[1]/usr/tblSAPLMGMMTC_VIEW").getAbsoluteRow(11).Selected = True
session.findById("wnd[1]/usr/tblSAPLMGMMTC_VIEW").getAbsoluteRow(12).Selected = True
session.findById("wnd[1]/usr/tblSAPLMGMMTC_VIEW/txtMSICHTAUSW-DYTXT[0,12]").SetFocus
session.findById("wnd[1]/usr/tblSAPLMGMMTC_VIEW/txtMSICHTAUSW-DYTXT[0,12]").caretPosition = 0
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[1]/usr/ctxtRMMG1-WERKS").Text = "plsp"
session.findById("wnd[1]/usr/ctxtRMMG1-LGORT").Text = "0006"
session.findById("wnd[1]/usr/ctxtRMMG1-LGORT").SetFocus
session.findById("wnd[1]/usr/ctxtRMMG1-LGORT").caretPosition = 4
session.findById("wnd[1]").sendVKey 0
'zmienna"opis"
session.findById("wnd[0]/usr/subSUB2:SAPLMGD1:8001/tblSAPLMGD1TC_KTXT/txtSKTEXT-MAKTX[1,0]").Text = opis
'session.findById("wnd[0]/usr/subSUB2:SAPLMGD1:8001/tblSAPLMGD1TC_KTXT/txtSKTEXT-MAKTX[1,1]").Text = "maszyna-test"
session.findById("wnd[0]/usr/subSUB3:SAPLMGD1:2001/ctxtMARA-MEINS").Text = MEAS
session.findById("wnd[0]/usr/subSUB3:SAPLMGD1:2001/ctxtMARA-MATKL").Text = "91-03-01"
'zmienna "rys"
session.findById("wnd[0]/usr/subSUB3:SAPLMGD1:2001/txtMARA-BISMT").Text = rys
session.findById("wnd[0]/usr/subSUB3:SAPLMGD1:2001/ctxtMARA-SPART").Text = "01"
session.findById("wnd[0]/usr/subSUB3:SAPLMGD1:2001/ctxtMARA-SPART").SetFocus
session.findById("wnd[0]/usr/subSUB3:SAPLMGD1:2001/ctxtMARA-SPART").caretPosition = 2
session.findById("wnd[0]").sendVKey 0
'zmienna "MRP"
session.findById("wnd[0]/usr/subSUB2:SAPLMGD1:2481/ctxtMARC-DISGR").Text = MRP
session.findById("wnd[0]/usr/subSUB2:SAPLMGD1:2481/ctxtMARC-EKGRP").Text = "x99"
session.findById("wnd[0]/usr/subSUB3:SAPLMGD1:2482/ctxtMARC-DISMM").Text = "PD"
session.findById("wnd[0]/usr/subSUB3:SAPLMGD1:2482/ctxtMARC-DISPO").Text = "XMR"
session.findById("wnd[0]/usr/subSUB4:SAPLMGD1:2483/ctxtMARC-DISLS").Text = "EX"
session.findById("wnd[0]/usr/subSUB6:SAPLMGD1:2484/ctxtMARC-BESKZ").Text = "E"
session.findById("wnd[0]/usr/subSUB6:SAPLMGD1:2484/ctxtMARC-SOBSL").Text = "52"
session.findById("wnd[0]/usr/subSUB6:SAPLMGD1:2484/ctxtMARC-LGPRO").Text = "0006"
session.findById("wnd[0]/usr/subSUB6:SAPLMGD1:2484/ctxtMARC-LGFSB").Text = "0006"
'zmienn czas produkcji
session.findById("wnd[0]/usr/subSUB7:SAPLMGD1:2485/txtMARC-DZEIT").Text = czas
session.findById("wnd[0]/usr/subSUB7:SAPLMGD1:2485/ctxtMARC-FHORI").Text = "000"
session.findById("wnd[0]/usr/subSUB6:SAPLMGD1:2484/ctxtMARC-RGEKZ").SetFocus
session.findById("wnd[0]/usr/subSUB6:SAPLMGD1:2484/ctxtMARC-RGEKZ").caretPosition = 1
session.findById("wnd[0]").sendVKey 4
session.findById("wnd[1]/usr/lbl[3,3]").SetFocus
session.findById("wnd[1]/usr/lbl[3,3]").caretPosition = 2
session.findById("wnd[1]").sendVKey 2
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/subSUB4:SAPLMGD1:2493/ctxtMARC-MTVFP").Text = "ZL"
session.findById("wnd[0]/usr/subSUB4:SAPLMGD1:2493/txtMARC-WZEIT").Text = "1"
session.findById("wnd[0]/usr/subSUB6:SAPLMGD1:2495/ctxtMARC-SBDKZ").Text = "1"
session.findById("wnd[0]/usr/subSUB6:SAPLMGD1:2495/ctxtMARC-SBDKZ").SetFocus
session.findById("wnd[0]/usr/subSUB6:SAPLMGD1:2495/ctxtMARC-SBDKZ").caretPosition = 1
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/subSUB2:SAPLMGD1:2701/ctxtMARA-RAUBE").Text = "01"
session.findById("wnd[0]/usr/subSUB2:SAPLMGD1:2701/ctxtMARA-RAUBE").SetFocus
session.findById("wnd[0]/usr/subSUB2:SAPLMGD1:2701/ctxtMARA-RAUBE").caretPosition = 2
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/subSUB3:SAPLMGD1:2802/ctxtMBEW-BKLAS").Text = "9200"
session.findById("wnd[0]/usr/subSUB3:SAPLMGD1:2802/ctxtMBEW-BKLAS").SetFocus
session.findById("wnd[0]/usr/subSUB3:SAPLMGD1:2802/ctxtMBEW-BKLAS").caretPosition = 4
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/subSUB2:SAPLMGD1:2904/chkMBEW-EKALR").Selected = True
session.findById("wnd[0]/usr/subSUB2:SAPLMGD1:2904/chkMBEW-EKALR").SetFocus
session.findById("wnd[0]").sendVKey 2
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[1]/usr/btnSPOP-OPTION1").press
End SubBartłomiej C. edytował(a) ten post dnia 31.01.09 o godzinie 12:02