Łukasz Panek

Łukasz Panek Specjalista logistyk

Temat: Wykorzystanie otwartej sesji SAP do uruchomienia makra

Witam,
Być może pytanie banalne, ale akurat z tym nie mogę sobie poradzić. Jestem zalogowany i mam otwarte okno SAP w którym chciałbym makrem uruchomić transakcje (powiedzmy) mmbe - czyli chciałbym użyć otwartą sesję żeby ominąć logowanie makrem. Jak tego dokonać? (mam SAP 7. 20) Dzięki z góry za podpowiedź .

konto usunięte

Temat: Wykorzystanie otwartej sesji SAP do uruchomienia makra

dla makra EXCEL:
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 = "/nmmbe"
session.findById("wnd[0]").sendVKey 0
end sub


dla makra SAP - zapisujesz plik gdzieś na dysku i doubleclick go

albo z aplikacji do nagrywania makr z paska SAP - i otwórz.

Dla wszystkich tych opcji wcześniej włącz wykonywanie skryptów dla SAP
Łukasz Panek

Łukasz Panek Specjalista logistyk

Temat: Wykorzystanie otwartej sesji SAP do uruchomienia makra

Wielkie dzięki, rzeczywiście to było proste:) Cały czas krążyłem wokół celu.

Korzystając z okazji miałbym jeszcze jedno prawdopodobnie proste pytanie: jak wrócić do głównego menu w SAP z dowolnej transakcji, jak wyglądała by taka linijka kodu, bo z nagrania raczej nie dojdę do tego; i jak wylogować się z SAP.

konto usunięte

Temat: Wykorzystanie otwartej sesji SAP do uruchomienia makra

/n ;Skip to the next record if you are processing one batch input session
/bend ;Cancel a batch input foreground process 
/nend ;Close all R/3 sessions and logoff 
/nxxxx ;Call the transaction xxxx in the same session 
/o ;Generate a session list 
/oxxxx ;Call the transaction xxxx in an additional session 
/i ;Delete the current session 
/h ;Turn the debug mode on 

skróty opisane w help SAPa
linijka kodu zależy od tego gdzie aktualnie "jesteś" ale to można nagrać i podstawić potem właściwą komendę...Tomasz M. edytował(a) ten post dnia 23.10.12 o godzinie 18:26
Łukasz Panek

Łukasz Panek Specjalista logistyk

Temat: Wykorzystanie otwartej sesji SAP do uruchomienia makra

Ok, dzięki.
To może jeszcze jedno pytanko:
Jak zapisać/zarejestrować odpowiedzi/komunikaty SAP'a ?
Chodzi o to żeby zapamiętać np "numer zlecenia" i potem wykorzystać go do druku.
Sławomir Korman

Sławomir Korman Local Material
Master Coordinator
SAP R/3 , General
Elect...

Temat: Wykorzystanie otwartej sesji SAP do uruchomienia makra

Witam,

Numer zlecenia możesz odczytać z komunikatów pojawiąjacych się u dołu okna w SAP.

Sprawdź to: er = session.findById("wnd[0]/sbar").text powinno odczytać status bar. Będziesz musiał "wyciąć" numer zlecenia z podanego tektu.

konto usunięte

Temat: Wykorzystanie otwartej sesji SAP do uruchomienia makra

no ja to robię właśnie tak jak kolega zapisał, ale wcześniej ustawiam HELP jako modal. Dzięki temu mam na ekranie pola a nie czysty tekst i mogę z tego tekstu czytać:

session.findById("wnd[0]/sbar").DoubleClick
num1 = session.findById("wnd[1]/usr/lbl[32,2]").Text
session.findById("wnd[1]/tbar[0]/btn[0]").press
SAPkod = Right(num1, 9)


to był kod czytający info o pierwszym wolnym kodzie materiałowym do utworzenia. Ale moja metoda wymaga kliknięcia na pasek który kolega podał i potem zamknięcia go.Bartłomiej C. edytował(a) ten post dnia 13.11.12 o godzinie 19:40
Sławomir Korman

Sławomir Korman Local Material
Master Coordinator
SAP R/3 , General
Elect...

Temat: Wykorzystanie otwartej sesji SAP do uruchomienia makra

Sprawdziłem kod :
Jeżeli odczytana wartość ze status bar'a bedzie wynosić "Numer zlecenia 60003532 zapamiętany" to poniższy kod wyświetli tylko numer zlecenia.

a = Split(session.findById("wnd[0]/sbar").text," ") 
msgbox(a(2))


Pozdrawiam
Łukasz Panek

Łukasz Panek Specjalista logistyk

Temat: Wykorzystanie otwartej sesji SAP do uruchomienia makra

OK, zadziałało:
ja to sobie wprawdzie "zapuściłem" jako:
Sheets(1).Range("A7").Value = Left(session.findById("wnd[0]/sbar").Text, 10)

...ale dziękuje bardzo za wskazanie drogi do tego rozwiązania.

Następna dyskusja:

Problem z uruchomieniem mak...




Wyślij zaproszenie do