Makro - problemy ctrl+c / ctrl+v

A tu dla odmiany podyskutować możesz na tematy logistyczne SAP. Jeśli pojawią się jakieś pytania, nie zwlekaj, zadaj je natychmiast.
ODPOWIEDZ
MartaZuzanna
Posty: 3
Rejestracja: wt sie 01, 2023 11:12 pm
Has thanked: 1 time
Been thanked: 1 time

Makro - problemy ctrl+c / ctrl+v

Post autor: MartaZuzanna »

Cześć,

Chcę stworzyć Makro w SAP EWM.
Makro ma za zadanie usprawnić inwentaryzacje pustych lokalizacji na magazynie.

Założenie jest takie:
1) pracownik sprawdza czy aby na pewno lokacje zablokowane są puste.
2) tworzy manualnie inwentaryzacje na puste lokacje korzystając z PI DOC CREATE
3) loguje się do RFUI i włącza inwentaryzacje podając Warehouse Order.

I w tym momencie pojawia się powtarzalny ruch.
Skaner podaje nam lokacje, pracownik kopiuje lokacje, wkleja ją w wolne miejsce obok (tam gdzie fizycznie RF zeskanował by lokacje na magazynie), potwierdzamy enterem, a następnie klikamy F1 potwierdzając, że lokacja jest pusta i RFUI przenosi nas do kolejnej lokacji. Całą sekwencję powtarzamy (kopiuj, wklej, enter, F1) tyle razy ile pozycji jest w naszej inwentaryzacji.

Problem z napisaniem makra pojawił się w momencie kopiowania i wklejania lokacji, która jest właśnie liczona.
Nagrane makro powiela wklejenie wartości, które były tam w chwili nagrania, a nie kopiuje nowych wartości które pojawiają się wraz z przebiegiem inwentaryzacji.

Czy jest jakaś sekwencja która pozwoliłaby na edycję makra tak żeby kopiowało i wklejało wartości zgodnie z założeniem?
marcus
Posty: 257
Rejestracja: ndz lis 23, 2014 12:48 am
Has thanked: 206 times
Been thanked: 116 times
Kontakt:

Re: Makro - problemy ctrl+c / ctrl+v

Post autor: marcus »

Cześc,

Bardzo niebezpieczna opcja z tym makrem.
Można zamiast tego odpalić dokument inwentury w /SCWM/PI_COUNTLIST i jednym pstrykiem zaznaczyć wszystkie pola "znacznik pustego miejsca" i zapisać.
Druga opcja to skonfigurować inwentaryzację umieszczania (putaway) gdzie system podczas pierwszego umieszczania na dane miejsce składowania (pierwszy raz w każdym roku fiskalnym) pyta użytkownika czy miejsce na które umieszcza właśnie produkt na pewno jest puste. To jest inwentura ciągla i miejsca są oznaczane jako puste (bo było puste zanim coś w nim umieściliśmy).

Odnośnie makra to otwierając plik makra zobaczysz że pole odpowiedzialne za miejsce składowania jest wprowadzone na sztywno.
Można by spróbowac użyć excela aby zamiast używać kopiuj i wklej makro używało dane z kolumn z Excela i je podstawiało w SAP.
Poniżej jest przykład jakie wykorzystywałem w /SCWM/APPROD do przeniesień materiałów z miejsca na miejsce:


If Not IsObject(application) Then
Set SapGuiAuto = GetObject("SAPGUI")
Set application = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(connection) Then
Set connection = application.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 application, "on"
End If
session.findById("wnd[0]").maximize
REM ADDED BY EXCEL *************************************

Dim objExcel
Dim objSheet, intRow, i
Set objExcel = GetObject(,"Excel.Application")
Set objSheet = objExcel.ActiveWorkbook.ActiveSheet

For i = 2 to objSheet.UsedRange.Rows.Count
COL1 = Trim(CStr(objSheet.Cells(i, 1).Value)) 'Column1'
COL2 = Trim(CStr(objSheet.Cells(i, 2).Value)) 'Column2'


Później w swoim makrze zamiast text=jakieś pole, wstawiasz text=COL1 lub COL2


Oto przykład :

