konto usunięte

Temat: zamknięcie okna programu SAP funkcją VB

Mam problem, którego nie mogę nagrać w SAP - bo zamknięcie okna zamyka mi recording bez zapisu.
Dla potrzeb makra otwieram dodatkowe okno funkcją:
session.findById("wnd[0]/tbar[0]/okcd").Text = "/Omm01"
session.findById("wnd[0]").sendVKey 0

po wykonaniu makra - które kończy się na ekranie głównym SAP - muszę to okno zamknąć. Jak tego dokonać?
Dzięki temu wykonanie makra będzie niezależne od tego, co akurat mamy otwarte w SAP, a nie będzie wymagało ręcznego zamykania okien, których maksymalnie może być 7.

Będę wdzięczny za pomoc.
Pozdrawiam
Rafał Rudzki

Rafał Rudzki Konsultant SAP
CRM/SD/ABAP

Temat: zamknięcie okna programu SAP funkcją VB

Może głupie pytanie ale gdzie się nagrywa kod VB?

konto usunięte

Temat: zamknięcie okna programu SAP funkcją VB

nie jest głupie - bo mało kto tego używa. U mnie w firmie - tylko ja

Alt+F12 (czyli ikona do dostosowania układu)
tam wybieramy "Zapis i odtwarzanie skryptu" / "Script recording & playback"
i tam - wybierz ścieżkę do pliku, który ma utworzyć z zapisem, a potem czerwony przycisk....
fajna rzecz - wiele skomplikowanych, a często robionych operacji w SAPie może znacznie uprościć.

pozdrawiam

edit:
chyba mam ....ale sprawdzę po weekendzie:

session.findById("wnd[0]/tbar[0]/btn[15]").pressBartłomiej C. edytował(a) ten post dnia 31.01.09 o godzinie 22:11
Kacper W.

Kacper W. Specjalista SAP
SD/MM

Temat: zamknięcie okna programu SAP funkcją VB

Trzeba też pamiętać, że nagrywanie makra musi być odblokowane na serwerach...

Wiecie może jak sprawdzić czy okienko wyskoczyło.

Chodzi o sytuację gdy dla kodu taryfy celnej w MM wyskakuje okienko z zapytaniem o alternatywną jednostę.

Jak sprawdzić czy takie okno się otworzyło
Tzn
if OKNWO exist then wypełnij pola itd
else
kontynuacja skryptu

pozdrawiam
Kacper

konto usunięte

Temat: zamknięcie okna programu SAP funkcją VB

może zaszyć obsługę błędu?
jeżeli się nie pojawi okno - czyli wystąpi błąd makra - wprowadzić przejście do następnej części kodu?

Kacper - dzięki Twojej informacji napisałem parę makr do tworzenia nowych materiałów.
Nawet pobieram następny wolny kod z SAPa (dla materiałów, które są tworzone wg listy narastającej) i automatycznie używam go do wprowadzenia materiału. Kosztowało mnie to kupę czasu i prób, ale działa :)Bartłomiej C. edytował(a) ten post dnia 19.02.09 o godzinie 10:51
Kacper W.

Kacper W. Specjalista SAP
SD/MM

Temat: zamknięcie okna programu SAP funkcją VB

Cieszę się, że mogłem pomóc:)

Połączenie VB z SAP to super sprawa.
Oszczędza mi mnóstwo czasu.
Ja VBA używam do:
- tworzenia art
- zrzucania danych z różnych kwerend SAP
- zakładania wewnętrznych klientów

no i czasami w zależności od potrzeb robię coś na szybko.

Mam kilka przydatnych wskazówek (być może oczywisce ale może się przydadzą)

1. Aby przyspieszyć skrypt wywołuję go w tzw trybie zminimalizowanym (Iconyfy) co powoduje, że SAP nie musi generować grafik (oszczędność czasu)
Przy niektórych operacjach skróciło mi czas wykonywania skryptu o 40%. Gdy np zakładałem 200 klientów to realny zysk na czasie.

.......................................
'Zapytanie o tryb pracy

x = MsgBox("Tworzyć art. w trybie UKRYTYM?", vbYesNoCancel, "Tryb pracy:")

If x = 7 Then
session.findById("wnd[0]").maximize
ElseIf x = 6 Then
session.findById("wnd[0]").Iconify
Else
GoTo Koniec
End If

........................................

Uwaga - Wywoływać to na początku zaraz po inicjacji połaczenia z SAP - nigdzie indziej w skrypcie nie może pojawić się sekcja
"session.findById("wnd[0]").maximize"
bo znowu skryp będzie działać na pełnym ekranie.

2. Warto też usunąć ze skryptów sekcje kończące się na
"SetFocus" i "caretPosition =" czyli np:

"session.findById("wnd[1]/usr/lbl[0,3]").SetFocus"
"session.findById("wnd[1]/usr/lbl[0,3]").caretPosition = 3"

W zasadzie nic nie wnoszą tylko powiększają skrypt.

pozdrawiam
Kacper

konto usunięte

Temat: zamknięcie okna programu SAP funkcją VB

Kacper - przydatne uwagi. Dzięki.
a tu kawałek kodu, który pobiera z SAP (z okna komunikatu) numer materiału - jeżeli masz materiały zakładane wk narastającej numeracji:

Dim num1 as String
Dim SAPkod as String
.
.
.
session.findById("wnd[0]/usr/ctxtRMMG1-MATNR").Text = "MC-01"
session.findById("wnd[0]/usr/cmbRMMG1-MBRSH").key = "M"
session.findById("wnd[0]/usr/cmbRMMG1-MTART").key = "MENG"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/tbar[0]/btn[0]").press

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

przy założeniu, że help jest "in modal dialog box"

Następna dyskusja:

EXCEL - generowanie raportu...




Wyślij zaproszenie do