博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.Net MVC3连接SAP实践
阅读量:5297 次
发布时间:2019-06-14

本文共 5703 字,大约阅读时间需要 19 分钟。

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;using SAP.Middleware.Connector;using System.Data;namespace SAPMVC.Controllers{    public class HomeController : Controller    {        string MATNR = string.Empty;        public ActionResult Index()        {            ViewBag.Message = "Welcome to ASP.NET MVC!";            nco();            //nco2();            return View();        }        public void nco2()        {            RfcConfigParameters rfcPar = new RfcConfigParameters();            //rfcPar.Add(RfcConfigParameters.Name, "CON");            //rfcPar.Add(RfcConfigParameters.AppServerHost, "192.168.1.3");            //rfcPar.Add(RfcConfigParameters.Client, "800");            //rfcPar.Add(RfcConfigParameters.User, "UserID");            //rfcPar.Add(RfcConfigParameters.Password, "Password");            //rfcPar.Add(RfcConfigParameters.SystemNumber, "02");            //rfcPar.Add(RfcConfigParameters.Language, "EN");            rfcPar.Add(RfcConfigParameters.Name, "CON");            rfcPar.Add(RfcConfigParameters.AppServerHost, "192.168.1.3");   //SAP主机IP            rfcPar.Add(RfcConfigParameters.SystemNumber, "00");  //SAP实例            rfcPar.Add(RfcConfigParameters.User, "MENGXIN");  //用户名            rfcPar.Add(RfcConfigParameters.Password, "5239898");  //密码            rfcPar.Add(RfcConfigParameters.Client, "888");  // Client            //rfcPar.Add(RfcConfigParameters.Language, "ZH");  //登陆语言            //rfcPar.Add(RfcConfigParameters.PoolSize, "5");            //rfcPar.Add(RfcConfigParameters.MaxPoolSize, "10");            //rfcPar.Add(RfcConfigParameters.IdleTimeout, "60");            RfcDestination dest = RfcDestinationManager.GetDestination(rfcPar);            RfcRepository rfcrep = dest.Repository;            IRfcFunction myfun = null;            myfun = rfcrep.CreateFunction("SAP里面的函数名称");            myfun.SetValue("VTYPE", "0");//SAP里面的传入参数            myfun.Invoke(dest);            IRfcTable IrfTable = myfun.GetTable("IT_ZMYTB2");            //提前实例化一个空的表结构出来            DataTable dt = new DataTable();            dt.Columns.Add("USERID");            dt.Columns.Add("USERPWD");            dt.Columns.Add("USERADDRESS");            //循环把IRfcTable里面的数据放入Table里面,因为类型不同,不可直接使用。            for (int i = 0; i < IrfTable.Count; i++)            {                IrfTable.CurrentIndex = i;                DataRow dr = dt.NewRow();                dr["USERID"] = IrfTable.GetString("USERID");                dr["USERPWD"] = IrfTable.GetString("USERPWD");                dr["USERADDRESS"] = IrfTable.GetString("USERADDRESS");                dt.Rows.Add(dr);            }        }        public void nco()        {            IDestinationConfiguration ID = new MyBackendConfig();            RfcDestinationManager.RegisterDestinationConfiguration(ID);            RfcDestination prd = RfcDestinationManager.GetDestination("PRD_000");            RfcDestinationManager.UnregisterDestinationConfiguration(ID);            nco(prd);        }        public void nco(RfcDestination prd)        {            RfcRepository repo = prd.Repository;            IRfcFunction companyBapi = repo.CreateFunction("ZRFC_MARA_INFO");   //调用函数名            companyBapi.SetValue("MATNR", MATNR);   //设置Import的参数            companyBapi.Invoke(prd);   //执行函数            IRfcTable table = companyBapi.GetTable("IT_MARA");  //获取相应的品号内表            string MAKTX = companyBapi.GetValue("MAKTX").ToString();  //获取品名            DataTable dt = new DataTable();  //新建表格            dt.Columns.Add("品号");  //表格添加一列            for (int i = 0; i < table.RowCount; i++)            {                table.CurrentIndex = i;  //当前内表的索引行                DataRow dr = dt.NewRow();                dr[0] = table.GetString("MATNR");  //获取表格的某行某列的值                dt.Rows.Add(dr);  //填充该表格的值            }            if (MATNR == "")            {                for (int i = 0; i < dt.Rows.Count; i++)                {                    //this.comboBox1.Items.Add(dt.Rows[i][0].ToString());   //填充下拉框                }            }            //this.label1.Text = MAKTX;   //显示品名            prd = null;            repo = null;        }        public ActionResult About()        {            return View();        }        //登陆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, "192.168.1.3");   //SAP主机IP                    parms.Add(RfcConfigParameters.SystemNumber, "00");  //SAP实例                    parms.Add(RfcConfigParameters.User, "MENGXIN");  //用户名                    parms.Add(RfcConfigParameters.Password, "5239898");  //密码                    parms.Add(RfcConfigParameters.Client, "888");  // 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;        }    }}

转载于:https://www.cnblogs.com/xinyuyuanm/archive/2013/04/01/2993572.html

你可能感兴趣的文章
字符串压缩
查看>>
用Lua定制Redis命令
查看>>
小程序-canvas在IOS手机层级最高无法展示问题
查看>>
「 Luogu P2285 」打鼹鼠
查看>>
lua语言入门之Sublime Text设置lua的Build System
查看>>
解决win8使用内置管理员不能打开应用商城、天气等问题
查看>>
vue.js基础
查看>>
电脑的自带图标的显示
查看>>
globalization与全球化
查看>>
[转载] redis 的两种持久化方式及原理
查看>>
关于在Idea 创建Maven项目时,无法在source文件下创建servlet文件问题解决!
查看>>
对 HTTP 304 的理解
查看>>
深入理解css中的margin属性
查看>>
C++ 删除字符串的两种实现方式
查看>>
电容选型
查看>>
ORA-01502: 索引'P_ABCD.PK_WEB_BASE'或这类索引的分区处于不可用状态
查看>>
Spring EL hello world实例
查看>>
百度地图API地理位置和坐标转换
查看>>
MyBatis学习总结(六)——调用存储过程
查看>>
code-代码平台服务器路径
查看>>