分享

.NET连接SAP系统专题:C#调用RFC代码(三)

 jackzzz 2018-01-08
1 //程序代码页面引用: 2 using SAP.Middleware.Connector; 3 4 //代码如下: 5 namespace SAP_RFC 6 7 { 8 9 public partial class Form1 : Form 10 11 { 12 13 string MATNR = string.Empty; 14 15 public Form1() 16 17 { 18 19 InitializeComponent(); 20 21 } 22 23 public void nco() 24 25 { 26 27 IDestinationConfiguration ID = new MyBackendConfig(); 28 29 RfcDestinationManager.RegisterDestinationConfiguration(ID); 30 31 RfcDestination prd = RfcDestinationManager.GetDestination('PRD_000'); 32 33 RfcDestinationManager.UnregisterDestinationConfiguration(ID); 34 35 nco(prd); 36 37 } 38 39 public void nco(RfcDestination prd) 40 41 { 42 43 RfcRepository repo = prd.Repository; 44 45 IRfcFunction companyBapi = repo.CreateFunction('ZRFC_MARA_INFO'); //调用函数名 46 47 companyBapi.SetValue('MATNR', MATNR); //设置Import的参数 48 49 companyBapi.Invoke(prd); //执行函数 50 51 IRfcTable table = companyBapi.GetTable('IT_MARA'); //获取相应的品号内表 52 53 string MAKTX = companyBapi.GetValue('MAKTX').ToString(); //获取品名 54 55 DataTable dt = new DataTable(); //新建表格 56 57 dt.Columns.Add('品号'); //表格添加一列 58 59 for (int i = 0; i < table.RowCount; i++) 60 61 { 62 63 table.CurrentIndex = i; //当前内表的索引行 64 65 DataRow dr = dt.NewRow(); 66 67 dr[0] = table.GetString('MATNR'); //获取表格的某行某列的值 68 69 dt.Rows.Add(dr); //填充该表格的值 70 71 } 72 73 if (MATNR == '') 74 75 { 76 77 for (int i = 0; i < dt.Rows.Count; i++) 78 79 { 80 81 this.comboBox1.Items.Add(dt.Rows[i][0].ToString()); //填充下拉框 82 83 } 84 85 } 86 87 this.label1.Text = MAKTX; //显示品名 88 89 prd = null; 90 91 repo = null; 92 93 } 94 95 96 97 //登陆SAP前的准备工作 98 99 public class MyBackendConfig : IDestinationConfiguration100 101 {102 103 public RfcConfigParameters GetParameters(String destinationName)104 105 {106 107 if ('PRD_000'.Equals(destinationName))108 109 {110 111 RfcConfigParameters parms = new RfcConfigParameters();112 113 parms.Add(RfcConfigParameters.AppServerHost, '192.168.1.3'); //SAP主机IP114 115 parms.Add(RfcConfigParameters.SystemNumber, '00'); //SAP实例116 117 parms.Add(RfcConfigParameters.User, 'MENGXIN'); //用户名118 119 parms.Add(RfcConfigParameters.Password, '5239898'); //密码120 121 parms.Add(RfcConfigParameters.Client, '888'); // Client122 123 parms.Add(RfcConfigParameters.Language, 'ZH'); //登陆语言124 125 parms.Add(RfcConfigParameters.PoolSize, '5');126 127 parms.Add(RfcConfigParameters.MaxPoolSize, '10');128 129 parms.Add(RfcConfigParameters.IdleTimeout, '60');130 131 return parms;132 133 }134 135 else return null;136 137 }138 139 public bool ChangeEventsSupported()140 141 {142 143 return false;144 145 }146 147 public event RfcDestinationManager.ConfigurationChangeHandler ConfigurationChanged;148 149 }150 151 152 153 private void Form1_Load(object sender, EventArgs e)154 155 {156 157 comboBox1.Items.Clear();158 159 nco();160 161 comboBox1.SelectedIndex = 1;162 163 }164 165 //当下拉框索引变化的时候传递品号进去查询出品名出来166 167 private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)168 169 {170 171 MATNR = comboBox1.Text.ToString();172 173 nco();174 175 }176 177 }178 179 }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多