首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SAP测试在c#中输入事务代码

使用SAP测试在c#中输入事务代码
EN

Stack Overflow用户
提问于 2018-08-19 13:38:49
回答 1查看 1.9K关注 0票数 1

在运行测试时,在中输入c#事务代码有问题。我不知道我在哪里做不正确的工作。

登录到SAP enviro后,我尝试输入事务,但它没有进入。这给我带来了错误。我试过很多种方法。

谢谢你的帮助。

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
using SAPFEWSELib;
using SAPGuiAutomated.RunProgram;

namespace SAPGuiAutomated.Program
{
    //created a class for the SAP app, connection, and session objects as well as for common methods. 
    public static class SAPActive
    {
        public static GuiApplication SapGuiApp { get; set; }
        public static GuiConnection SapConnection { get; set; }
        public static GuiSession SapSession { get; set; }

        public static void OpenSAP(string v)
        {
            GuiApplication Application;
            GuiConnection Connection;
            GuiSession Session;

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

            // How do I find the connection string that I use to connect to SAP?
            Connection = Application.OpenConnectionByConnectionString("..ipAddressOfmySAP..", false, true);
            Session = (GuiSession)Connection.Sessions.Item(0);

            Session.TestToolMode = 1;

            ((GuiTextField)Session.ActiveWindow.FindByName("RSYST-MANDT", "GuiTextField")).Text = "..client..";
            ((GuiTextField)Session.ActiveWindow.FindByName("RSYST-BNAME", "GuiTextField")).Text = "..loginName..";
            ((GuiTextField)Session.ActiveWindow.FindByName("RSYST-BCODE", "GuiPasswordField")).Text = "..password..";
            ((GuiTextField)Session.ActiveWindow.FindByName("RSYST-LANGU", "GuiTextField")).Text = "..language..";

            // Press the green checkmark button which is about the same as the enter key 
            GuiButton btn = (GuiButton)Session.ActiveWindow.FindByName("btn[0]", "GuiButton");
            btn.SetFocus();
            btn.Press();

            // Enter transaction 
            ((GuiTextField)Session.ActiveWindow.FindById("wnd[0]/tbar[0]/okcd")).Text = "se16n";

            //((GuiTextField)Session.FindById("wnd[0]/tbar[0]/okcd");
            //GuiCTextField transactionInput = (GuiCTextField)SAPActive.SapSession.ActiveWindow.FindById("wnd[0]/tbar[0]/okcd");
            //transactionInput.Text = "se16n";
            //GuiCTextField transactionInput = (GuiCTextField)SAPActive.SapSession.ActiveWindow.FindByName("okcd", "GuiCTextField");
            //transactionInput.Text = "Se16n";
            btn.Press();
        }
    }
}

-我同意这个:((GuiTextField)Session.ActiveWindow.FindById("wnd[0]/tbar[0]/okcd")).Text = "se16n";

错误:

代码语言:javascript
复制
System.InvalidCastException
  HResult=0x80004002
  Message=Unable to cast COM object of type 'System.__ComObject' to interface type 'SAPFEWSELib.GuiTextField'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{B4D89EE3-6EFD-4F4C-9F42-AD42B71C8EB7}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).
  Source=SAP_test
  StackTrace:
   at SAPGuiAutomated.Program.SAPActive.OpenSAP(String v) in C:\Users\Martin\source\repos\SAP_test\SAP_test\Program.cs:line 85
   at SAPGuiAutomated.RunProgram.Program.Main(String[] args) in C:\Users\Martin\source\repos\SAP_test\SAP_test\RunProgram.cs:line 17

--当我使用这个GuiCTextField transactionInput = (GuiCTextField)SAPActive.SapSession.ActiveWindow.FindById("wnd[0]/tbar[0]/okcd")时,我得到了一个错误:

(GuiCTextField)SAPActive.SapSession.ActiveWindow.FindById("wnd/tbar/okcd");'(GuiCTextField)SAPActive.SapSession.ActiveWindow.FindById("wnd/tbar/okcd")‘抛出了“System.NullReferenceException”SAPFEWSELib.GuiCTextField {System.NullReferenceException}类型的异常。

当这个GuiCTextField transactionInput = (GuiCTextField)SAPActive.SapSession.ActiveWindow.FindByName("okcd", "GuiCTextField");得到这个错误时:

(GuiCTextField)SAPActive.SapSession.ActiveWindow.FindByName("okcd","GuiCTextField");'(GuiCTextField)SAPActive.SapSession.ActiveWindow.FindByName("okcd",“GuiCTextField”)抛出'System.NullReferenceException‘SAPFEWSELib.GuiCTextField {System.NullReferenceException}类型的异常。

EN

回答 1

Stack Overflow用户

发布于 2018-08-20 07:34:11

好的,我找到了:D

代码语言:javascript
复制
Session.StartTransaction("transactionCode");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51918228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档