利用 Sapnco 在.net/c# 中跨系统调用 SAP RFC 功能,执行SAP中的函数

news/2025/2/21 14:52:05/文章来源:https://www.cnblogs.com/cnishop/p/18729172

利用Sapnco 在.net/c# 中跨系统调用 SAP RFC 功能,执行SAP中的函数

Sapnco  -C#中使用的核心组件,sap官网有下,本文使用的版本在 framework  平台使用,

sap 官网地址,但是下载要权限,全名称为: 

SAP Connector for Microsoft .NET ,链接:https://support.sap.com/en/product/connectors/msnet.html?anchorId=section_512604546

 

核心功能其实就是用到两个dll:

sapnco.dll

sapnco_utils.dll

 

本文是在 .net 4.8 上测试使用

实现效果如下,输入料号,点button1, 即可通过该winform,远程调用sap函数,然后返回 料号的 描述到 winform 画面上

步骤如下:

1. SAP中se37建立一个函数:ZKAVEN_F001 ,注意勾上启用远程模式。

该函数作用就是输入一个料号,查询出该料号的描述,和得到一个类似mara 表的关于物料代码信息的内表 

输入参数:

输出参数:

 输出表:

 代码:很简单,就是获取一个料号描述给到上面的输出参数,给一个内表到上面的参数表

 先sap自行测试下:

 

可以得到一个描述 和一个内表, 共两个输出

 以上是SAP 中函数建立过程,没啥问题,sap自行测试已通过。

2.打开visual studio 2022, 创建一个.NET Framework 项目

 本文用的 .net 4.8

右击项目,添加引用,引用下载的 两个dll

程序中先 using SAP.Middleware.Connector; 

winform 添加3个组件 textbox label button

