惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Microsoft Security Blog
Microsoft Security Blog
J
Java Code Geeks
GbyAI
GbyAI
aimingoo的专栏
aimingoo的专栏
L
LangChain Blog
I
InfoQ
D
Docker
F
Fortinet All Blogs
Y
Y Combinator Blog
Martin Fowler
Martin Fowler
月光博客
月光博客
B
Blog
Engineering at Meta
Engineering at Meta
T
Tailwind CSS Blog
罗磊的独立博客
博客园_首页
G
Google Developers Blog
Stack Overflow Blog
Stack Overflow Blog
Recent Announcements
Recent Announcements
D
DataBreaches.Net
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
B
Blog RSS Feed
IT之家
IT之家
V
V2EX

博客园 - 轻烟随风

SAP FICO财务模块常见BAPI函数清单 SAP 中 MB52 用到的核心函数和表 SAP SMW0 配置EXCEL 上载模板,供其他tcode 下载模板 SAP ABAP 查看TCODE enhanced 增强点,se38 批量查看 利用 Sapnco 在.net/c# 中跨系统调用 SAP RFC 功能,执行SAP中的函数 SAP ABAP 在alv报表上建立菜单栏工具栏 SAP ABAP ALSM_EXCEL_TO_INTERNAL_TABLE 导入excel 和 GUI_UPLOAD 导入 txt SAP ABAP BAPI_PRODORD_CHANGE 修改生产订单基本信息 项目管理-十大管理-信息系统项目管理师 sql server sa 账号登录失败,需开启混合身份验证 Vue pnpm run dev 出现 'vite' 不是内部或外部命令,也不是可运行的程序 SAP ABAP collect 函数 SAP ECC 740 创建表的索引 Oracle 查看死锁的相关sql 语句代码 SAP ABAP 函数CS_BOM_EXPL_MAT_V2获取CS03的bom 列表 SAP 客户端 GUI 的画面功能介绍 SAP ABAP 中的 STOP EXIT CHECK 的区别 SAP ABAP ISM_SD_GET_PRICING_CONDITIONS 订单价格定价 SAP ABAP 弹出对话框进行确认提醒的函数POPUP_TO_CONFIRM
利用 SapNwRfc 在.net/c# 中跨系统调用 SAP RFC 功能,执行SA...
轻烟随风 · 2025-02-21 · via 博客园 - 轻烟随风

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

SapNwRfc  -C#中使用的核心组件,在 framework  .NET 5 平台使用

本文是在 .net 4.6.2 上测试使用,

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

步骤如下:

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

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

输入参数:

输出参数:

 输出表:

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

 先sap自行测试下:

 

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

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

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

 本文用的.net4.6.2,最高可选到4.8

NuGet 搜索 SapNwRfc 并安装

winform画面添加一个 textbox,label ,button 

后端完整先引用

using SapNwRfc;

完成代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using SapNwRfc;


namespace SAPnwRFC_framework
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            callsap();
        }

        void callsap()
        {   
            string connectionString = "AppServerHost=10.100.100.100; SystemNumber=10; User=xx;Password=XXX; Client=7X0; Language=ZH; PoolSize=5; Trace=8";
            var connection = new SapConnection(connectionString);
            connection.Connect();
            label1.Text = "Logon SAP Server...";

            var someFunction = connection.CreateFunction("ZKAVEN_F001"); //执行的sap 函数
            var result = someFunction.Invoke<return_table>(new SomeFunctionParameters  //执行sap 函数
            {
                L_MATNR = textBox1.Text, 
            });

            label1.Text = result.L_MAKTX.ToString(); //得到SAP 输出单个值内容
            connection.Disconnect();
        }

        class SomeFunctionParameters //sap 输入内容
        {
            [SapName("L_MATNR")]
            public string L_MATNR { get; set; }
        }
        class return_table //sap 输出内容
        {

            [SapName("IT_MARA")]
            public TableAItem[] Itemsa { get; set; }

            [SapName("L_MAKTX")]
            public string L_MAKTX { get; set; }
  
        }

        class TableAItem //sap 输出的内表的数据,可以自行扩展
        {
            [SapName("MATNR")]
            public string MATNR { get; set; }

            [SapName("ERNAM")]
            public string ERNAM { get; set; }
        }

    }
}

以下是RFC连接参数的常见属性及其说明:

  • DestinationName: 必需。指定目标连接的名称,这是在SAP系统中配置的RFC目标的名称。

  • Client: 可选。指定RFC目标客户端。如果未指定,则使用默认客户端。

  • User: 可选。指定用于连接的用户名。如果未指定,则使用登录用户名。

  • Password: 可选。指定与User字段关联的密码。

  • Language: 可选。指定在RFC目标上使用的语言。如果未指定,则使用SAP系统的默认语言。

  • SystemNumber: 可选。指定目标系统的系统号。如果未指定,则使用默认的系统号。

  • SystemID: 可选。指定目标系统的系统ID。如果未指定,则使用默认的系统ID。

  • LogonGroup: 可选。指定登录组。如果未指定,则使用默认的登录组。

  • PoolSize: 可选。指定连接池的大小。如果未指定,则使用默认的连接池大小。

  • IdleTimeout: 可选。指定连接在自动关闭前可以保持空闲的时间(秒)。

  • MaxPoolSize: 可选。指定连接池的最大大小。

  • NoCompression: 可选。指定是否禁用对RFC目标的调用的压缩。

  • Encrypted: 可选。指定是否对RFC目标的调用进行加密。

  • Host: 可选。指定RFC目标的主机名或IP地址。

  • Port: 可选。指定RFC目标的端口号。

  • PartnerBytes: 可选。指定通过RFC连接传输的字节数。

  • RfcRole: 可选。指定RFC角色。

  • Exclusive: 可选。指定是否以独占模式连接到SAP系统。

  • Asynchronous: 可选。指定是否以异步方式处理RFC调用。

  • Retry: 可选。指定在放弃之前尝试进行RFC调用的次数。

  • RetryDelay: 可选。指定两次重试尝试之间的延迟(秒)。

  • AbapStatistics: 可选。指定是否获取ABAP统计信息。

  • SapRouter: 可选。指定是否使用SAP路由器。

  • MsgDest: 可选。指定消息目标的名称。

  • Group: 可选。指定RFC目标组。

  • SncMode: 可选。指定同步/异步RFC连接的安全网络通信模式。

  • SncQoS: 可选。指定SNC服务质量设置。

  • SncMyName: 可选。指定SNC本地名称。

  • SncPartnerName: 可选。指定SNC伙伴名称。

  • SncLibraryPath: 可选。指定SNC库的路径。

  • SncQoP: 可选。指定SNC服务质量配置。

  • Trace: 可选。指定跟踪级别。

  • TraceDirectory: 可选。指定跟踪文件的目录。

  • CodePage: 可选。指定代码页。

  • Passwd: 可选。指定与用户名关联的加密密码。

  • LogonCheck: 可选。指定是否进行登录检查。

  • MaxMessageSize: 可选。指定