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月前
|
监控 物联网 API
【.NET+MQTT】.NET6 环境下实现MQTT通信,以及服务端、客户端的双边消息订阅与发布的代码演示
MQTT广泛应用于工业物联网、智能家居、各类智能制造或各类自动化场景等。MQTT是一个基于客户端-服务器的消息发布/订阅传输协议,在很多受限的环境下,比如说机器与机器通信、机器与物联网通信等。好了,科普的废话不多说,下面直接通过.NET环境来实现一套MQTT通信demo,实现服务端与客户端的双边消息发布与订阅的功能和演示。
607 0
【.NET+MQTT】.NET6 环境下实现MQTT通信,以及服务端、客户端的双边消息订阅与发布的代码演示
|
设计模式 SQL 开发框架
一位.Net开发工程师的客户端技术栈的学习路线
从2018年硕士毕业后,我一直从事着.Net开发工作,趁着CSDN这次活动,给大家分享一下.Net客户端领域的技术栈的学习路线,这个学习路线,涵盖的是比较基础的内容,适合刚入门.Net的萌新学习和刚进入职场的毕业生查漏补缺,然后这个博文比较受大家的欢迎的话,后续可能会考虑出一个更详细的版本。致敬我彻夜学习的.Net。
一位.Net开发工程师的客户端技术栈的学习路线
|
JSON 物联网 数据处理
阿里云物联网.NETCore客户端|CZGL AliloTClient:7.服务调用
阿里云物联网.NETCore客户端|CZGL AliloTClient:7.服务调用
231 0
阿里云物联网.NETCore客户端|CZGL AliloTClient:7.服务调用
|
SQL
.NET文件夹更改、新建、删除
if (Directory.Exists(oldPath)) {                 Directory.Move(oldPath, path); if (OADBHelper.
775 0
相关课程
更多
推荐文章
更多