Thema Datum  Von Nutzer Rating
Antwort
Rot Makro abwarten bis Transaktion ausgeführt (SAP Export)
19.12.2021 09:30:50 Hausi
NotSolved
19.12.2021 09:44:32 Mase
NotSolved
19.12.2021 10:27:26 volti
NotSolved
20.12.2021 20:12:03 Gast62619
NotSolved
18.01.2022 13:26:39 Gast2156
*****
Solved
18.01.2022 18:55:01 xlKing
NotSolved

Ansicht des Beitrags:
Von:
Hausi
Datum:
19.12.2021 09:30:50
Views:
164
Rating: Antwort:
  Ja
Thema:
Makro abwarten bis Transaktion ausgeführt (SAP Export)

Hallo zusammen

Ich exportiere Daten aus SAP in ein Excel «Export-File», welches ich bei jedem Export wieder überschreibe. Nachfolgender Code dazu funktioniert. Das Resultat ist ein geöffnetes Excel mit den Daten. Das ganz mache ich mit einem Makro, welches vom Excel «Master-File» aus ausgeführt wird, da ich anschliessend im «Master-File» noch weitere Bearbeitungsschritte ausführen will.

Sub complete_process()
'Run_SAP_Script
'folgenden Block fix setzen

    Dim SapGuiAuto As Object
    Dim SAPApp As Object
    Dim SAPCon As Object
    Dim session As Object

    Set SapGuiAuto = GetObject("SAPGUI")
    Set SAPApp = SapGuiAuto.GetScriptingEngine
    Set SAPCon = SAPApp.Children(0)
    Set session = SAPCon.Children.ElementAt(0)

'ab hier mein SAP Skript

session.findById("wnd[0]").maximize
session.findById("wnd[0]/usr/cntlIMAGE_CONTAINER/shellcont/shell/shellcont[0]/shell").selectedNode = "F00182"
session.findById("wnd[0]/usr/cntlIMAGE_CONTAINER/shellcont/shell/shellcont[0]/shell").doubleClickNode "F00182"
session.findById("wnd[0]/tbar[1]/btn[17]").press
session.findById("wnd[1]/tbar[0]/btn[8]").press
session.findById("wnd[1]/usr/cntlALV_CONTAINER_1/shellcont/shell").currentCellRow = 1
session.findById("wnd[1]/usr/cntlALV_CONTAINER_1/shellcont/shell").selectedRows = "1"
session.findById("wnd[1]/usr/cntlALV_CONTAINER_1/shellcont/shell").doubleClickCurrentCell
session.findById("wnd[0]/tbar[1]/btn[8]").press
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell/shellcont[1]/shell").setCurrentCell 8, "TEXT"
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell/shellcont[1]/shell").selectedRows = "8"
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell/shellcont[1]/shell").contextMenu
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell/shellcont[1]/shell").selectContextMenuItem "&XXL"
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[1]/usr/ctxtDY_PATH").SetFocus
session.findById("wnd[1]/usr/ctxtDY_PATH").caretPosition = 8
session.findById("wnd[1]").sendVKey 4
session.findById("wnd[2]/usr/ctxtDY_PATH").Text = "T:\\Pfad1"
session.findById("wnd[2]").sendVKey 4
session.findById("wnd[3]/usr/ctxtDY_FILENAME").Text = "Export-File.XLSX"
session.findById("wnd[3]/usr/ctxtDY_FILENAME").caretPosition = 38
session.findById("wnd[3]/tbar[0]/btn[11]").press
session.findById("wnd[2]").Close
session.findById("wnd[1]/usr/ctxtDY_FILENAME").SetFocus
session.findById("wnd[1]/usr/ctxtDY_FILENAME").caretPosition = 43
session.findById("wnd[1]/tbar[0]/btn[11]").press

End Sub

In einem zweiten Makro, welches ich ebenfalls vom «Master File» aus ausführe, habe ich programmiert, das «Export-File» nach dem SAP-Export abzuspeichern und zu schliessen. Dieses Makro funktioniert für sich auch gut.

Sub close_Export_file
' Makro Close_Export_file
Workbooks("Export-File.xlsx").Close SaveChanges:=True
End Sub

Mein Problem ist nun aber wenn ich die beiden Codes im Makro des «Master-Files» zusammenführe, funktioniert dies nicht mehr, da das Makro das «Export-File» bereits schliessen will, bevor es aus SAP exportiert werden konnte. Wie könnte ich dies lösen?

Mit etwas Recherche bin ich auf folgenden Code mit gestossen, der das Makro pausieren lässt. Dies hat aber auch nicht geholfen, da während des Pausierens offenbar auch der SAP-Export pausiert wurde. Der Fehler blieb somit derselbe.

sub appl_wait
Application.Wait (Now + TimeValue("0:00:50"))
End Sub

Wie ihr vielleicht merkt, bin ich eher Anfänger, falls ihr Tips habt, wie das Ganze einfacher gelöst werden kann, bin ich dafür natürlich auch dankbar.

Vielen Dank.

Hausi


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:

 
 

  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Makro abwarten bis Transaktion ausgeführt (SAP Export)
19.12.2021 09:30:50 Hausi
NotSolved
19.12.2021 09:44:32 Mase
NotSolved
19.12.2021 10:27:26 volti
NotSolved
20.12.2021 20:12:03 Gast62619
NotSolved
18.01.2022 13:26:39 Gast2156
*****
Solved
18.01.2022 18:55:01 xlKing
NotSolved