session.findById("wnd[0]/usr/subSUB_COMPLETE_OIP:/SCWM/SAPLUI_ADMA:2000/subSUB_SEARCH_VALUE:/SCWM/SAPLUI_ADMA:2002/ctxt/SCWM/S_ASPQ_MAT-LGPLA").text = COL1
session.findById("wnd[0]/usr/subSUB_COMPLETE_OIP:/SCWM/SAPLUI_ADMA:2000/subSUB_SEARCH_VALUE:/SCWM/SAPLUI_ADMA:2002/ctxt/SCWM/S_ASPQ_MAT-LGPLA").setFocus
session.findById("wnd[0]/usr/subSUB_COMPLETE_OIP:/SCWM/SAPLUI_ADMA:2000/subSUB_SEARCH_VALUE:/SCWM/SAPLUI_ADMA:2002/ctxt/SCWM/S_ASPQ_MAT-LGPLA").caretPosition = 15
session.findById("wnd[0]/usr/subSUB_COMPLETE_OIP:/SCWM/SAPLUI_ADMA:2000/subSUB_SEARCH_VALUE:/SCWM/SAPLUI_ADMA:2002/btnCMD_GO").press
session.findById("wnd[0]/usr/subSUB_COMPLETE_OIP:/SCWM/SAPLUI_ADMA:2000/subSUB_OIP_DATA_AREA:/SCWM/SAPLUI_ADMA:2210/subSUB_OIP_1_DATA:/SCWM/SAPLUI_ADMA:2212/chk/SCWM/S_ASP_MAT-SQUIT").selected = true
session.findById("wnd[0]/usr/subSUB_COMPLETE_OIP:/SCWM/SAPLUI_ADMA:2000/subSUB_OIP_DATA_AREA:/SCWM/SAPLUI_ADMA:2210/subSUB_OIP_1_DATA:/SCWM/SAPLUI_ADMA:2212/ctxt/SCWM/S_ASP_MAT-NOROU").text = "3"
session.findById("wnd[0]/usr/subSUB_COMPLETE_OIP:/SCWM/SAPLUI_ADMA:2000/subSUB_OIP_DATA_AREA:/SCWM/SAPLUI_ADMA:2210/subSUB_OIP_1_DATA:/SCWM/SAPLUI_ADMA:2212/ctxt/SCWM/S_ASP_MAT-PICK_ALL").text = "2"
session.findById("wnd[0]/usr/subSUB_COMPLETE_OIP:/SCWM/SAPLUI_ADMA:2000/subSUB_OIP_DATA_AREA:/SCWM/SAPLUI_ADMA:2210/subSUB_OIP_1_DATA:/SCWM/SAPLUI_ADMA:2212/ctxt/SCWM/S_ASP_MAT-NLPLA").text = COL2
session.findById("wnd[0]/usr/subSUB_COMPLETE_OIP:/SCWM/SAPLUI_ADMA:2000/subSUB_OIP_DATA_AREA:/SCWM/SAPLUI_ADMA:2210/subSUB_OIP_1_DATA:/SCWM/SAPLUI_ADMA:2212/ctxt/SCWM/S_ASP_MAT-NLPLA").setFocus
session.findById("wnd[0]/usr/subSUB_COMPLETE_OIP:/SCWM/SAPLUI_ADMA:2000/subSUB_OIP_DATA_AREA:/SCWM/SAPLUI_ADMA:2210/subSUB_OIP_1_DATA:/SCWM/SAPLUI_ADMA:2212/ctxt/SCWM/S_ASP_MAT-NLPLA").caretPosition = 15
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/subSUB_COMPLETE_OIP:/SCWM/SAPLUI_ADMA:2000/subSUB_OIP_DATA_AREA:/SCWM/SAPLUI_ADMA:2210/cntlCONTAINER_TB_OIP_1/shellcont/shell").pressButton "OK_OIP_CREATE_POST_MAT_TO"

To makro ma pętle i wykonuje kroki transakcji korzystając z otwartego Excela i pobierając dane do jednego pola z kolumny 1 i do drugiego z kolumny 2.
Ale jak już wspomniałem zrezygnowałem z tego typu działań bo były niebezpieczne.
wojtas7
Posty: 1061
Rejestracja: pt mar 14, 2008 12:51 pm
Has thanked: 71 times
Been thanked: 315 times

Re: Makro - problemy ctrl+c / ctrl+v

Post autor: wojtas7 »

A mnie ciekawi jak można nagrać makro na skanerze RFUI?
dominik.tylczynski
Posty: 8356
Rejestracja: wt kwie 03, 2007 4:05 pm
Has thanked: 1924 times
Been thanked: 1477 times
Kontakt:

Re: Makro - problemy ctrl+c / ctrl+v

Post autor: dominik.tylczynski »

wojtas7 pisze: śr sie 02, 2023 9:50 am A mnie ciekawi jak można nagrać makro na skanerze RFUI?
Transakcje RF to zwykłe transakcje dialogowe, zatem GUI Scripting powinno działać normalnie.
MartaZuzanna
Posty: 3
Rejestracja: wt sie 01, 2023 11:12 pm
Has thanked: 1 time
Been thanked: 1 time

Re: Makro - problemy ctrl+c / ctrl+v

Post autor: MartaZuzanna »

Marcus,

Pomysł z zaciąganiem sztywnych danych z excela wypalił perfekcyjnie!
Wielkie dzięki!

Nie mam dostępu do transakcji SAP_CONSULIST, ale już poprosiłam process expertów o dostępy.
(Kiedyś zaczną się zastanawiać po co mi te wszystkie operacje z których teoretycznie mój dział nie powinien korzystać...)

Wiem, że było to ryzykowne, ale zostałam postawiona przed ścianą. Mamy ustawione KPI, jasno mówiące o tym, że każda lokacja na magazynie musi być policzona minimum raz na pół roku. W pierwszym półroczu tego roku nas to nie dotyczyło, ponieważ otworzyliśmy nowy magazyn w kwietniu i plan policzenia wszystkich lokali w 2 miesiące był nierealny. Mamy 20% magazynu zablokowane i puste, nie skupialiśmy się na liczeniu tych lokacji, liczyliśmy tylko towar. W tym tygodniu przy audycie dowiedzieliśmy się, że nie zamknęliśmy pierwszego półrocza inwentaryzacji (z czego jeszcze nie byliśmy rozliczani), ale dopóki nie zamkniemy pierwszego półrocza, Fiori nie zacznie zaczytywać KPI dotyczących liczenia drugiego półrocza. Znowu uciekło nam masę czasu. Musiałam ratować sytuację. Nie jestem ekspertem od GUI Scrypting, ale uznałam, że szybciej znajdę takie rozwiązanie problemu niż przeklikując ręcznie 18 tysięcy pustych lokalizacji (bo tyle nam zostało do zamknięcia).

W tym momencie, po kilku dniach walki, zamknęliśmy pierwsze półrocze. Z opóźnieniem, ale też dużą dawką nowej energii. Dostałam niezłego kopa na zachętę, żeby poprawić swoje relacje z makrami na wypadek innych kryzysowych sytuacji.
Jeszcze raz bardzo dziękuję.
Pozdr. Zuzia ze Stocku
ODPOWIEDZ