完成代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using SAP.Middleware.Connector;namespace WindowsFormSAP_RFC1
{public partial class Form1 : Form{public Form1(){InitializeComponent();}public void nco(){RfcDestination prd = RfcDestinationManager.GetDestination("PRD_000");// RfcDestinationManager.UnregisterDestinationConfiguration(ID);  //返注册
            nco(prd);}public void nco(RfcDestination prd){RfcRepository repo =  prd.Repository;IRfcFunction companyBapi = repo.CreateFunction("ZKAVEN_F001");   //调用函数名companyBapi.SetValue("L_MATNR", this.textBox1.Text.ToString());   //设置Import的参数companyBapi.Invoke(prd);   //执行函数IRfcTable table = companyBapi.GetTable("IT_MARA");  //获取相应的品号内表string MAKTX = companyBapi.GetValue("L_MAKTX").ToString();  //获取品名this.label1.Text = MAKTX;   //显示品名prd = null;repo = null;}//登陆SAP前的准备工作public class MyBackendConfig : IDestinationConfiguration{public RfcConfigParameters GetParameters(String destinationName){if ("PRD_000".Equals(destinationName)){RfcConfigParameters parms = new RfcConfigParameters();parms.Add(RfcConfigParameters.Name, "PRD_000");parms.Add(RfcConfigParameters.AppServerHost, "10.100.112.11");   //SAP主机IPparms.Add(RfcConfigParameters.SystemNumber, "10");  //SAP实例
parms.Add(RfcConfigParameters.User, "xxx");  //用户名parms.Add(RfcConfigParameters.Password, "xxxxx");  //密码parms.Add(RfcConfigParameters.Client, "710");  // Clientparms.Add(RfcConfigParameters.Language, "ZH");  //登陆语言parms.Add(RfcConfigParameters.PoolSize, "5");return parms;}else return null;}public bool ChangeEventsSupported(){return false;}public event RfcDestinationManager.ConfigurationChangeHandler ConfigurationChanged;}private void button1_Click(object sender, EventArgs e){IDestinationConfiguration ID = new MyBackendConfig();RfcDestinationManager.RegisterDestinationConfiguration(ID);nco();}}
}

 

 另一边利用 SapNwRfc 实现同样功能,可参考 链接:https://www.cnblogs.com/cnishop/p/18729102

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/887608.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SAP咨询公司排名探析:谁执牛耳?

SAP作为全球领先的软件集成供应商,其提供的ERP、CRM、SCM及BI等解决方案深受企业青睐。而SAP咨询公司,作为SAP软件实施、咨询与运维服务。如何评判这些咨询公司的实力呢?以下,我们将从分类、评估指标及领先公司等方面进行深入探讨。一、SAP咨询公司的双轨并行SAP咨询公司大…

Jmeter 自定义的respCode不是0就报异常

在实际使用中,后台其实已经对异常的进行了处理,response body 返回来的,都是正常的请求响应; 这个时候,则需要通过 respCode 进行判断该请求是否是有效响应。 如响应报文如下:{"respCode": 0,"errMsg": null,"data": 100000 } 处理:对 …

mysql 索引页存储关系

前言 简单介绍一下页存储的关系。 正文 在前文中,我们已经知道了页存储的内怎么去查询的数据的,也就两点。记录根据主键(索引)按照顺序链式存储有一个page directory,里面有槽,可以快速定位到槽,然后就可以从链式存储的某个点进行分组查询理论上这样在一页内查询还是非常o…

为什么你的客户留不住?可能是CRM没用对!

最近同事跟我抱怨: ——“营销活动越做越多,可是活跃的客户突然就不见了。” ——”跟客户明明聊的好好的,怎么一转头就不合作了?“ ——“客户一走,业绩没保障,我可太焦虑了😭!!!” 客户流失率越来越高,不仅影响个人业绩,从长远来看,还会影响到公司品牌的信誉和…

如何在JMeter中配置断言,将非200状态码视为测试成功

如何在JMeter中配置断言,将非200状态码视为测试成功 引言 在接口测试中,HTTP响应状态码是判断请求是否成功的重要依据。通常情况下,状态码200表示请求成功,而其他状态码则可能表示各种类型的错误。然而,在某些特定场景下,我们可能期望接收到非200的状态码,并将其视为测试…

CDN大致原理

没有CDN加速情况下对于资源的请求路径: 增加了CDN(content delivery network)服务后的请求路径:

自然语言转SQL避坑指南:FocusSearch如何用两步法碾压传统大模型方案?

在数据驱动的时代,企业每天需要处理海量结构化数据,但非技术人员与数据库之间的“最后一公里”鸿沟始终存在。传统Text2SQL技术试图用自然语言直接生成SQL查询,然而大模型的黑箱特性、高昂成本及不可控的幻觉问题,使得这一目标长期陷入“理想丰满,现实骨感”的困境。本文将…

P1044 [NOIP 2003 普及组] 栈——卡特兰数

题目背景 栈是计算机中经典的数据结构,简单的说,栈就是限制在一端进行插入删除操作的线性表。 栈有两种最重要的操作,即 pop(从栈顶弹出一个元素)和 push(将一个元素进栈)。 栈的重要性不言自明,任何一门数据结构的课程都会介绍栈。宁宁同学在复习栈的基本概念时,想到…

[开源自荐] Catime 不一样的计时器(番茄时钟),非常欢迎反馈

Catime一款简洁的 Windows 倒计时工具,具有透明界面和丰富的自定义选项。Github:https://github.com/vladelaina/Catime🌟特点极简设计: 透明界面、点击穿透、可调大小和位置、多语言支持 丰富字体: 14种 Nerd Fonts 字体,支持实时预览 灵活计时: 快速预设、自定义时间输入…

PCIe图像采集卡功能与优势解析

PCIe图像采集卡是一种通过PCI Express接口与计算机连接的硬件设备,主要用于高速采集摄像头、工业相机、医学成像设备等输出的图像或视频信号。以下是关键信息整理: 一、核心功能与优势 高速传输 利用PCIe接口的高带宽(如PCIe 3.0 x4可达4GB/s),支持高分辨率(4K/8K)或高帧…

VShell v4.9.3 高级版:红队国产化C2工具

免责声明 请勿利用文章内的相关技术从事非法测试。由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任,请务必遵守网络安全法律法规。本文仅用于测试,请完成测试后24小时删除,请勿用于商业用途。如文中内容涉…