none
Codezeile in VB 2010 wird nicht ausgeführt RRS feed

  • Frage

  • Hallo!

    Folgende Codezeilen werden in VB 2010 nicht ausgeführt. Da diese nicht erkannt werden. Mit diesen Zeilen wird eine SAP Transaktion ausgeführt. In VBA Skript wird dieser Code einwandfrei ausgeführt. Bitte können Sie mir mitteilen, welche SAP Bibliotheken ich in VB 2010 einbinden muss. Damit das Programm auch läuft. Der Code steht in einer eigenen Class in einer eigenen Methode.

    Der Code:

        Dim SapGuiAuto As Object
        Dim application As Object
        Dim connection As Object
        Dim session As Object
        Dim WScript As Object
    
        Private _isObject As Boolean
    
        If Not IsObject(application) Then
          SapGuiAuto = GetObject("SAPGUI")
          application = SapGuiAuto.GetScriptingEngine
        End If
    
        If Not IsObject(connection) Then
          connection = application.Children(0)
        End If
    
        If Not IsObject(session) Then
          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(97, 20, False) '//hier ist der Fehler!!!!!!! Ab hier läuft nichts mehr. Bitte Hilfe.
        session.findById("wnd[0]/tbar[0]/okcd").text = "/nfpcr2"
        session.findById("wnd[0]").sendVKey(0)

    Code Ende

    Danke.

    LG Peter

    Montag, 8. November 2010 13:42

