cancel
Showing results for 
Search instead for 
Did you mean: 

SAPGUI Script in C# not working

Former Member
0 Kudos

Hey guys,

     I'm coding C# to automate some SAPGUI scripting, and I have this wired problem...

      Below is the code piece

               GuiApplication guiApp = (GuiApplication)System.Activator.CreateInstance(Type.GetTypeFromProgID("SapGui.ScriptingCtrl.1"));

               

                GuiConnection guiConn = guiApp.OpenConnection("MYSYSTEM", true, true);

               

                GuiSession guiSession = (GuiSession)guiConn.Sessions.Item(0);

                GuiFrameWindow guiWindow = guiSession.ActiveWindow;

                GuiTextField client = (GuiTextField)guiWindow.FindByName("RSYST-MANDT", "GuiTextField");

                GuiTextField login = (GuiTextField)guiWindow.FindByName("RSYST-BNAME", "GuiTextField");

                GuiTextField pass = (GuiTextField)guiWindow.FindByName("RSYST-BCODE", "GuiPasswordField");

                GuiTextField language = (GuiTextField)guiWindow.FindByName("RSYST-LANGU", "GuiTextField");

                client.SetFocus();

                client.Text = "XXX";

                login.SetFocus();

                login.Text = "XXXXXXX";

                pass.SetFocus();

                pass.Text = "XXXXXXX";

                language.SetFocus();

                language.Text = "XX";

This code piece worked 100% fine a week ago, but it's not working now... The problem now is that guiConn.Session contains no items after OpenConnection. I'm coding in Visual Studio 2008, I don't think I did any change to my VS project.

I tried guiConn.Children, it contains no items either.

Please help!!!

Thanks,

Shu

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Check your references,

If SAPFEWSELIB is not referenced this will not work, I just compiled this and it works (VS.Net 2012 Express)

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using SAPFEWSELib;

namespace ConsoleApplication1

{

    class Program

    {

        static void Main(string[] args)

        {

            GuiApplication guiApp = (GuiApplication)System.Activator.CreateInstance(Type.GetTypeFromProgID("SapGui.ScriptingCtrl.1"));

            GuiConnection guiConn = guiApp.OpenConnection("mysystem", true, true);

            GuiSession guiSession = (GuiSession)guiConn.Sessions.Item(0);

            GuiFrameWindow guiWindow = guiSession.ActiveWindow;

            ((GuiTextField)guiWindow.FindByName("RSYST-MANDT", "GuiTextField")).Text = "000";

            ((GuiTextField)guiWindow.FindByName("RSYST-BNAME", "GuiTextField")).Text="lesteban";

            ((GuiTextField)guiWindow.FindByName("RSYST-BCODE", "GuiPasswordField")).Text="mypassword";

            ((GuiTextField)guiWindow.FindByName("RSYST-LANGU", "GuiTextField")).Text="en";

            guiWindow.SendVKey(0);

            Console.ReadLine();

        }

    }

}

regards

Luis

Former Member
0 Kudos

This is not the cause, if the lib wasn't referenced, the code wouldn't be compiled OK. Anyway, I found the cause, the system must be scripting enabled.

former_member626016
Discoverer
0 Kudos

Hello Shu,

Would you like to share meaning of  "System must be scripting enabled". I am running same script in VS2010 Express. It compiles well but on running says, Access denied on Open.Connection.

Regards,

Ashish

Answers (0)