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 wykonuje
MM01 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
Kacper W.

Kacper W. Specjalista SAP
SD/MM

Temat: Tworzenie materiału w SAP za pomocą EXCEL i VB

Temat ciekawy,.

Sam używam skryptu tylko nieco bardziej rozbudowanego
Dodatkowo mam tam wybór wglądów (żeby skrypt był niezależny od ustawień usera).

Dodatkowo polecam używanie daty w formie systemowej (jeszcze nie doszedłem jak odczytac format daty z systemu i zgodnie z nim podac ja
np
ja podaje w sktypcie =Format(Date, "ddmmyy") bo taki mam w systemie ale fajnie by było to troche rozbudowac.

nie wiesz moze jak używać uzyskać opis pola na końcu lini kodu tak jak ty to masz
np "ctxtMARA-MATKL").Text = "91-03-01"
u mnie to nie działa
muszę mieć tak
"2/2/ctxt[7]").Text = Format(Date, "ddmmyy")
czyli żeby po ctxt była nazwa pola ekranu a nie tajemniczy numer

pozdrawiam
Kacper

Następna dyskusja:

Wklejanie aktualnej daty do...




Wyślij zaproszenie do