Hallo Maxemilan,
wie angekündigt erscheint hier unsere Fachdiskussion, damit u.U. auch andere Interessierte daran teilnehmen können.
Hinweis: Der jüngste Beitrag befindet sich ganz oben.
Freundliche Grüße
ScriptMan
----------------------------------------------------------
Hallo SkriptMan,
vielen Dank für deine Hilfe. Ich werde versuchen, bei Gelegenheit so eine Systemmessage-Schließung per Skript aufzuzeichnen.
Ich bin bisher davon ausgegangen, dass unsere Fachdiskussion nicht interessant genug für das Forum ist. Soll ich diese nun einfach in das Forum posten? Wie war das gemeint?
Schönes Wochenende!
----------------------------------------------------------
Betreff: Aw: AW: AW: Re: Re: Deine SAP-Excel-Schnittstelle
Hallo Maximilian,
ich kenne keine Möglichkeit, wie man die Systemnachrichten abschalten könnte. Aber wie gesagt, mit SAP GUI Scripting kann man auch dieses Problem lösen:
1. Jede Systemnachricht, die vorkommt, muss zuerst aufgezeichnet werden. Und zwar das Kommando, wie man sie aus dem Weg schafft, damit das Skript weiter arbeiten kann.
2. Danach wird dieses Skript (meistens nur eine Zeile mit .press am Ende) genau an der Stelle im vorhanden Skript eingebaut, wo diese Systemnachricht ab und zu vorkommt. Und zwar wie folgt:
on error resume next
session.findById(......).press 'symbolisch für das aufgezeichnete Kommando / Skript
on error goto 0
Ich bin der Meinung, dass wir unsere Fachdiskussion im SAP-Forum veröffentlichen sollten, damit auch andere davon partizipieren können.
Freundliche Grüße
ScriptMan
------------------------------------------------------
Betreff: AW: AW: Re: Re: Deine SAP-Excel-Schnittstelle
Hallo SkriptMan,
klappt super, vielen Dank!
Was leider ab und zu stört, sind Systemnachrichten von SAP. Die legen nämlich das ganze Skript lahm, wenn Sie nach dem Login etc. erscheinen.
Weißt du, ob man die unterdrücken kann?
------------------------------------------------------
Betreff: Aw: AW: Re: Re: Deine SAP-Excel-Schnittstelle
Hallo Maximilian,
Es ist vollkommen egal, aus welcher Anwendung du SAP zwingst, mit dir zu reden. Hauptsache es redet mit dir.
Wenn du jetzt soweit bist, kannst du auch die Messagebox deaktivieren, damit es wirklich automatisch durchläuft. Schreib stattdessen an das Ende deines Codes folgende Befehle:
set SAPSesi = Nothing
set oConnection = Nothing
set SapGuiApp = Nothing
Damach dürfte sich Excel nicht verabschieden.
Freundliche Grüße
ScriptMan
--------------------------------------------------
Betreff: AW: Re: Re: Deine SAP-Excel-Schnittstelle
Hallo SkriptMan,
ich hab das soweit hinbekommen!
Ist es sinnvoll, den Code in meiner Excel-VBA Anwendung einzubauen? Ich habe das gestern bereits soweit hinbekommen, dass eigentlich alles ordentlich durchgespielt wird über VBA, jedoch habe ich aktuell das Problem, dass am Ende der Transaktion (nach dem Klicken auf Ok) sich Excel komplett schließt (Ohne Nachfrage, stürzt einfach ab). Muss ich eventuell die Variable irgendwie befreien? Mhh... ich kenn mich da leider nicht so gut aus.
Ich habe dir den Code "partSAP" mal in den Anhang gelegt.
Vielen Dank für deine Hilfe.
--------------------------------------------------
Betreff: Aw: Re: Re: Deine SAP-Excel-Schnittstelle
Hallo Maximilian,
der angehängte Code ist kein VBA sondern VBS stammend zum großen Teil vom SAP Skriptrecorder.
Wenn du schreibst, dass du erstellte VBS Skripte von SAP mit diesem Makro ausführen willst, würde es bedeuten, dass du bereits in der Lage bist, VBS-Skripte im SAP aufzuzeichnen. Oder? Dann verstehe ich aber nicht, warum dir der Code nichts sagt.
Probiere u.U. folgendes und schreibe folgende Zeilen mit deinen konkreten Parametern z.B. in eine test.vbs.
If Not IsObject(SAPguiApp) Then
Set SAPguiApp = CreateObject("Sapgui.ScriptingCtrl.1")
End If
If Not IsObject(Connection) Then
Set Connection = SAPguiApp.OpenConnection("deine Systembezeichnung wie im SAP Logon", True)
End If
If Not IsObject(Session) Then
Set Session = Connection.Children(0)
End If
'Durch deine Parameter zu ersetzen
Session.findById("wnd[0]/usr/txtRSYST-MANDT").Text = "dein Mandant"
Session.findById("wnd[0]/usr/txtRSYST-BNAME").Text = "dein Name"
Session.findById("wnd[0]/usr/pwdRSYST-BCODE").Text = "dein PW"
Session.findById("wnd[0]/usr/txtRSYST-LANGU").Text = "DE"
Session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/tbar[0]/okcd").text = "/n" & "deine Transaktion"
session.findById("wnd[0]").sendVKey 0
MsgBox "Nach dem Klicken auf OK wird die SAP Session beendet."
Lass mal SAP zu und starte z.B. aus dem Windows Explorer die erstellte test.vbs. SAP müsste sich im klassischen Design öffnen und die eingestellte Transaktion starten. Wenn du es zum Laufen gebracht hast, kannst du dich wieder melden.
Freundliche Grüße
ScriptMan
----------------------------------------------
Betreff: Re: Re: Deine SAP-Excel-Schnittstelle
Hallo SkriptMan,
ich hab mich nun ein wenig mit dem Thema befasst, allerdings ist die Materie etwas schwierig für mich.
Im SAP Forum habe ich einen Code von dir gefunden. Diesen habe ich versucht zu übernehmen.
Leider erhalte ich einige Fehler, ich habe daher die betroffenen Stellen mit ' deaktiviert.
Kannst du mir sagen, ob die für mich wichtig sind? Wie gesagt, ich will erstellte VBS Skripte von SAP mit diesem Makro ausführen, mehr nicht.
Ich wäre dir sehr dankbar, wenn du da mal kurz drüber sehen könntest.
Ich bin leider nicht zu sehr bewandert mit VBA, verstehe also nur kleine Teile des Codes.
Mit freundlichen Grüßen
Maximilian
---------------------------------------------------------
Hallo SkriptMan,
vielen Dank!! Ich check das alles mal durch.
Beste Grüße,
Maximilian
----------------------------------------------------
Hallo Maximilian,
mit SAP GUI Scripting konnte ich bis jetzt alles realisieren. Mir sind keine Einschränkungen bekannt. Klar aber, dass SAP GUI Scripting am Client erlaubt sein muss (Lokales Layout anpassen ALT / F12 -> Optionen -> Barierefreiheit & Scripting -> Scripting -> KZ bei Scripting aktivieren und keine KZ bei Benachrichtigen wenn ...).
Im WEB gibt es unzählige Beispiele. Ich denke aber, dass du dir z.B. folgendes Forum zu Gemüte ziehen solltest:
http://scn.sap.com/community/scripting-languages
Dort kannst du z.B. nach "ScriptingCtrl.1" suchen, danach nach Date: newest first sortieren und z.B. nur Diskusionen von oben nach unten komplett durchlesen und die Beispiele mit deinem Anwendungsfall abgleichen.
Ich hoffe, dass du damit erstmal genug Material zum Durcharbeiten bekommen hast.
Freundliche Grüße
ScriptMan
--------------------------------------------------
Betreff: Re: Deine SAP-Excel-Schnittstelle
Hallo Skriptman!
Zunächst vielen Dank für deine Antwort!
GUI Scripting habe ich daher ausgeschlossen, da ich ohne Erfahrung davon ausgegangen bin, dass es zu Problemen führen kann, wenn man es auf verschiedenen SAP Anwendungen benutzt.
Wie ist deine Meinung als erfahrener Nutzer hierüber?
Ich denke da an Probleme wie verschiedene "Sichten" im SAP. Aber um dies zu verhindern könnte man ja mit dem Skript eine vorher entworfene Sicht aktivieren, oder?
Müsste dann VBA quasi nur das zuvor mit SAP aufgenommene Skript starten? Hast du hierfür ein kleines Beispiel?
Beste Grüße aus dem heute wolkigen Regensburg,
----------------------------------------------------
Hallo Maxemilian,
gerade jetzt habe ich an dich eine Post über dv-treff verfasst. Nichtwissend, dass ich eine Email von dir vorfinde.
Ich habe einige Schnittstellen zwischen SAP und non SAP entwickelt. Du kannst es bestimmt auch, wenn du von mir einige Hinweise bekommst. Dazu musst du nur bereit sein, dich mit dem Thema SAP GUI Scripting auseinanderzusetzen und anschließend konkrete Fragen stellen.
Freundliche Grüße aus Dresden
ScriptMan
--------------------------------------------------
Betreff: Deine SAP-Excel-Schnittstelle
Servus SkriptMan,
mit großen Interesse habe ich deine Posts im SAP bezüglich der Schnittstellen verfolgt.
Ich bin in VBA mittelmäßig ausgebildet und habe aktuell ein Skript, das in der Mitte aller Arbeitsschritte Daten aus dem SAP benötigt.
Daher habe ich das Skript aktuell so gestaltet:
Automatischer Schritt 1
Manuell in SAP die Daten holen
Automatischer Schritt 2
Ziel soll es sein, auch den SAP-Schritt zu automatisieren.
Nun wollte ich dich fragen, ob ich deine Schnittstelle hierzu nutzen darf bzw. ob du sie aus der Hand gibst.
Über eine Email würde ich mich sehr freuen:
Viele Grüße aus Regensburg,
Maximilian