SAP Automatisierung im Hintergrund

  • Hallo zusammen,

    beschäftige mich seit kurzer Zeit mit AutoIT und habe schon einige Fortschritte gemacht. Zur Zeit benötigen wir auf der Arbeit ein Tool, was Antwortzeiten einer Webanwendung protokolliert. Soweit so gut, dass habe ich geschafft.
    Bei dieser Anwendung wird ein SAP Baustein aufgerufen. Diese Zeit soll nun auch gelogged werden. Das habe ich auch geschafft. Nun soll die SAP Automatisierung aber auch im Hintergrund laufen. Ist das überhaupt möglich?
    Und wenn ja kann mir jemand da ein paar Tipps zu geben? Ich versuch mal meinen Code anzuhängen:
    Ist sehr einfach gehalten, da wir schnell ein Ergebnis brauchten.

    Spoiler anzeigen

    Run("C:\Program Files\SAP\FrontEnd\SAPgui\saplogon.exe")
    _WinWaitActivate("SAP Logon 710","")
    Send("{ENTER}")
    _WinWaitActivate("SAP","")
    Send("USER{TAB}PASSWORT{ENTER}")
    _WinWaitActivate("SAP Easy Access","")
    Send("SE37{ENTER}")
    _WinWaitActivate("Function Builder: Einstieg","")
    Send("bapi_salesorder_simulate{F8}")
    _WinWaitActivate("Funktionsbaustein testen: Eingabebild","")
    Send("^+{F6}")
    _WinWaitActivate("Testdatenverzeichnis: Einzeltests","")
    ControlClick("Testdatenverzeichnis: Einzeltests","",100,"left",2,400,90)
    _WinWaitActivate("Funktionsbaustein testen: Eingabebild","")
    Send("{F8}")
    _WinWaitActivate("Funktionsbaustein testen: Ergebnisbild","")
    $size = WinGetPos("[active]")
    Send("{CTRLDOWN}y{CTRLUP}")
    MouseMove($size[0]+121,$size[1]+206)
    MouseDown("left")
    MouseMove($size[0]+157,$size[1]+206)
    MouseUp("left")
    Sleep(500)
    Send("{CTRLDOWN}c{CTRLUP}")
    $time = ClipGet()
    $time = StringReplace($time,".", "")
    _LogInFile($scriptdir, $scriptname, "FUBA BAPI_SALESORDER_SIMULATE;Aufuf BAPI in SAP" , $time)
    WinClose("[active]")
    _WinWaitActivate("SAP Logon 710","")
    WinClose("[active]", "")

  • Schon mal vielen Dank, da hab ich schon mal dran gedacht, hab auch schon kurz was zu gelesen. Aber dachte es gibt schon was wie beim IE evtl. da kann man ja einfach dem IECreate zwei Variablen mitgeben.
    Bei Erfolg melde ich mich. Das Programm soll mich halt sogesehen nicht beim Arbeiten stören.

    Gruß GreS

  • Ist es denn möglich folgende Passage im Hintergrund abzubilden?

    [autoit]


    MouseMove($size[0]+121,$size[1]+206)
    MouseDown("left")
    MouseMove($size[0]+157,$size[1]+206)
    MouseUp("left")

    [/autoit]
  • Ich bin der Meinung das nichts griffiges im Info Tool steht. Ich möchte im Endeffekt an die Laufzeit in angehängtem Bild rankommen.

    Hier der Auszug aus dem Window Info Tool

    Spoiler anzeigen

    >>>> Window <<<<
    Title: Funktionsbaustein testen: Ergebnisbild
    Class: SAP_FRONTEND_SESSION
    Position: 719, 30
    Size: 948, 962
    Style: 0x160F0000
    ExStyle: 0x00000110
    Handle: 0x000B14E4

    >>>> Control <<<<
    Class: Afx:5FB40000:1008
    Instance: 1
    ClassnameNN: Afx:5FB40000:10081
    Name:
    Advanced (Class): [CLASS:Afx:5FB40000:1008; INSTANCE:1]
    ID: 100
    Text:
    Position: 0, 96
    Size: 940, 798
    ControlClick Coords: 257, 121
    Style: 0x56300000
    ExStyle: 0x00000010
    Handle: 0x00071494

    >>>> Mouse <<<<
    Position: 261, 252
    Cursor ID: 0
    Color: 0xE7EBF7

    >>>> StatusBar <<<<

    >>>> ToolsBar <<<<

    >>>> Visible Text <<<<


    >>>> Hidden Text <<<<
    Custom Container
    Control Container
    SplitterFrame
    Custom Container
    Control Container
    SAP's Advanced Treelist
    Custom Container

  • Sieht so aus ?(
    Vielleicht schaut aber noch jemand vorbei der sich damit besser auskennt ...

    Bietet die SAP-Software keine Schnittstelle um an diese Infos zu kommen?
    Mausklickerskripte sind nämlich eine äußerst wacklige Angelegenheit. :whistling:

  • Quasi genau diese Schnittstelle soll ja überprüft werden.
    Das Mausklicker Skripte nicht die schöne Variante sind kann ich mir vorstellen, also schonmal Danke für deine Hilfe.
    Vielleicht kommt ja wirklich noch jemand der einem mehr helfen kann.

    Gruß

  • VIelen Dank für die Tipps schon mal.

    Aktuell haben wir einen extra Rechner für die Überwachung, deswegen ist es auch nicht so dringend, aber interessieren würde es mich schon.
    Mit ControlClick funktioniert ja, nur ich muss ja einen bestimmten Text markieren und dafür bräuchte ich quasi ein "ControlMoveMouse" oder sowas ;)

    Wenn ich an den Text der dargstellt wird rankommen würde, würde mir das ja auch schon helfen, dann kann man sich den Bereich ja rausziehen.

    Gruß

  • Hallo Gres,

    Zitat von Gres

    Wenn ich an den Text der dargstellt wird rankommen würde, würde mir das ja auch schon helfen, dann kann man sich den Bereich ja rausziehen.

    Hast du es schon mit ControlGetText versucht,

    mfg (Auto)Bert

  • Hallo,
    teste auch mal, ob sich der Fensterinhalt der SAP-Anwendung händisch per CTRL-C (Copy) ermitteln lässt, bzw was man als Ergebnis dieser Copy erhält.

  • Aktuell mache ich es über CTRL-C. Aber das legt es mir ja in die aktive Zwischenablage und ist somit nicht im Hintergrund.

    Bzw. im SAP gibt es einen Befehl (CTRL-Y) der es einem erlaubt Text zu markieren und dann mittels CTRL-C zu kopieren. Ist aber auch nicht so schön.

    Interessieren tut es mich schon noch, aber verzweifeln tue ich nicht gerade dran.

  • Ach und zum Thema ControlGetText. Man bekommt dadurch nur den Visible Text. Und der ist leer. Siehe WindowInfo.

    Gruß GreS

  • Der Test per CTRL+C sollte nur prüfen, ob du überhaupt an den "Text" kommst, das klappt jedenfalls schonmal.

    Zitat

    Wenn ich an den Text der dargstellt wird rankommen würde, würde mir das ja auch schon helfen, dann kann man sich den Bereich ja rausziehen.

    Wo ist dann das Problem?
    Mit

    [autoit]

    $text=clipget()

    [/autoit]

    bekommst du doch den Text ins AutoIt....

    Aber irgendwie muss ja die Ctrl-C-Funktion an den SAP-Fensterinhalt kommen, ggf. über eine der 32000 (teils undokumentierten) API-Funktionen :rofl:

  • Wo das Problem ist?

    - Der PC auf dem das Skript läuft muss immer offen sein, darf also nicht minimiert sein
    - Während das SAP-Skript läuft können keinen anderen Aktivitäten ausgeführt werden, sonst wird das Skript behindert.

    Aber das hatte ich schon geschrieben.

    Hab das Gefühl wir reden ein wenig aneinander vorbei...

    Aber trotzdem danke für die Unterstützung

    Gruß GreS