SAP Jobsuche bei DV-Treff
Maxemilan
  • Maxemilan
  • SAP Forum - Neuling Thema Starter
vor 12 Jahre
Hallo! Ich bin mir jetzt nicht ganz sicher, ob ich richtig bin oder ob das überhaupt möglich ist....

Ich habe ein Recht komplexes VBA Skript, das verschiedene logistische Auswertungen bearbeitet. Aktuell ist das Skript geteilt. Zuerst kommt Teil A, der mir dann verschiedene Materialnummern für SAP gibt.

Mit diesen Materialnummern muss ich zwei Anfragen in SAP übergeben und die Ergebnisse als Tabellenkalkulation speichern. Erst dann funktioniert Teil B meines VBA Skripts.

Ziel ist es, dass ich zwischen Teil A und Teil B einen Teil einbaue, der die SAP aufgaben für mich erledigt.

Ich habe nun überlegt, die Skriptingfuntkion von SAP zu nutzen, halte das aber langfristig für nicht zielführend (da verschiedene Arbeitsplätze etc. betroffen sind)

Wie würdet ihr denn da vorgehen?

Danke für die Tipps 😉 & viele Grüße aus Regensburg

ScriptMan
vor 12 Jahre
Hallo Maxemilan,

die beschriebene Konstellation eignet sich bestens für SAP GUI Scripting oder auch für GuiXT-Skripte. Wie man es umsetzt (VBA, VBS oder EXE), ist eine andere Frage.

Schade, dass du diese Möglichkeit von Anfang an ausschließt.

Freundliche Grüße

ScriptMan

Maxemilan
  • Maxemilan
  • SAP Forum - Neuling Thema Starter
vor 12 Jahre
Dann rudere ich zurück 😉
ScriptMan
vor 12 Jahre
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