SAP .net 新建表插入数据 客户端显示 不完全手记-2

简介: 客户端开始 private void button1_Click(object sender, EventArgs e) { Execute(); } public void Execute() { IDe...
客户端开始

private void button1_Click(object sender, EventArgs e)
 {
            Execute();
  } 
 
 public void Execute()
        {
            IDestinationConfiguration ID = new MyBackendConfig();
            RfcDestinationManager.RegisterDestinationConfiguration(ID);
            //登录
            RfcDestination prd = RfcDestinationManager.GetDestination("PA0_000");
            Execute(prd);
            //退出登录
            RfcDestinationManager.UnregisterDestinationConfiguration(ID);
        }
 
//登陆SAP前的准备工作
        public class MyBackendConfig : IDestinationConfiguration
        {
            public RfcConfigParameters GetParameters(String destinationName)
            {
                if ("PA0_000".Equals(destinationName))
                {
                    RfcConfigParameters parms = new RfcConfigParameters();
                    parms.Add(RfcConfigParameters.AppServerHost, "192.168.2.165");   //SAP主机IP
                    parms.Add(RfcConfigParameters.SystemNumber, "00");  //SAP实例
                    parms.Add(RfcConfigParameters.User, "SAP*");  //用户名
                    parms.Add(RfcConfigParameters.Password, "123");  //密码
                    parms.Add(RfcConfigParameters.Client, "000");  // Client
                    parms.Add(RfcConfigParameters.Language, "ZH");  //登陆语言
                    parms.Add(RfcConfigParameters.PoolSize, "5");
                    parms.Add(RfcConfigParameters.MaxPoolSize, "10");
                    parms.Add(RfcConfigParameters.IdleTimeout, "60");
                    return parms;
                }
                else 
                    return null;
            }
            public bool ChangeEventsSupported()
            {
                return false;
            }
            public event RfcDestinationManager.ConfigurationChangeHandler ConfigurationChanged;
        } 

分析:IDestinationConfiguration 字面意 我的指定设置 ,实例的一个类MyBackendConfig ,该类继承IDestinationConfiguration,说明该类用来配置或重写标准配置。
 RfcDestinationManager.RegisterDestinationConfiguration(ID);保存配置。
  //登录
RfcDestination prd = RfcDestinationManager.GetDestination("PA0_000");
走的是 RfcDestinationManager里的方法,并传递参数PA0_000,跟踪代码得知执行的是   public RfcConfigParameters GetParameters(String destinationName)方法,及自定义配置的方法。
其中:RfcConfigParameters.SystemNumber对应的是SAP中系统编号,在登录窗口点击属性



RfcConfigParameters.Client为集团编号


用户名密码一定要大写。
 
剩下的就不用管了。连不上的话会有各种提示的。
核心方法读取录入数据
 
public void Execute(RfcDestination prd)
        {
          
            RfcRepository SapRfcRepository = prd.Repository;
            IRfcFunction myfun = SapRfcRepository.CreateFunction("ZORDER_RFC");
            IRfcStructure import = null;
            IRfcTable table = myfun.GetTable("IN_ORDER");
            for (int i = 0; i < 3; i++)
            {
                import = SapRfcRepository.GetStructureMetadata("ZORDERTEST").CreateStructure();
                import.SetValue("ORDERID", i);
                import.SetValue("ORDERCODE", DateTime.Now.ToString("yyyyMMdd"));
                import.SetValue("ORDERTIME", DateTime.Now);
                import.SetValue("ORDERUSER", "小李"+i);
                table.Insert(import);
            }
            myfun.Invoke(prd); 
            string RETURNStr = myfun.GetString("R_SUBRC");
            MessageBox.Show(RETURNStr);
            string[] columns = new string[]{
                "ORDERID",
                "ORDERCODE",
                "ORDERTIME",
                "ORDERUSER"
            };
            DataTable dt = new DataTable();  
            foreach (string clmn in columns)
            {
                dt.Columns.Add(clmn);
            }
            table = myfun.GetTable("IN_ORDER");
            for (int i = 0; i < table.RowCount; i++)
            {
                DataRow dr = dt.NewRow();
                foreach (string clmn in columns)
                {
                    dr[clmn] = table[i].GetString(clmn);
                }
                dt.Rows.Add(dr);  
            }
            this.dataGridView1.DataSource = dt;
        }

分析SapRfcRepository.CreateFunction("ZORDER_RFC"); 传入函数名称。
 myfun.GetTable("IN_ORDER");,是gettable,传的是参数名。
SapRfcRepository.GetStructureMetadata("ZORDERTEST").CreateStructure();这传的是表名,
myfun.GetString("R_SUBRC");接收返回的参数,应该是‘OK’,同样是参数名
   dr[clmn] = table[i].GetString(clmn);table是接口自定义的类型,跟踪看下结构,像个json。

到星期一接口调通,还得学习SAP做单,表情如下 大哭
目录
相关文章
|
7月前
mvc.net分页查询案例——DLL数据访问层(HouseDLL.cs)
mvc.net分页查询案例——DLL数据访问层(HouseDLL.cs)
|
Linux Android开发 iOS开发
基于.Net开发的ChatGPT客户端,兼容Windows、IOS、安卓、MacOS、Linux
基于.Net开发的ChatGPT客户端,兼容Windows、IOS、安卓、MacOS、Linux
182 0
|
2月前
|
SQL XML 关系型数据库
入门指南:利用NHibernate简化.NET应用程序的数据访问
【10月更文挑战第13天】NHibernate是一个面向.NET的开源对象关系映射(ORM)工具,它提供了从数据库表到应用程序中的对象之间的映射。通过使用NHibernate,开发者可以专注于业务逻辑和领域模型的设计,而无需直接编写复杂的SQL语句来处理数据持久化问题。NHibernate支持多种数据库,并且具有高度的灵活性和可扩展性。
41 2
|
2月前
|
网络协议 Unix Linux
一个.NET开源、快速、低延迟的异步套接字服务器和客户端库
一个.NET开源、快速、低延迟的异步套接字服务器和客户端库
|
2月前
|
存储 消息中间件 NoSQL
Redis 入门 - C#.NET Core客户端库六种选择
Redis 入门 - C#.NET Core客户端库六种选择
63 8
|
4月前
|
开发框架 .NET 数据库连接
闲话 Asp.Net Core 数据校验(三)EF Core 集成 FluentValidation 校验数据例子
闲话 Asp.Net Core 数据校验(三)EF Core 集成 FluentValidation 校验数据例子
|
5月前
|
开发框架 JSON 前端开发
利用查询条件对象,在Asp.net Web API中实现对业务数据的分页查询处理
利用查询条件对象,在Asp.net Web API中实现对业务数据的分页查询处理
|
4月前
|
开发框架 前端开发 算法
分享 .NET EF6 查询并返回树形结构数据的 2 个思路和具体实现方法
分享 .NET EF6 查询并返回树形结构数据的 2 个思路和具体实现方法
|
6月前
|
NoSQL 大数据 Redis
分享5款.NET开源免费的Redis客户端组件库
分享5款.NET开源免费的Redis客户端组件库
102 1
|
7月前
SAP CLIENT 数据配置文件的导出/导入
SAP CLIENT 数据配置文件的导出/导入
165 1