Antworten

  • Hallo,

    da es anscheinend um SAP GUI geht, wäre Deine Frage wäre besser
    in einem SAP Forum aufgehoben, z. B.:
    http://forums.sdn.sap.com/forum.jspa?forumID=196

    Benötigt wird lt. kurzer Suche:
    http://www.sdn.sap.com/irj/sdn/sap-gui#section30

    Aber in einem SAP Forum wird man Dir dazu sicher besser Auskunft geben können.
    Studiere auch die dortigen Beiträge dort.

    Gruß Elmar

    Montag, 8. November 2010 14:54
  • Hallo Peter,

    wenn beim Debuggen die Codezeile erreicht wird, wird
    folgende Fehlermeldung geworfen:

    System.NullReferenceException wurde nicht behandelt.

    Diese Fehlermeldung ist doch ausreichend aussagekräftig.
    Sie besagt, dass in der betr. Codezeile eine Objektvariable
    vorkommt, die auf ein (noch) nicht instanziertes Objekt
    verweist, also "Nothing" ist.
    Schau Dir die betr. Codezeile genau an, prüfe die Werte
    aller darin vorkommenden Objektvariablen und diejenige
    welche den Wert Nothing hat, führt Dich zur ursächlichen
    Fehlerquelle, nämlich der noch nicht erfolgten Instanzierung.

    Gruß aus St.Georgen
    Peter Götz
    www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

    Freitag, 19. November 2010 12:36
  • Hallo Peter,

    Folgende Codezeilen werden in VB 2010 nicht ausgeführt. Da diese nicht erkannt werden. Mit diesen Zeilen wird eine SAP Transaktion ausgeführt. In VBA Skript wird dieser Code einwandfrei ausgeführt. Bitte können Sie mir mitteilen, welche SAP Bibliotheken ich in VB 2010 einbinden muss. Damit das Programm auch läuft. Der Code steht in einer eigenen Class in einer eigenen Methode.

    wäre es machbar, den Code nochmal einzustellen? So, dass man auch was lesen kann?

    Wenn ich das richtig verstanden habe, tritt irgendein Fehler in der Zeile:

      session.findById( "wnd[0]" ).resizeWorkingPane(97, 20, False)  'hier ist der Fehler!!!!!!! Ab hier läuft nichts mehr. Bitte Hilfe.

    auf. Es wäre sicherlich sinnvoll, die genaue und vollständige Fehlermeldung zu posten.

    Da kann ein Objekt null/nothing sein, "wnd[0]" wird ggfs. nicht gefunden, ...

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    • Als Antwort markiert PeterMP Montag, 24. Januar 2011 07:59
    Montag, 8. November 2010 14:33
    Moderator
  • Hallo PeterMP,

    Schau Dir mal die folgenden Links an. Vielleicht können sie Dir weiter helfen.

    Wie kann ich ein SAP Anbindung in Microsoft Visual Basic 2008 Express Edition erreichen?

    how to save a certain report in SAP using VB ?

    Was passiert wenn Du diese Zeile auslast oder anstatt session.findById("wnd[0]").resizeWorkingPane (97,20,false) einfach session.findById("wnd[0]").maximize verwendest? (http://searchsap.techtarget.com/feature/Step-5-Analyze-the-VBS-script)

    Grüße,

    Robert

    • Bearbeitet Robert Breitenhofer Dienstag, 16. November 2010 07:49 Formatierung
    • Als Antwort markiert PeterMP Montag, 24. Januar 2011 07:59
    Dienstag, 16. November 2010 07:48
  • Hallo Peter!

    Natürlich. so geht es. Da habe ich wahrschienlich vor lauter Codezeilen das wesentliche nicht gesehen.

    Danke.

    Grüße

    Peter

    • Als Antwort markiert PeterMP Montag, 24. Januar 2011 07:58
    Mittwoch, 15. Dezember 2010 11:51

Alle Antworten

  • Hallo Peter,

    Folgende Codezeilen werden in VB 2010 nicht ausgeführt. Da diese nicht erkannt werden. Mit diesen Zeilen wird eine SAP Transaktion ausgeführt. In VBA Skript wird dieser Code einwandfrei ausgeführt. Bitte können Sie mir mitteilen, welche SAP Bibliotheken ich in VB 2010 einbinden muss. Damit das Programm auch läuft. Der Code steht in einer eigenen Class in einer eigenen Methode.

    wäre es machbar, den Code nochmal einzustellen? So, dass man auch was lesen kann?

    Wenn ich das richtig verstanden habe, tritt irgendein Fehler in der Zeile:

      session.findById( "wnd[0]" ).resizeWorkingPane(97, 20, False)  'hier ist der Fehler!!!!!!! Ab hier läuft nichts mehr. Bitte Hilfe.

    auf. Es wäre sicherlich sinnvoll, die genaue und vollständige Fehlermeldung zu posten.

    Da kann ein Objekt null/nothing sein, "wnd[0]" wird ggfs. nicht gefunden, ...

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    • Als Antwort markiert PeterMP Montag, 24. Januar 2011 07:59
    Montag, 8. November 2010 14:33
    Moderator
  • Hallo,

    da es anscheinend um SAP GUI geht, wäre Deine Frage wäre besser
    in einem SAP Forum aufgehoben, z. B.:
    http://forums.sdn.sap.com/forum.jspa?forumID=196

    Benötigt wird lt. kurzer Suche:
    http://www.sdn.sap.com/irj/sdn/sap-gui#section30

    Aber in einem SAP Forum wird man Dir dazu sicher besser Auskunft geben können.
    Studiere auch die dortigen Beiträge dort.

    Gruß Elmar

    Montag, 8. November 2010 14:54
  • Hallo PeterMP,

    Schau Dir mal die folgenden Links an. Vielleicht können sie Dir weiter helfen.

    Wie kann ich ein SAP Anbindung in Microsoft Visual Basic 2008 Express Edition erreichen?

    how to save a certain report in SAP using VB ?

    Was passiert wenn Du diese Zeile auslast oder anstatt session.findById("wnd[0]").resizeWorkingPane (97,20,false) einfach session.findById("wnd[0]").maximize verwendest? (http://searchsap.techtarget.com/feature/Step-5-Analyze-the-VBS-script)

    Grüße,

    Robert

    • Bearbeitet Robert Breitenhofer Dienstag, 16. November 2010 07:49 Formatierung
    • Als Antwort markiert PeterMP Montag, 24. Januar 2011 07:59
    Dienstag, 16. November 2010 07:48
  • Hallo Robert,

    wenn beim Debuggen die Codezeile erreicht wird, wird folgende Fehlermeldung geworfen:

    System.NullReferenceException wurde nicht behandelt.
      Message=Die Objektvariable oder die With-Blockvariable wurde nicht festgelegt.
      Source=Microsoft.VisualBasic
      StackTrace:
           bei Microsoft.VisualBasic.CompilerServices.Symbols.Container..ctor(Object Instance)
           bei Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateGet(Object Instance, Type Type, String MemberName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean[] CopyBack)
           bei WindowsApplication1.CBonität.BONDel() in C:\Dokumente und Einstellungen\ui2q7ew\eigene dateien\visual studio 2010\Projects\SAPZugriffTest1\SAPZugriffTest1\Bonität.vb:Zeile 31.
           bei WindowsApplication1.Form1.btnBonDel_Click(Object sender, EventArgs e) in C:\Dokumente und Einstellungen\ui2q7ew\eigene dateien\visual studio 2010\Projects\SAPZugriffTest1\SAPZugriffTest1\Form1.vb:Zeile 8.
           bei System.Windows.Forms.Control.OnClick(EventArgs e)
           bei System.Windows.Forms.Button.OnClick(EventArgs e)
           bei System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
           bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
           bei System.Windows.Forms.Control.WndProc(Message& m)
           bei System.Windows.Forms.ButtonBase.WndProc(Message& m)
           bei System.Windows.Forms.Button.WndProc(Message& m)
           bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
           bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
           bei System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
           bei System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
           bei System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
           bei System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
           bei System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
           bei System.Windows.Forms.Application.Run(ApplicationContext context)
           bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
           bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
           bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
           bei WindowsApplication1.My.MyApplication.Main(String[] Args) in 17d14f5c-a337-4978-8281-53493378c1071.vb:Zeile 81.
           bei System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
           bei System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
           bei Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
           bei System.Threading.ThreadHelper.ThreadStart_Context(Object state)
           bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
           bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
           bei System.Threading.ThreadHelper.ThreadStart()
      InnerException:

    Meldung Ende.

    Kann es sein, dass ich eine bestimmte SAP-Bibliothek einbinden muss, aber welche?

    Jetzt fragst Du Dich sicher, warum ich gerade den Code in VB.Net schreiben will. Wo dies doch in SAP-Skript so gut funktioniert. Nun ich muss mit VB.Net nicht nur SAP sondern auch  MS-Outlook und MS-Excel steuern. Die fertigen Module gibt es schon und die funktionieren auch. Aber eben nur einzeln, als SAP Skript und VB.Net. Daher will ich mit VB.Net eine zentrale Steuerungseinheit schreiben. Wenn ich die Codezeilen aus SAP Skript in VB.NET 2010 übertrage, wird die Fehlermeldung erst beim Debuggen geworfen.

    Grüße
    Peter

    Dienstag, 16. November 2010 12:59
  • Hallo Peter,

    wenn beim Debuggen die Codezeile erreicht wird, wird
    folgende Fehlermeldung geworfen:

    System.NullReferenceException wurde nicht behandelt.

    Diese Fehlermeldung ist doch ausreichend aussagekräftig.
    Sie besagt, dass in der betr. Codezeile eine Objektvariable
    vorkommt, die auf ein (noch) nicht instanziertes Objekt
    verweist, also "Nothing" ist.
    Schau Dir die betr. Codezeile genau an, prüfe die Werte
    aller darin vorkommenden Objektvariablen und diejenige
    welche den Wert Nothing hat, führt Dich zur ursächlichen
    Fehlerquelle, nämlich der noch nicht erfolgten Instanzierung.

    Gruß aus St.Georgen
    Peter Götz
    www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

    Freitag, 19. November 2010 12:36
  • Hallo Peter!

    Natürlich. so geht es. Da habe ich wahrschienlich vor lauter Codezeilen das wesentliche nicht gesehen.

    Danke.

    Grüße

    Peter

    • Als Antwort markiert PeterMP Montag, 24. Januar 2011 07:58
    Mittwoch, 15. Dezember 2010 11:51