RFC接口函数调用:

以下代码是封装好的,为了提供给UFT工具调用,使用c#写成dll。

类型项目分成两个:

1.baseConfigModel.cs  //sap配置登录信息,属性实体类

  1. using System;
  2. using System.Collections.Generic;
  3. //using System.Linq;
  4. using System.Text;
  5. //using System.Threading.Tasks;
  6. using SAP.Middleware.Connector;
  7. namespace I_RFC_LIB.Model
  8. {
  9. public class baseConfigModel
  10. {
  11.  
  12. public string Name { get; set; } //系统名字QH5
  13. public string AppServerHost { get; set; }//系统ip地址
  14. public string SystemNumber { get; set; } //系统实例
  15. public string SystemID { get; set; }//系统id
  16. public string User { get; set; }//用户ATPSUSER
  17. public string Password { get; set; }//密码
  18. public string Client { get; set; }//客户端号800
  19. public string Language { get; set; } //语言zh en
  20. public string IFUNC { get; set; } //接口函数名
  21. public RfcDestination sapConfig { get; set; } //sap登录配置
  22. public RfcRepository rfcRepository { get; set; } //Repository对象
  23. public string resultConfig { get; set; } //配置结果
  24. }
  25. }

2.C_RFC.cs //具体实现

  1. using System;
  2. using System.Collections.Generic;
  3. //using System.Linq;
  4. using System.Text;
  5. using System.Reflection;
  6. //using System.Threading.Tasks;
  7. ///**************************************************************///
  8. using SAP.Middleware.Connector;
  9. ///引用合名空间SAP.Middleware.Connector需要引用sapnco3.0 dll
  10. ///需要framework2.0支持
  11. ///sapnco.dll
  12. ///sapnco_utils
  13. ///**************************************************************///
  14.  
  15. namespace I_RFC_LIB
  16. {
  17. public class C_RFC
  18. {
  19. Model.baseConfigModel configModel = new Model.baseConfigModel(); //实例类 登录配置属性
  20.  
  21. /// <summary>
  22. /// 调用rfc接口函数
  23. /// </summary>
  24. /// <param name="headstr">包含配置信息的头</param>
  25. /// <param name="itemstr">接口需要参数</param>
  26. /// <returns></returns>
  27. public string invoke(string headstr,string itemstr)
  28. {
  29. string[] headArr = headstr.Split(new string[] { "@__@" }, StringSplitOptions.RemoveEmptyEntries);
  30. string[] itemArr = itemstr.Split(new string[] { "@__@" }, StringSplitOptions.RemoveEmptyEntries);
  31.  
  32. #region //head属性赋值
  33. //rfc config
  34.  
  35. var proValue = configModel.GetType(); //获取属性实例
  36.  
  37. for (var i = ; i < headArr.Length; i++)
  38. {
  39. var tmpVal = headArr[i].Split(new string[] { "@_@" }, StringSplitOptions.None);
  40. foreach (PropertyInfo py in proValue.GetProperties())
  41. {
  42. if (py.Name.ToUpper() == tmpVal[].ToUpper())
  43. {
  44. proValue.GetProperty(py.Name).SetValue(configModel, tmpVal[], null);
  45. }
  46. }
  47. }
  48.  
  49. #endregion
  50.  
  51. if (rfc_config()) //执行配置,获取对象
  52. {
  53. IRfcFunction rfc_invoke = configModel.rfcRepository.CreateFunction(configModel.IFUNC); //调用"ZFUC_APWZ_AP_PREVIEW"
  54. rfc_invoke.Invoke(configModel.sapConfig); //执行函数
  55.  
  56. #region //item传参
  57. for (var i = ; i < itemArr.Length; i++)
  58. {
  59. var tmpitVal = itemArr[i].Split(new string[] { "@_@" }, StringSplitOptions.RemoveEmptyEntries);
  60. rfc_invoke.SetValue(tmpitVal[], tmpitVal[]); //设置参数 (参数名,参数值)
  61. }
  62. #endregion
  63.  
  64. //rfc_invoke.SetValue("PSPID", ""); //设置参数 项目编号
  65. IRfcTable rfcTable = rfc_invoke.GetTable("RETURN"); //获取内表
  66. string message = rfcTable.GetValue("MESSAGE").ToString();
  67.  
  68. return message;
  69. }
  70. else
  71. {
  72. return "配置登录时出现问题,请查检配置!"+configModel.resultConfig;
  73. }
  74. }
  75.  
  76. /// <summary>
  77. /// 登录配置
  78. /// </summary>
  79. /// <returns>bool</returns>
  80. public bool rfc_config()
  81. {
  82. try
  83. {
  84. //rfc配置
  85. RfcConfigParameters argsP = new RfcConfigParameters();
  86. argsP.Add(RfcConfigParameters.Name, configModel.Name);
  87. argsP.Add(RfcConfigParameters.AppServerHost, configModel.AppServerHost);
  88. argsP.Add(RfcConfigParameters.SystemNumber, configModel.SystemNumber);
  89. argsP.Add(RfcConfigParameters.SystemID, configModel.SystemID);
  90. argsP.Add(RfcConfigParameters.User, configModel.User);
  91. argsP.Add(RfcConfigParameters.Password, configModel.Password);
  92. argsP.Add(RfcConfigParameters.Client, configModel.Client);
  93. argsP.Add(RfcConfigParameters.Language, configModel.Language);
  94. argsP.Add(RfcConfigParameters.PoolSize, "");
  95. argsP.Add(RfcConfigParameters.MaxPoolSize, "");
  96. argsP.Add(RfcConfigParameters.IdleTimeout, "");
  97.  
  98. //获取rfc配置
  99. configModel.sapConfig = RfcDestinationManager.GetDestination(argsP);
  100. configModel.rfcRepository = configModel.sapConfig.Repository;
  101. }
  102. catch (RfcBaseException ex)
  103. {
  104. configModel.resultConfig = ex.Message;
  105. return false;
  106. }
  107. return true;
  108. }
  109.  
  110. }
  111. }

