SAP Jobsuche bei DV-Treff
Skidrow
  • Skidrow
  • SAP Forum - User Thema Starter
vor 7 Jahre
Hallo Forum,

ich bin absoluter Anfänger im Bereich Scripting mit SAP.

Ich habe ein bisschen in Excel gearbeitet und verstehe teilweise was. Nun stehe ich aber vor einem Problem.

Ich möchte im angehängten Bild prüfen welchen Wert die Ampel hat. Rausgefunden habe ich, dass er zwischen 1 und 3 liegt. Jetzt möchte ich prüfen in welcher Zeile die letzte Ampel sitzt und dort dann eine Prüfung durchfüren. Kann mir jemand erklären wie das ganze durchführbar ist?

Beispiel:

IF Ampel = 3 then

msgbox "grün

End if

UserPostedImage 

Saptimierer
vor 7 Jahre
Hallo Skidrow,

die unterschiedlichen Ampeln werden im Scripting nicht durch einen bestimmten Wert definiert, sondern durch unterschiedliche Icons. Feststellen, ob die rote Ampel angezeigt wird, kannst du z.B. mit

If Session.FindById("wnd[0]/usr/cntlGRID1/shellcont/shell/shellcont[1]/shell").IconName = "@0A@" Then
   Msgbox "Rot"
End If
Skidrow
  • Skidrow
  • SAP Forum - User Thema Starter
vor 7 Jahre
Hallo,

danke für die Antwort, leider funktioniert das so nicht.

Grüße

ScriptMan
vor 7 Jahre
Hallo Skidrow,

schau dir bitte den folgenden Link an:

https://archive.sap.com/discussions/thread/3490519 

Es könnte sein, dass du dann weiter kommst.

Grüße,

ScriptMan

Skidrow
  • Skidrow
  • SAP Forum - User Thema Starter
vor 7 Jahre
Hallo,

danke dir, wie kann ich denn prüfen auf welcher Position die letzte Ampel ist. Das ist ja Variabel. Oder wie bekomme ich überhaupt die Position der Ampel raus?

Ist das überprüfen so richtig?


if Session.FindById("wnd[0]/usr/lbl[3,20]").IconName() = "S_LEDR" then
	Msgbox "Rot"
end if
Das problem ist, das ich nicht weis 0b 3,20 stimmt.

Grüße

ScriptMan
vor 7 Jahre
Hallo,

zuerst zeichnest du ein Skript auf, indem du nur die erste Ampel mit der Maus anklickst und dann die Aufzeichnung sofort beendest. Danach müsstest du ein Skript erhalten, dass z.B. wie folgt aussieht:

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
session.findById("wnd[0]/usr/lbl[6,10]").setFocus
session.findById("wnd[0]/usr/lbl[6,10]").caretPosition

Die Beispiel-Koordinaten [6,10] sehen in deinem Fall bestimmt anders aus.

Danach könnte man z.B. das vorhandene Skript ausbauen wie folgt:


. . .
session.findById("wnd[0]").maximize
i = 10
on error resume next
do 
myIcon =  session.findById("wnd[0]/usr/lbl[6," & cstr(i) & "]").IconName
if err.number <> 0 then exit do
i = i + 1
loop
on error goto 0
msgbox "letzte Ampel (" & myIcon & ") befindet sich in der Zeilenummer: " & cstr(i) 
. . .

Grüße,

Scriptman

Skidrow
  • Skidrow
  • SAP Forum - User Thema Starter
vor 7 Jahre
Hey, danke dir!

Ich hätte das alleine niemals hinbekommen. Die Zeile findet er aber als Iconname gibt er nichts an. Also einfach nur so "()".

Das war übrigens auch mein Problem. Ich hatte öfter versucht den Namen in eine Variable zu speichern und über eine Msgbox auszugeben.

Grüße

ScriptMan
vor 7 Jahre
Es könnte sein, dass es nicht egal ist, wo man bei der 3-fach Ampel hinklickt. Jedenfalls müsste die grüne Ampel rechts aussen tatsächlich als S_LEDG erkannt werden. Ich kann es leider nicht testen.

Grüße

Skidrow
  • Skidrow
  • SAP Forum - User Thema Starter
vor 7 Jahre
Habe ich auch schon probiert.... das ist echt zum k...... :(

Trotzdem danke für deine Mühe!

Habe den Fehler gefunden 🙂

Also, die Icons heißen S_TL_R und S_TL_G.

Und in deinem Script ist ein kleiner Fehler. Man muss am Ende nochmal i +1 rechnen. Jetzt haut es hin. DANKE 🙂

ScriptMan
vor 7 Jahre
Mein Skript sollte nur eine Anregung für dich sein. Ich lege keinen Wert auf Richtigkeit. 😉
Skidrow
  • Skidrow
  • SAP Forum - User Thema Starter
vor 7 Jahre
Ich weiß, da bin ich auch echt froh drum. Ich probiere auch gerne aus! Man muss die Ampel überigens auch sehen. deshalb scrolle ich auch über das Script runter.

Bin dir echt dankbar!