SAP Jobsuche bei DV-Treff
Mr_Venom
  • Mr_Venom
  • SAP Forum - Neuling Thema Starter
vor 5 Jahre
Hallo Zusammen,

ich bin neu hier und eigentlich auch im Thema GuiXT. Bis jetzt war ich immer nur Anwender in SAP. Seit neustem ist das Thema Automatisierung bei uns in der Arbeit ein großes Thema und da bin ich auf GuiXT gestoßen.

Ich bin begeistert von den Möglichkeiten mit VBA und GuiXT.

Momentan bin ich über den Rücklieferungsprozess bei uns drüber. Der Prozess schaut so aus.

1. Material auf Auftrag zurückbuchen (läuft schon automatisch)

2. Versand des Materials im Auftrag auslösen (läuft noch nicht)

Das Material wird in einer Tabelle dargestellt und das letzte umgebuchte Material ist immer ganz unten zu finden. Gibt es dann die Möglichkeit speziell nach der letzten Zeile zu suchen? Wenn ich das ganze aufnehme bringt er mir nur die Absolute Position.

oSession.FindById("wnd[0]/usr/subSUB_ALL:SAPLCOIH:3001/ssubSUB_LEVEL:SAPLCOIH:1101/tabsTS_1100/tabpMUEB/ssubSUB_AUFTRAG:SAPLCOMK:3020/tblSAPLCOMKTCTRL_3020").GetAbsoluteRow(343).Selected = -1

Viele Grüße

Venom

Mr_Venom
  • Mr_Venom
  • SAP Forum - Neuling Thema Starter
vor 5 Jahre
ich habe jetzt eine möglichkeit gefunden. Mit RowCount kann ich die Reihen zählen. Aber was ich komisch finde er macht immer 40 mehr 😕

Zitat:

numrRow = oSession.FindById("wnd[0]/usr/subSUB_ALL:SAPLCOIH:3001/ssubSUB_LEVEL:SAPLCOIH:1101/tabsTS_1100/tabpMUEB/ssubSUB_AUFTRAG:SAPLCOMK:3020/tblSAPLCOMKTCTRL_3020").RowCount

oSession.FindById("wnd[0]/usr/subSUB_ALL:SAPLCOIH:3001/ssubSUB_LEVEL:SAPLCOIH:1101/tabsTS_1100/tabpMUEB/ssubSUB_AUFTRAG:SAPLCOMK:3020/tblSAPLCOMKTCTRL_3020").VerticalScrollbar.Position = numrRow - 40

Saptimierer
vor 5 Jahre
Vorsicht vor absoluten Offsets wie "-40". SAP fügt immer einige leere Zeilen am Ende der Tabelle hinzu, damit man weitere Zeilen eingeben kann und zählt diese im RowCount mit.

Die Anzahl der leeren Zeilen ist aber leider nicht konstant, sondern richtet sich nach der sichtbaren Zeilenanzahl. Und diese kann sich bei einer Änderung der Fensterhöhe des GUI ebenfalls ändern.

Entweder, du sorgst für immer die gleiche Fensterhöhe oder identifizierst die letzte belegte Zeile anderweitig, z.B. statt "-40" mit

"- oSession.FindById("wnd[0]/usr/subSUB_ALL:SAPLCOIH:3001/ssubSUB_LEVEL:SAPLCOIH:1101/tabsTS_1100/tabpMUEB/ssubSUB_AUFTRAG:SAPLCOMK:3020/tblSAPLCOMKTCTRL_3020").VisibleRowCount - 1".

Je nach Transaktion hilft hier meist nur ausprobieren.

Mr_Venom
  • Mr_Venom
  • SAP Forum - Neuling Thema Starter
vor 5 Jahre
Danke für die Info. Ich habe es festgestellt.

Ich habe das ganze wie folgt jetzt gelöst.

Zitat:

numrRow = oSession.FindById("wnd[0]/usr/subSUB_ALL:SAPLCOIH:3001/ssubSUB_LEVEL:SAPLCOIH:1101/tabsTS_1100/tabpMUEB/ssubSUB_AUFTRAG:SAPLCOMK:3020/tblSAPLCOMKTCTRL_3020").RowCount

Do While ersteSchleife <= numrRow

numrRowVisible = oSession.FindById("wnd[0]/usr/subSUB_ALL:SAPLCOIH:3001/ssubSUB_LEVEL:SAPLCOIH:1101/tabsTS_1100/tabpMUEB/ssubSUB_AUFTRAG:SAPLCOMK:3020/tblSAPLCOMKTCTRL_3020").VisibleRowCount

oSession.FindById("wnd[0]/usr/subSUB_ALL:SAPLCOIH:3001/ssubSUB_LEVEL:SAPLCOIH:1101/tabsTS_1100/tabpMUEB/ssubSUB_AUFTRAG:SAPLCOMK:3020/tblSAPLCOMKTCTRL_3020").VerticalScrollbar.Position = ersteSchleife

Do While zweiteSchleife < numrRowVisible

If oSession.FindById("wnd[0]/usr/subSUB_ALL:SAPLCOIH:3001/ssubSUB_LEVEL:SAPLCOIH:1101/tabsTS_1100/tabpMUEB/ssubSUB_AUFTRAG:SAPLCOMK:3020/tblSAPLCOMKTCTRL_3020/ctxtRESBD-MATNR[1," & zweiteSchleife & "]").Text <> "" Then

gesuchteZeile = gesuchteZeile + 1

zweiteSchleife = zweiteSchleife + 1

Else

zweiteSchleife = numrRowVisible

ersteSchleife = numrRow

End If

Loop

zweiteSchleife = 0

If ersteSchleife > numrRow Then

gesuchteZeile = gesuchteZeile + oSession.FindById("wnd[0]/usr/subSUB_ALL:SAPLCOIH:3001/ssubSUB_LEVEL:SAPLCOIH:1101/tabsTS_1100/tabpMUEB/ssubSUB_AUFTRAG:SAPLCOMK:3020/tblSAPLCOMKTCTRL_3020").VisibleRowCount

End If

ersteSchleife = ersteSchleife + oSession.FindById("wnd[0]/usr/subSUB_ALL:SAPLCOIH:3001/ssubSUB_LEVEL:SAPLCOIH:1101/tabsTS_1100/tabpMUEB/ssubSUB_AUFTRAG:SAPLCOMK:3020/tblSAPLCOMKTCTRL_3020").VisibleRowCount

Loop

Funktioniert. Vllt nicht ganz so schön aber es klappt wunderbar 😃