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做单,表情如下 大哭
目录
相关文章
|
26天前
mvc.net分页查询案例——DLL数据访问层(HouseDLL.cs)
mvc.net分页查询案例——DLL数据访问层(HouseDLL.cs)
8 0
|
1月前
使用 SAP UI5 Event Bus 机制,修复 SAP UI5 分页显示数据的一个 bug 试读版
使用 SAP UI5 Event Bus 机制,修复 SAP UI5 分页显示数据的一个 bug 试读版
20 0
|
3月前
|
数据采集 供应链 数据管理
关于评估 SAP 主数据的数据初始化对 SAP 系统影响范围的方法论
关于评估 SAP 主数据的数据初始化对 SAP 系统影响范围的方法论
40 0
|
5月前
|
Linux Android开发 iOS开发
基于.Net开发的ChatGPT客户端,兼容Windows、IOS、安卓、MacOS、Linux
基于.Net开发的ChatGPT客户端,兼容Windows、IOS、安卓、MacOS、Linux
84 0
|
6月前
|
API
如何用 SAP Commerce Cloud CMS API 批量返回多个 CMS Component 数据
如何用 SAP Commerce Cloud CMS API 批量返回多个 CMS Component 数据
34 0
|
26天前
|
SQL 数据库
使用ADO.NET查询和操作数据
使用ADO.NET查询和操作数据
9 0
|
2月前
|
SQL 开发框架 .NET
ASP.NET WEB+EntityFramework数据持久化——考核练习库——1、用户管理系统(考点:查询列表、增加、删除)
ASP.NET WEB+EntityFramework数据持久化——考核练习库——1、用户管理系统(考点:查询列表、增加、删除)
67 0
|
4月前
|
Oracle 关系型数据库 数据管理
.NET医院检验系统LIS源码,使用了oracle数据库,保证数据的隔离和安全性
LIS系统实现了实验室人力资源管理、标本管理、日常事务管理、网络管理、检验数据管理(采集、传输、处理、输出、发布)、报表管理过程的自动化,使实验室的操作人员和管理者从繁杂的手工劳作中解放出来,提高了检验人员的工作效率和效益,降低了劳动成本和差错发生率。
|
5月前
|
开发者
SAP UI5 控件双向数据绑定后显示数据出问题,可以调试这个方法
SAP UI5 控件双向数据绑定后显示数据出问题,可以调试这个方法
28 0
|
5月前
|
数据库
小技巧分享 - 找出 SAP ABAP SPRO 配置项后台对应配置表的两种办法试读版
小技巧分享 - 找出 SAP ABAP SPRO 配置项后台对应配置表的两种办法试读版
42 0