3.uft调用

需要设置,程序集com可见

4、uft调用方法:

set rfc = dotnetfactory.CreateInstance("I_RFC_LIB.C_RFC","d:\\rfc.dll")

5、c#类库调用结果。接口返回“ATPSUSER不是该步骤允许的审批人”

uft调用rfc接口的更多相关文章

  1. SAP ABAP RFC接口通用日志工具:abap fm logger

    很早之前就想写个能记录函数模块日志的通用工具,最早尝试时,没有想清楚插入代码的体积问题.在一些群友的提醒下,了解到可以用宏来处理这一问题.不过当时比较忙,就没有动笔.最近又想起这件事,花了2天完成了一 ...

  2. WebApi接口 - 如何在应用中调用webapi接口

    很高兴能再次和大家分享webapi接口的相关文章,本篇将要讲解的是如何在应用中调用webapi接口:对于大部分做内部管理系统及类似系统的朋友来说很少会去调用别人的接口,因此可能在这方面存在一些困惑,希 ...

  3. C#动态调用WCF接口,两种方式任你选。

    写在前面 接触WCF还是它在最初诞生之处,一个分布式应用的巨作. 从开始接触到现在断断续续,真正使用的项目少之又少,更谈不上深入WCF内部实现机制和原理去研究,最近自己做一个项目时用到了WCF. 从这 ...

  4. python调用zabbix接口实现Action配置

    要写这篇博客其实我的内心是纠结的,老实说,我对zabbix的了解实在不多.但新公司的需求不容置疑,当我顶着有两个头大的脑袋懵懵转入运维领域时,面前摆着两百多组.上千台机器等着写入zabbix监控的需求 ...

  5. HttpClient Get/Post方式调用Http接口

    本节摘要:本节主要分别介绍如何用get方式.post方式向http接口发送数据. preparation 1. 项目环境如下: myeclipse6.5 .tomcat5.0.system:xp.JD ...

  6. Atitit 通过调用gui接口杀掉360杀毒 360卫士  qq保镖等难以结束的进程(javac# php )

    Atitit 通过调用gui接口杀掉360杀毒 360卫士  qq保镖等难以结束的进程(javac# php ) 1.1. 这些流氓软件使用操作系统os提供的普通api根本就杀不掉啊1 1.2. 使用 ...

  7. Java调用webservice接口方法

                             java调用webservice接口   webservice的 发布一般都是使用WSDL(web service descriptive langu ...

  8. php中创建和调用webservice接口示例

    php中创建和调用webservice接口示例   这篇文章主要介绍了php中创建和调用webservice接口示例,包括webservice基本知识.webservice服务端例子.webservi ...

  9. 调用c++接口类

    调用c++接口类 public class CarDeviceDll { /*对dll库进行一些初始化*/ [DllImport("IDI.dll")] public static ...

随机推荐

  1. .NET Core开发日志——Edge.js

    最近在项目中遇到这样的需求:要将旧有系统的一部分业务逻辑集成到新的自动化流程工具中.这套正在开发的自动化工具使用的是C#语言,而旧有系统的业务逻辑则是使用AngularJS在前端构建而成.所以最初的考 ...

  2. ASP.NET Core 2.0 Preview 1 中贴心的新特性

    西雅图时间5月10日,微软在 Build 2017 大会上发布了 ASP.NET Core 2.0 Preview 1 ( 详见 Announcing ASP.NET 2.0.0-Preview1 a ...

  3. 在ASP.NET Core中实现自定义验证特性(Custom Validation Attribute)

    这是我们在实际ASP.NET Core项目中用到的,验证用户名中是否包含空格. 开始是这么实现的(继承ValidationAttribute,重写IsValid方法): public class No ...

  4. ubuntu16.04下安装opencv3.4.1及其扩展模块

    1.源文件下载 opencv-3.4.1.tar.gz(https://github.com/opencv/opencv/releases) opencv_contrib-3.4.1.tar.gz(h ...

  5. 524 (Div. 2) Masha and two friends

    Codeforces Round #524 (Div. 2) C. Masha and two friends 题目链接 题意:较为简单,初始给定这个白黑相交的格子,第一遍把坐标范围内的全部涂白,第二 ...

  6. OpenGL教程和书籍

    1.http://goanna.cs.rmit.edu.au/~gl/teaching/Interactive3D/

  7. cxgridchart饼状图

    var VIEW:TcxGridDBChartView; Level:TcxGridLevel; Series:TcxGridDBChartSeries; begin View := cxGrid1. ...

  8. 完整OSW安装方法

    完整OSW安装方法(如果数据库是rac,一定要记得第5步,要不收集不到私网的信息): OSW介质见附件 1.上传介质到 /home/oracle 2.oracle用户将压缩包解压到归档arch目录下( ...

  9. 【PyQt5-Qt Designer】PyQt5+eric6 安装和配置

    PyQt5+eric6 安装及配置 1.利用pip命令安装PyQt5 第一步:安装PyQt5 在cmd命令行中输入: pip install PyQt5 第二步:安装Qt的工具包 pip instal ...

  10. pyqt5-对文本样式进行操作

    self.label_2 = QtWidgets.QLabel(self.centralWidget) self.label_2.setGeometry(QtCore.QRect(330, 220, ...