Verbindung mit SAP

  • Excel

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von abl489.

    Verbindung mit SAP

    Guten Tag,

    ich habe in der Firma die Möglichkeit in SAP mit Scripting zu arbeiten.
    Dabei wird ja exakt aufgenommen, was ich während der Aufnahme in SAP mache und in ein VB-Skript umgewandelt.

    Soweit so gut. Ruf ich das Skript in Sap auf, so führt er dies auch genau aus.

    Mein Problem nun: ich hätte das gerne in Excel integriert. Wie und mit welchem Code "spreche ich SAP an"?

    Es ist nicht kompliziertes. Er soll lediglich eine Transaktion ausführen und einige Parameter eingeben. Das Ergebnis ist eine Tabelle, die dann in Excel importiert werden soll.
    Das steht auch alles schon im Skript.

    Mein Problem ist lediglich das aufrufen. Wenn ich zum Beispiel per Button das Skript aufrufe, passiert nichts.

    Jemand eine Idee?
    Vielen Dank!!
    Ich nehme mal an, dass das Script irgenwelche SAP-Objekte benötigt, die du innerhalb SAP hast, aber in Excel natürlich nicht.
    Du kannst auch nicht ohne weiteres ein Word-VBA-Script in Excel ausführen, wenn dieses Word-Objekte verwendet.
    Ggf. müsstest du ein SAP Application Object erzeugen, aus dem du die anderen verwendeten Objekte ableitest.

    Wie sieht denn das Script aus?
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    abl489 schrieb:

    spreche ich SAP an
    Das hatten wir doch schon einmal: Projekt Störung

    (Für VBA - also das, was du bekommst, wenn du in Excel/Word/Powerpoint Alt + F11 klickst)
    Wie schon damals gesagt:
    1.) Referenz auf den SAP Client einfügen
    2.) Set myObj = CreateObject("SAP.Functions) aufrufen
    3.) Auf myObj die Funktionen aufrufen.

    Hier von @petaod die Links:
    Projekt Störung

    Lg Radinator
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell
    Hey,

    ja das der Thread war damals sogar von mir :) Aber da hat leider keiner mehr geantwortet, deshalb habe ich ein neues konkretes Thema aufgemacht

    Der Code lautet:
    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]").resizeWorkingPane 232,38,false
    session.findById("wnd[0]/tbar[0]/okcd").text = "coois"
    session.findById("wnd[0]").sendVKey 0


    Damit würde er jetzt nur eine Transaktion aufrufen, aber wenn das über Excel funktioniert könnte ich mir den Rest selbst erarbeiten.

    Bei mir kommen ständig Fehlermeldungen. Selbst wenn ich alle Variablen deklariere kommt am Ende ein Laufzeitfehler.

    Hat jemand eine Ahnung wie genau der Code umgeschrieben werden müsste?

    @Radinator: das was du meinst verstehe ich leider 0 und kann es dadurch auch nicht anwenden. Wie müsste das denn aussehen in diesem Fall?

    Ziel: Eine Userform mit entsprechenden Button. Bei Betätigung führt er dann den code aus.

    Ich bin wirklich so doll am verzweifeln daran...

    Das Skript, welches SAP ausspuckt hat die Eigenschaft: VBScript-Skriptdatei (.vbs)

    Nochmal ein Nachschub wie damals: MEIN SAP LÄUFT ÜBER CITRIX. Macht das einen Unterschied?

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „abl489“ ()

    Erstens: Kannst du bitte Code-Tags verwenden? Das da oben kann ja kein Mensch lesen ;D

    abl489 schrieb:

    ständig Fehlermeldungen
    Welche? Bitte Screenshots posten oder die Meldung zitieren

    abl489 schrieb:

    Ende ein Laufzeitfehler
    Schon mal im Step-by-Step Modus durchgegangen und geschaut WO die Meldung aufploppt? (Cursor auf Methodenkopf navigieren und F9 drücken, F5/Button betätigen und dann per F8 weiter)

    abl489 schrieb:

    verstehe ich leider 0
    Was genau verstehst du nicht?

    abl489 schrieb:

    Das Skript, welches SAP ausspuckt
    Das ist jetzt neu. Bitte erläutern

    abl489 schrieb:

    VBScript-Skriptdatei (.vbs)
    Ist was anderes als VBA!

    abl489 schrieb:

    MEIN SAP LÄUFT ÜBER CITRIX. Macht das einen Unterschied
    Diese Frage gebe ich gerne weiter

    Lg Radinator
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell
    Naja den Code von Sap hab ich doch oben schon hingeschrieben.. Der kommt raus, wenn man SAP Scripting benutzt.

    IN VBA eingesetzt sieht das bei mir so aus:
    Sub Schaltfläche1_Klicken()
    If Not IsObject(sApApplication) Then
    Set SapGuiAuto = GetObject("SAPGUI")
    Set sApApplication = 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]").resizeWorkingPane 232, 38, False
    session.findById("wnd[0]/tbar[0]/okcd").Text = "coois"
    session.findById("wnd[0]").sendVKey 0

    End Sub


    PROBLEM: Fehler direkt hier : Set SapGuiAuto = GetObject("SAPGUI") _ Laufzeitfehler, ungültige Syntax, Automatiesierungsfehler

    Ich glaube bei mir liegt das Problem tatsächlich bei Citrix,aber wie umgehe ich das?

    abl489 schrieb:

    Ich glaube bei mir liegt das Problem tatsächlich bei Citrix,aber wie umgehe ich das?
    Das hatten wir doch auch schon.
    Du kannst nicht aus der Citrix-Sandbox ausbrechen.
    Excel und SAP muss in derselben Umgebung ablaufen.
    Wenn eines davon (oder beide) als isolierte Citrix-Anwendung läuft, dann können sie sich gegenseitig nicht sehen.

    Sprich mit euren Experten für Anwendungs-Virtualisierung, wie du in eurer Umgebung einen Ausweg aus dem Dilemma finden kannst.
    Eine Möglichkeit könnte sein, dass beides innerhalb eines Citrix-Desktop läuft.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Die rettende Antwort!!

    Vielen lieben Dank! Das war nun klar ausgedrückt :D
    Haben nun Excel über Citrix laufen lassen.. und?
    TAAAADA es funktioniert!!!

    Danke!
    Hammer :D Hatte schon Angst, dass der Tag komplett verschwendet war, aber so habe ich doch was sinnvolles geschafft :D Danke, danke, danke!