网站首页 > 法规 >用友t3采购发票提示NULL无效

用友t3采购发票提示NULL无效

企业如果上了ERP系统,比如SAP、用友、金蝶或者E10等等,只需要ERP里面提供相应的接口,则可以直接将PMC创建的工单信息抛转至 MTS 系统,当该工单生产完成之后,MTS 将完成数据回传至 ERP,方便货仓进行入仓与扣数,这篇文章介绍 MTS 与 SAP 之间如何对接。

1.SAP里面必须有一个Function,类似 MSSQL里面的存储过程一样,根据用户传入的参数,返回所需要的数据,这一部分程序通过 ABAP 完成,不在本文的讲述范围之类,这里略过。

2.MTS连接到 SAP,Call对应的 Function,拿到数据后进行处理,这里需要准备以下几个参数。

  • SAP服务器的IP地址
  • 访问SAP的用户名
  • 访问SAP的密码
  • SAP系统的实例编号
  • SAP系统的客户端编号

为了方便多个地方调用,这里将Call SAP 的代码写成一个方法,避免重复代码,代码如下:

using SAP.Middleware.Connector;

public class SapHelper

{

public IRfcTable GetSapData(string FunctionName, string TableName, List<string> Key, List<string> Value)

{

string Server = ConfigurationManager.AppSettings["SapServer"];

string Client = ConfigurationManager.AppSettings["SapClient"];

string User = ConfigurationManager.AppSettings["SapUser"];

string Password = ConfigurationManager.AppSettings["SapPwd"];

string SystemNumber = ConfigurationManager.AppSettings["SapSystemNumber"];

RfcConfigParameters rfcPar = new RfcConfigParameters();

rfcPar.Add(RfcConfigParameters.Name, "CON");

rfcPar.Add(RfcConfigParameters.AppServerHost, Server);

rfcPar.Add(RfcConfigParameters.Client, Client);

rfcPar.Add(RfcConfigParameters.User, User);

rfcPar.Add(RfcConfigParameters.Password, Password);

rfcPar.Add(RfcConfigParameters.SystemNumber, SystemNumber);

rfcPar.Add(RfcConfigParameters.Language, "EN");

RfcDestination dest = RfcDestinationManager.GetDestination(rfcPar);

RfcRepository rfcrep = dest.Repository;

IRfcFunction myfun = null;

myfun = rfcrep.CreateFunction(FunctionName);

IRfcTable IrfTable = myfun.GetTable(TableName);

if (Key.Count != Value.Count)

{

return null;

}

for (int i = 0; i < Key.Count; i++)

{

myfun.SetValue(Key[i].ToString(), Value[i].ToString());

}

myfun.Invoke(dest);

return IrfTable;

}

}

当用户输入需要下载的工单号码之后,系统连接到 SAP 开始调用函数:

string Order = Request["LotName"];

if (string.IsNullOrEmpty(Order))

{

return;

}

      

          //这里强烈建议将参数以key value的形式传进去,方便很多。

List<string> Key1 = new List<string>();

List<string> Value1 = new List<string>();

Key1.Insert(0, "ORDER_NUMBER");

Value1.Insert(0, Order);

IRfcTable IrfTable_Order = new SapHelper().GetSapData("function", "table", Key1, Value1);

DataTable dt_Order = new DataTable();

dt_Order.Columns.Add("LotName");

dt_Order.Columns.Add("ProductName");

dt_Order.Columns.Add("LotQuantity");

dt_Order.Columns.Add("Customer");

dt_Order.Columns.Add("Plant");

for (int i = 0; i < IrfTable_Order.Count; i++)

{

IrfTable_Order.CurrentIndex = i;

DataRow dr = dt_Order.NewRow();

dr["LotName"] = IrfTable_Order.GetString("AUFNR");

dr["ProductName"] = IrfTable_Order.GetString("STLBEZ");

dr["LotQuantity"] = Math.Round(Convert.ToDouble(IrfTable_Order.GetString("GAMNG")), 0).ToString();

dr["Customer"] = IrfTable_Order.GetString("PSPEL");

dr["Plant"] = IrfTable_Order.GetString("WERKS");

dt_Order.Rows.Add(dr);

}

var json = Newtonsoft.Json.JsonConvert.SerializeObject(dt_Order);

var totalRecordCount = dt_Order.Rows.Count.ToString();

json = "{\"total\":" + totalRecordCount + ",\"rows\":" + json + "}";

Response.Write(json);

Response.End();

注意,从SAP里面得到的数据是一张 rfc table,并不是我们常用的 DataTable,所以这里需要进行转换后才能使用,最后将数据转换为 JSON 输出即可:


C#连接SAP并下载工单资料「生产系统与ERP对接」


C#连接SAP并下载工单资料「生产系统与ERP对接」

相关内容

TAG:   sap order string
用友t3采购发票提示NULL无效文档下载.: PDF DOC TXT
您可能感兴趣的文章
24h快讯
违法生育包括哪些情形,什么叫违法生育
一、教师如果违法计划生育会有什么处罚如果是教师,违反计划生育规定,应由计生机......
2024-04-05 法规
自残违法吗?自残算不算犯罪
一、教唆他人自残构成犯罪吗教唆他人自残有故意杀人的嫌疑,所以规劝大家不要以身......
2024-04-05 法规
新昌机动车违法?机动车违章处理时间限制
一、新昌货车通行证怎么办理1.办理新昌货车通行证是可行的。2.因为新昌货车通......
2024-04-05 法规
违法举报网站,公安干警违法举报平台
一、国家有奖举报平台以举报违章车辆为例,有奖举报平台如下:为加大监管力度,营......
2024-04-05 法规
查看更多