AHK: SAP Programma actief houden

Status
Niet open voor verdere reacties.

Kirsten1712

Gebruiker
Lid geworden
11 jan 2017
Berichten
28
Hey oplossers!

Ik probeer momenteel om met AHK, SAP geactiveerd te houden. Voor degenen die niet met SAP werken, dit programma sluit na 30min non-actief te zijn geweest. Ik heb al verschillende variaties geprobeerd met winactivate, winwait, ... maar geen enkele code lijkt te werken.

Nadeel bij SAP is dat de naam van het scherm steeds wijzigt afhankelijk van het scherm waar je je in bevindt, dus heb ik geprobeerd om te verwijzen naar slechts een deel van de naam of de class maar ook dat lijkt niet te werken.

Iemand hier die er toch meer verstand van heeft?

Alvast bedankt voor jullie hulp!
 
google "sap idle session timeout" om mogelijk parameters aan te kunnen passen.
 
Hier een voorbeeldje met notepad om te kijken of het ahk-script ongeveer werkt op de manier die jij voor ogen hebt.
Open notepad/kladblok
Run de code
De code zal elke 2 seconden een timestamp naar notepad/kladblok sturen
De code zal elke 2 seconden notepad/kladblok naar de voorgrond brengen
Het kan zijn dat je "Untitled - Notepad" (engelse windows) moet vervangen door "Naamloos - Kladblok" (nederlandse windows)

Code:
SendMode Input

#Persistent
SetTimer, BumpNotepad, 2000
return

BumpNotepad:
WinGet windows, List
Loop %windows%
{
	windows_id := windows%A_Index%
	WinGetTitle windows_title, ahk_id %windows_id%
	if (windows_title = "Untitled - Notepad") 
	{
	WinActivate %windows_title%
	FormatTime, TimeString, ,yyyy-MM-dd hh:mm:ss
	Send Found: %TimeString% {ENTER}
	}
}
return
Gemaakt met AutoHotkey Version 1.1.29.00

Werkt dit naar behoren, dan gaan we over naar fase 2, SAP (waar ik ook dagelijks mee werk)
We zouden kunnen wisselen tussen CTRL+/ (t-code venster selecteren) en /nMM03 (material master onschuldige t-code)
 
Laatst bewerkt:
Hey Alphamax

Je Notepad code werkt perfect! Aan de SAP parameters kunnen we hier niets wijzigen, deze werden globaal ingesteld en zijn allemaal beveiligd tegen evt. wijzigingen.

Wat ik in SAP zou willen vermijden is dat de user gehinderd wordt op de momenten dat hij/zij er wel in aan het werken is. Als we een t-code oproepen, gaan we de user hinderen. Ik had deze workaround al geprobeerd, maar misschien niet voldoende uitgewerkt.
Idem voor CTRL+ als deze op de voorgrond komt, maar ik meen ergens te hebben gelezen dat we bepaalde schermen naar de achtergrond kunnen sturen..?

Gaan we er samen uit geraken, denk je? :)
 
Ik vond ook nog deze mogelijke oplossing, zie https://blogs.sap.com/2016/04/07/sap-tip-avoiding-sap-idel-session-time-out/

Met ahk's-"controlsend", zou je iets naar een background window kunnen zenden.
Mij lijkt dat je dan altijd sap's-"SAP Easy Access" window open moet hebben staan als startpunt van je "bump"-code.
Je kan ook met code een nieuwe sessie starten maar wat als al het maximaal aantal sessies open staat?

Zoals je ziet is vanalles mogelijk, maar echt gebruiksvriendelijk is het niet.
Daar is nog overheen te komen als het voor jezelf is, maar is het voor een flink aantal collega's dan kan je wel een aantal vragen verwachten.
 
Laatst bewerkt:
Zendt een timestamp naar "Untitled - Notepad" ongeacht die open staat of gesloten is, in de voorgrond of de achtergrond.
Code:
SetKeyDelay, 20, 20

#Persistent
SetTimer, BumpNotepadBackground, 2000
return

BumpNotepadBackground:
FormatTime, TimeString, ,yyyy-MM-dd hh:mm:ss
ControlSend ,,Background: %TimeString% {ENTER},Untitled - Notepad
return

Opmerking: kladblok is een makkelijk programma mee te experimenteren, het kan dat het bij sap veel moeilijker is.
 
Laatst bewerkt:
Bedankt voor je tips Alphamax!

Ik ga wat combinaties proberen via de class. Zover ik kan zien, staat deze altijd op SAP_FRONTEND_SESSION. Ik vraag me alleen af wat het resultaat dan is wanneer je meerdere schermen hebt open staan, met diezelfde class. Hopelijk neemt hij dan gewoon het eerste scherm.
 
Met deze code loop je door de open vensters, en laat de class en de title zien
Code:
; https://autohotkey.com/board/topic/292-loop-windows/
WinGet, id, list, , , Program Manager
Loop, %id%
{
	StringTrimRight, this_id, id%a_index%, 0
	WinActivate, ahk_id %this_id%
	WinGetClass, this_class, ahk_id %this_id%
	WinGetTitle, this_title, ahk_id %this_id%
	MsgBox, 4, , Visiting All Windows`n%a_index% of %id%`nahk_id: %this_id%`nahk_class: %this_class%`nahk_title: %this_title%`n`nContinue?
	IfMsgBox, NO, break
}
De title kan je gebruiken als voorwaarde, naast de class "SAP_FRONTEND_SESSION"

Zou je later je code willen plaatsen, ik ben best wel benieuwd.
Ikzelf werkt de hele dag in sap en heb dus geen last van timeouts ;-)
 
Ik moet zeggen dat ik er zelf ook niet zo veel last van heb, maar de andere collega's wel.

Als ik er uit geraak, deel ik hem zeker met jullie, maar ik vrees nog wat voor mijn beperkte kennis..

Alvast bedankt voor het meedenken en de gegeven tips & tricks!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan