ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

.NET连接SAP系统专题:C#(NCO3)调用BAPI的代码(七)

2021-04-23 19:02:41  阅读:297  来源: 互联网

标签:function BAPI SetValue C# NCO3 Add RfcConfigParameters parms


     上面博文可知BAPI_USER_CREATE的一些结构和参数。所以在C#中要调用它就很清楚了要输入哪些参数了。

      1、首先引用dll,然后在程序开头:using SAP.Middleware.Connector;

      2、接下去就是设置登陆参数了,以前相关博文都有说明:

      public class MyBackendConfig : IDestinationConfiguration

        {

            public RfcConfigParameters GetParameters(String destinationName)

            {

                if ("PRD_000".Equals(destinationName))

                {

                    RfcConfigParameters parms = new RfcConfigParameters();

                    parms.Add(RfcConfigParameters.AppServerHost, "192.168.1.3");

                    parms.Add(RfcConfigParameters.SystemNumber, "00");

                    parms.Add(RfcConfigParameters.User, "MENGXIN");

                    parms.Add(RfcConfigParameters.Password, "5239898");

                    parms.Add(RfcConfigParameters.Client, "888");

                    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;

        }

        3、设置一个方法,引用这个登陆参数的类:

        public void nco()

        {

            IDestinationConfiguration ID = new MyBackendConfig();

            RfcDestinationManager.RegisterDestinationConfiguration(ID);

            RfcDestination prd = RfcDestinationManager.GetDestination("PRD_000");

            RfcDestinationManager.UnregisterDestinationConfiguration(ID);

            nco(prd);

        }

        4、然后就是开始了调用代码,以下代码全部放出,然后一行一行说明:

        public void nco(RfcDestination prd)

        {

            //选择要调用的BAPI的名称

            RfcFunctionMetadata BAPI_COMPANYCODE_GETDETAIL_MD = prd.Repository.GetFunctionMetadata("BAPI_USER_CREATE");

            //新建调用该BAPI的一个“实例”

            IRfcFunction function = null;

            function = BAPI_COMPANYCODE_GETDETAIL_MD.CreateFunction();

            //因为用户名称是一个字段,所以直接赋予字符串即可

            function.SetValue("USERNAME", USERID.Text.Trim());

            //接下去是密码。因为密码是一个结构,该结构只有一个栏位,所以这里先获取这个密码结构

            IRfcStructure PWD = function.GetStructure("PASSWORD");

            //设置这个结构中的这个栏位的内容

            PWD.SetValue("BAPIPWD", password.Text.Trim());

            //再把这个结构传进去给作为密码参数

            function.SetValue("PASSWORD", PWD);

            //这个是登陆信息,类型也是一个结构,所以这里获取出这个登录信息的结构出来

            IRfcStructure logo = function.GetStructure("LOGONDATA");

            //以下两个是设置这个登陆结构的一些栏位的值

            logo.SetValue("GLTGV", "20110821");

            logo.SetValue("GLTGB", "99991231");

            //将登陆信息的结构传进去给LOGONDATA

            function.SetValue("LOGONDATA", logo);   //设置参数

            //这个是地址信息,取结构,然后赋值,再将它传进去

            IRfcStructure address = function.GetStructure("ADDRESS");

            address.SetValue("FIRSTNAME", firstname.Text.Trim());

            address.SetValue("LASTNAME", lastname.Text.Trim());

            address.SetValue("DEPARTMENT", "资讯室");

            function.SetValue("ADDRESS", address);   //设置参数

            //以下这个DEFAULTS是账户的默认信息,不是必须要的。我们这里利用它设置登入账户的语言为ZH

            IRfcStructure DEFAULTS = function.GetStructure("DEFAULTS");

            DEFAULTS.SetValue("LANGU", "1");  //语言代码,对应简体中文

            function.SetValue("DEFAULTS", DEFAULTS);

            //以下这个是RETURN,是回传结果的结构。记住,这里跟上面不一样,上面是Structure,这里则是Table!!

            IRfcTable returnStructure = function.GetTable("RETURN");

            function.Invoke(prd);//提交调用BAPI   

            //弹出对话框显示调用结果

            MessageBox.Show(returnStructure.GetString("MESSAGE").ToString());            

            prd = null;

        }

        5、程序运行结果如下:

                  

            6、登陆到SAP,运行SU01,输入IT_XM01,看看结果:

            

            

            

            当然,如果该用户已经存在了你还去调用这个BAPI生成用户,系统会很知趣的提示:

            

            使用IT_XM01登陆系统,一切OK,系统状态如下:

            

           新建的账户一点权限也没有的,此时可以调用其他BAPI对其新增权限!!方法有点不太一样,需要传入一个表格作为参数,下篇博文放出。

标签:function,BAPI,SetValue,C#,NCO3,Add,RfcConfigParameters,parms
来源: https://blog.51cto.com/u_2826257/2727619

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有