点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
这是我的Visual Basic代码,可以正常工作!〜
================================================ ======================
公共子Logon_Click(作为对象发送,作为EventArgs发送)处理登录。单击
'===激活SAP登录板引擎
应用程序= CreateObject(" Sapgui.ScriptingCtrl.1")
'===启动预定义的SAPlogon pad连接之一
Sapgui = GetObject(" SAPGUI")
应用程序= Sapgui.GetScriptingEngine
connection = Application.OpenConnection(" SP1- ECC 6.0 Production [WM_MM_GRP]",真)
会话= connection.children(0)
'===填写登录屏幕字段
session.findById(" wnd [0]/usr/txtRSYST-BNAME")。text =" tuser_id_here"
session.findById(" wnd [0]/usr/pwdRSYST-BCODE")。text =" passwd_here"
'===发送回车
session.findById(" wnd [0]")。sendVKey(0)
结束子
================================================ =======================
任何人在c#中都有一个示例
我在WPF中使用框架4.72,但如果需要,Windows窗体也可以。
该应用程序的其余部分位于.NET CORE C#WPF中。 就示例而言,那里没有多少东西!
我开始怀疑我是否可以在C#中使用SAP GUI。
谢谢
Pete
最后,我设法使用此代码进行连接!
================================================ =
使用System.Windows;
使用sapfewse;
命名空间SAPGuiAutomated {
///<摘要>
///MainWindow.xaml的交互逻辑
//////
公共类SAPActive {
公共静态GuiApplication SapGuiApp {get; 组; }
公共静态GuiConnection SapConnection {get; 组; }
公共静态GuiSession SapSession {get; 组; }
私有无效Get_SAP(对象发送者,RoutedEventArgs e){
字符串connectString =" SP1-ECC 6.0生产[WM_MM_GRP],True";
SAPActive.SapGuiApp =新的GuiApplication();
SAPActive.SapConnection = SAPActive.SapGuiApp.OpenConnection(" SP1- ECC 6.0 Production [WM_MM_GRP]",Sync:false);
//创建连接
SAPActive.SapSession =(GuiSession)SAPActive.SapConnection.Sessions.Item(0);
//根据您建立的连接创建Gui会话
GuiTextField客户端=(GuiTextField)SAPActive.SapSession.ActiveWindow.FindByName(" RSYST-MANDT"," GuiTextField");
GuiTextField登录=(GuiTextField)SAPActive.SapSession.ActiveWindow.FindByName(" RSYST-BNAME"," GuiTextField");
GuiTextField pass =(GuiTextField)SAPActive.SapSession.ActiveWindow.FindByName(" RSYST-BCODE"," GuiPasswordField");
GuiTextField语言= GuiTextField)SAPActive.SapSession.ActiveWindow.FindByName(" RSYST-LANGU"," GuiTextField"); client.SetFocus();
client.Text =" 750";
login.SetFocus();
login.Text =" user_ID_HERE";
pass.SetFocus(); pass.Text =" PASSWD_HERE";
language.SetFocus(); language.Text =" EN";
//按下绿色的选中标记按钮,该按钮与Enter键大致相同
GuiButton btn =(GuiButton)SAPActive.SapSession.FindById("/img/app/con [0]/ses [0]/wnd [0]/tbar [0]/btn [0]"); btn.SetFocus();
btn.Press();
}
}
}
但是,如果我尝试使用FindByID,则(.text或.Text)不是SapSession的组件。
还有另一种使用FindByID的方法吗?
Pete
这是我<看着的!
============================================ >
使用sapfewse;
使用SAPGuiAutomated;
使用System.Windows;
命名空间SAP_Test1 {
///<摘要>
///MainWindow.xaml的交互逻辑
///
公共局部类MainWindow:Window
{
公共MainWindow()
{InitializeComponent(); }
私人void Button_Click(对象发送者,RoutedEventArgs e)
{
SAPActive.openSap(" Con_SENSITIVE");
SAPActive.Login(" 100"," USER_SENSITIVE"," PWD_SENSITIVE"," EN"); SAPActive.SapSession.StartTransaction(" IW59");
GuiMenu guiMenu;
GuiFrameWindow guiFrameWindow;
GuiTextField guiTextField;
GuiButton guiButton; guiMenu = SAPActive.MenuPath(" wnd [0]/mbar/menu [2]/menu [0]/menu [0]"); guiMenu.Select(); guiTextField = SAPActive.TextFieldPath(" wnd [1]/usr/txtV-LOW"); guiTextField.SetFocus(); guiTextField.Text ="敏感";
guiTextField = SAPActive.TextFieldPath(" wnd [1]/usr/txtENAME-LOW");
guiTextField.Text =""; guiFrameWindow = SAPActive.FrameWindowPath(" wnd [1]"); guiFrameWindow.SendVKey(8); guiFrameWindow = SAPActive.FrameWindowPath(" wnd [0]"); guiFrameWindow.SendVKey(8);
}
}
}
================================================ ==========
但是它说找不到MenuPath,TextFieldPath
FrameWindowPath和从SapActive.Login登录。
Pete
你好 PETER GROVES ,
我们两年前在这里讨论了这段代码,但观点有所不同。 p>
FindById有效,但是您的ID错误。
this
>您处于会话级别,因此无法使用整个ID来标识对象。 仅从会话级别开始,没有/app/con [0]/ses [0]。
这里是我的测试代码:
最诚挚的问候
Stefan
什么是SAPActive?
(来自在这里,我想)
这是另一个 大块的代码! SapActive是它的来源!
================================================ ====
使用sapfewse;
命名空间SAPGuiAutomated {
//它已经为SAP应用程序,连接和会话对象以及常见功能创建了一个类。
公共类SAPActive {
公共静态GuiApplication SapGuiApp {get; 组;
}
公共静态GuiConnection SapConnection {get; 组;
}
公共静态GuiSession SapSession {get; 组; }
公共静态无效openSap(string env)
{
SAPActive.SapGuiApp =新的GuiApplication();
string connectString = null;
如果(env.ToUpper()。Equals(" DEFAULT")){
connectString =" WM_MM_GRP";
}其他{
connectString = env;
}
SAPActive.SapConnection = SAPActive.SapGuiApp.OpenConnection(connectString,Sync:true); //创建连接
SAPActive.SapSession =(GuiSession)SAPActive.SapConnection.Sessions.Item(0);
//根据您建立的连接创建Gui会话
}
公共无效登录(字符串forclient01,字符串forlogin01,字符串forpass01,字符串forlang01)
{
GuiTextField客户端=(GuiTextField)SAPActive.SapSession.ActiveWindow.FindByName(" RSYST-MANDT"," GuiTextField");
GuiTextField登录=(GuiTextField)SAPActive.SapSession.ActiveWindow.FindByName(" RSYST-BNAME"," GuiTextField");
GuiTextField pass =(GuiTextField)SAPActive.SapSession.ActiveWindow.FindByName(" RSYST-BCODE"," GuiPasswordField");
GuiTextField语言=(GuiTextField)SAPActive.SapSession.ActiveWindow.FindByName(" RSYST-LANGU"," GuiTextField");
GuiButton btn;
client.SetFocus();
client.Text = forclient01; login.SetFocus();
login.Text = forlogin01; pass.SetFocus();
pass.Text = forpass01; language.SetFocus();
language.Text = forlang01;
//按下绿色的选中标记按钮,该按钮与输入键GuiButton大致相同
btn =(GuiButton)SapSession.FindById("/img/app/con [0]/ses [0]/wnd [0]/tbar [0]/btn [0]");
btn.SetFocus();
btn.Press();
}
}
}
=================================
Pete
感谢您的反馈:-)
我想Stefan给出的答案是正确的。
一周热门 更多>