首页 > 编程语言 >C#使用 SAPscript的方法

C#使用 SAPscript的方法

时间:2023-08-29 17:45:42浏览次数:43  
标签:SAPscript string sapROTWrapper C# Application Session new SAP 方法

主要參照文檔  https://wenku.baidu.com/view/a28b71adcf22bcd126fff705cc17552707225ed2.html?_wkts_=1693296465595&bdQuery=AxSAPFEWSELib.AxGuiApplication.GetScriptingEngine
里面
讲得比较清楚,但是最大的问题是代码不能Copy
1)首先必须安装SAP GUI,当然SAP服务器,账号,密码这些基本条件没问题,还有就是开放了SAP SCript功能
2)代码参考中必须引用2个com组件 SAP GUI Scripting API/ SAPRotWr 1.0 Type Library (找不到说明SAP GUI没有正确安装)
3)加using SAPFEWSELib;using SapROTWr;
4)登陆部分的代码
 
private static object _lockObj = new object(); public GuiConnection Connection { get; set; } public GuiSession Session { get; set; } internal GuiApplication GetGuiSAPApp(int timeOut = 10) { CSapROTWrapper sapROTWrapper = new CSapROTWrapper(); return GetSAPGuiApp(sapROTWrapper, 10); } private GuiApplication GetSAPGuiApp(CSapROTWrapper sapROTWrapper,int secondsOfTimeOut) { object SapGuiRot = sapROTWrapper.GetROTEntry("SAPGUI"); if (secondsOfTimeOut < 0) { throw new TimeoutException("获取SAPGUI Application超时时间不能小于0。"); } else { if (SapGuiRot == null) { System.Threading.Thread.Sleep(1000); return GetSAPGuiApp(sapROTWrapper, secondsOfTimeOut - 1); } else { object engine = SapGuiRot.GetType().InvokeMember("GetSCriptingEngine", System.Reflection.BindingFlags.InvokeMethod, null, SapGuiRot, null); if (engine == null) { throw new NullReferenceException("SAPGUI Application没有发现。"); } return engine as GuiApplication; } } } public void OpenConnection(string server) { lock (_lockObj) { var Application = GetGuiSAPApp(10); try { Application.OpenConnectionByConnectionString(server); } catch(Exception ex) { throw new Exception("连接异常,查看端口或者Host是否正确。"+ex.Message); } var index = Application.Connections.Count - 1; Connection = Application.Children.ElementAt(index) as GuiConnection; index = Connection.Sessions.Count - 1; if (Connection.Sessions.Count == 0) { throw new Exception("新会话没有发现,SAP客户端是否开启了脚本?"); } Session = Connection.Children.Item(index) as GuiSession; } } public bool Login(string UserName,string Password,string Client,string Language = "") { (Session.FindById("wnd[0]/usr/txtRSYST-BNAME") as GuiTextField).Text = UserName; (Session.FindById("wnd[0]/usr/pwdRSYST-BCODE") as GuiTextField).Text = Password; (Session.FindById("wnd[0]") as GuiFrameWindow).SendVKey(0); return true; }

 5)实际使用

OpenConnection("server");  //
Login("usreName", "Password", "");

6)其它部分可以参照login里面的进行修改

 

标签:SAPscript,string,sapROTWrapper,C#,Application,Session,new,SAP,方法
From: https://www.cnblogs.com/wonder223/p/17665479.html

相关文章

  • selenium元素定位方法
     在最新版本的selenium中,已经不支持之前的元素定位方法,如find_element_by_id、find_element_by_xpath等。需将语法更改为:driver.find_element(By.ID,"username")等。特此记录。fromseleniumimportwebdriverfromselenium.webdriver.common.byimportBydriver=webdrive......
  • Jeecg-Boot存在前台SQL注入漏洞CVE-2023-1454
    Jeecg-boot简介jeecgBoot是一款基于BPM的低代码平台!前后端分离架构SpringBoot2.x,SpringCloud,AntDesign&Vue,Mybatis-plus,Shiro,JWT,支持微服务。强大的代码生成器让前后端代码一键生成,实现低代码开发!JeecgBoot引领新低代码开发模式OnlineCoding->代码生成器->手工MERGE,帮助J......
  • vscode 自动转换rem插件
    使用vsCode中的插件安装插件cssrem然后打开文件–>首选项–>设置搜索cssrem 修改rem的基准值然后重启vscode就可以直接使用上面的基准值需要我们根据屏幕的大小去计算比如我们拿到是1920分辨率屏幕的设计稿那么基准值就等于1920/100=19.20px也就是说1rem=19.20px......
  • jeecg-boot/积木报表基于SSTI的任意代码执行漏洞
    漏洞简介JeecgBoot受影响版本中由于积木报表/jeecg-boot/jmreport/queryFieldBySqlApi接口未进行身份校验,使用Freemarker处理用户用户传入的sql参数,未经授权的攻击者可发送包含恶意sql参数的http请求,通过SSTI在应用端执行任意代码。漏洞复现fofa语法:body="jeecg-b......
  • Spring 中 @Autowired与@Resource的区别
    1、@Autowired与@Resource都是做bean的注入时使用,都可以用来装配bean,都可以写在字段上,或写在setter方法上。  2、@Autowired默认按类型装配(这个注解属于spring),默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false。如:@Autowired(required=fals......
  • 具有 I 2C 和 SMBus 接口的 TMP75CQDRQ1、TMP75CQDGKRQ1、TMP75BQDGKRQ1 汽车类温度传
    一、器件介绍TMP75-Q1器件属于数字温度传感器,是负温度系数(NTC)和正温度系数(PTC)热敏电阻的理想替代产品。该器件无需校准或外部组件信号调节即可提供典型值为±1°C的精度。器件温度传感器为高度线性化产品,无需复杂计算或查表即可得知温度。片上12位模数转换器(ADC)......
  • CCF HPC China2023|澎峰科技:使能先进计算,赋能行业应用
    CCFHPCChina2023圆满落幕! 桂秋八月,为期三天的中国高性能计算领域最高规格盛会——2023CCF全球高性能计算学术年会(HPCChina)在青岛红岛国际展览中心圆满落幕。行业超算大咖、顶级学界精英、先锋企业领袖参会者齐聚山东青岛,共同探讨高性能计算、人工领域、大数据等诸多前沿领域......
  • MySQL数据库:第十五章:MySQL安装到最后一步未响应MySQL Server Instance Configuration
    MySQL安装到最后一步未响应第一个方法:打开C盘,并且显示隐藏文件,然后在C盘下就能找到一个文件夹叫“ProgamData”,打开它,删除里面的“mysql”文件夹,然后再重新安装mysql就可以了第二个方法:1.强退那个坑死人的未响应打√界面,也就是任务管理器强退,这个略,2.然后在本地硬盘找......
  • 20230627 java.net.Socket
    介绍java.net.SocketpublicclassSocketimplementsjava.io.Closeable套接字(Socket)是网络软件中的一个抽象概念,负责启动该程序内部和外部之间的通信API构造器Socket()Socket(Proxyproxy)Socket(Stringhost,intport)throwsUnknownHostException,IOException......
  • 20230627 java.net.ServerSocket
    介绍java.net.ServerSocketpublicclassServerSocketimplementsjava.io.Closeable服务器套接字ServerSocket类用于建立套接字,accept用于告诉程序不停地等待,直到有客户端连接到这个端口。一旦有人通过网络发送了正确的连接请求,并以此连接到了端口上,该方法就会返回一个表......