zoukankan      html  css  js  c++  java
  • C#调用sap接口及返回数据到sap

    public class SapClass
    {
    /// <summary>
    ///
    /// </summary>
    /// <param name="fphm">发票号码</param>
    /// <param name="fprq">发票开票日期</param>
    /// <param name="fkf">付款方</param>
    /// <param name="fxqd">分销渠道 </param>
    public DataTable nco(string fphm, DateTime fprq, string fkf, char fxqd)
    {

    //MyBackendConfig config = new MyBackendConfig();
    IDestinationConfiguration ID = new MyBackendConfig();

    RfcDestinationManager.RegisterDestinationConfiguration(ID);

    RfcDestination prd = RfcDestinationManager.GetDestination(PlatRunning.Global.AppSettings.GetValue("SapName"));//SAP系统标识

    DataTable dt = nco(prd, fphm, fprq, fkf, fxqd);
    RfcDestinationManager.UnregisterDestinationConfiguration(ID);
    return dt;

    }

    /// <summary>
    /// SAPTOJS
    /// </summary>
    /// <param name="prd"></param>
    /// <param name="fphm"></param>
    /// <param name="fprq"></param>
    /// <param name="fkf"></param>
    /// <param name="fxqd"></param>
    private DataTable nco(RfcDestination prd, string fphm, DateTime fprq, string fkf, char fxqd)
    {
    RfcRepository repo = null;
    try
    {
    repo = prd.Repository;
    }
    catch (Exception ex)
    {
    throw (ex);
    }

    IRfcFunction companyBapi = repo.CreateFunction("ZSD_SY_FUC_SAPTOJS"); //调用函数名
    //设置Import的参数
    companyBapi.SetValue("VBELN", fphm);
    companyBapi.SetValue("ERDAT", fprq);
    companyBapi.SetValue("KUNRG", fkf);
    companyBapi.SetValue("ZBJ", fxqd);

    companyBapi.Invoke(prd); //执行函数

    IRfcTable table = companyBapi.GetTable("IT_JS_EXPORT"); //获取相应的内表IT_JS_EXPORT
    //提前实例化一个空的表结构处理
    DataTable dt = CreateSapToJSTable();
    for (int i = 0; i < table.Count; i++)
    {
    table.CurrentIndex = i;
    DataRow dr = dt.NewRow();
    dr["fxqd"] = table[i].GetString("VTWEG");
    dr["fphm"] = table[i].GetString("VBELN");
    dr["fphh"] = table[i].GetString("POSNR");
    dr["fpcjsj"] = table[i].GetString("ERDAT");
    dr["khdm"] = table[i].GetString("KUNRG");
    dr["khmc"] = table[i].GetString("NAME");
    dr["khdzch"] = table[i].GetString("STRAS");
    dr["sapddh"] = table[i].GetString("AUBEL");
    dr["khddh"] = table[i].GetString("BSTKD");
    dr["sapwlh"] = table[i].GetString("MATNR");
    dr["khwlh"] = table[i].GetString("KDMAT");
    dr["spmc"] = table[i].GetString("ARKTX");
    dr["kpm"] = table[i].GetString("TEXT");
    dr["jldw"] = table[i].GetString("VRKME");
    dr["sl"] = table[i].GetString("FKIMG");
    dr["bb"] = table[i].GetString("WAERK");
    dr["dj"] = table[i].GetString("KBETR");
    dr["jgdw"] = table[i].GetString("KPEIN");
    dr["zj"] = table[i].GetString("NETWR");
    dr["shl"] = table[i].GetString("MWSK1");
    dr["se"] = table[i].GetString("MWSBP");
    dr["myxz"] = table[i].GetString("KTGRM");
    dt.Rows.Add(dr);
    }
    return dt;
    }

    /// <summary>
    ///
    /// </summary>
    /// <param name="sapfph">sap发票号</param>
    /// <param name="qtfph">生成发票号</param>
    public DataTable nco(string sapfph, string qtfph)
    {
    //MyBackendConfig config = new MyBackendConfig();
    IDestinationConfiguration ID = new MyBackendConfig();

    RfcDestinationManager.RegisterDestinationConfiguration(ID);

    RfcDestination prd = RfcDestinationManager.GetDestination(PlatRunning.Global.AppSettings.GetValue("SapName"));//SAP系统标识
    DataTable dt = nco(prd, sapfph, qtfph);
    RfcDestinationManager.UnregisterDestinationConfiguration(ID);
    return dt;
    }

    /// <summary>
    /// JSTOSAP
    /// </summary>
    /// <param name="prd"></param>
    /// <param name="sapfph"></param>
    /// <param name="qtfph"></param>
    private DataTable nco(RfcDestination prd, string sapfph, string qtfph)
    {
    DataTable dt = WriteTableToSAP(prd, sapfph, qtfph);
    return dt;
    }
    #region 写回数据到SAP
    private DataTable WriteTableToSAP(RfcDestination rfcDest, string sapfph, string qtfph)
    {
    RfcRepository repo = rfcDest.Repository;
    IRfcFunction funBapi = repo.CreateFunction("ZSD_SY_FUC_JSTOSAP");
    //调用函数名
    IRfcTable tblROF = funBapi.GetTable("IT_JSTOSAP");
    tblROF.Clear();
    tblROF.Insert();
    tblROF.CurrentRow.SetValue("VBELN", sapfph);
    tblROF.CurrentRow.SetValue("JSVBELN", qtfph);
    funBapi.SetValue("IT_JSTOSAP", tblROF);
    funBapi.Invoke(rfcDest);
    //引用回传结果
    IRfcTable ReturnTable = funBapi.GetTable("IT_RETURN");
    DataTable dtReturn = ReturnMessage();
    for (int i = 0; i < ReturnTable.Count; i++)
    {
    ReturnTable.CurrentIndex = i;
    DataRow dr = dtReturn.NewRow();
    dr["isSuccess"] = ReturnTable[i].GetString("TYPE");
    dr["ReturnMessage"] = ReturnTable[i].GetString("MESSAGE");
    dtReturn.Rows.Add(dr);
    }
    return dtReturn;
    }
    #endregion
    #region 接口参数
    public class MyBackendConfig : IDestinationConfiguration
    {
    public RfcConfigParameters GetParameters(String destinationName)
    {
    if ("DEV".Equals(destinationName))
    {
    string strtemp = string.Empty;
    RfcConfigParameters parms = new RfcConfigParameters();

    parms.Add(RfcConfigParameters.AppServerHost, "192.168.0.122");//SAP主机IP
    parms.Add(RfcConfigParameters.SystemNumber, "00");//SAP实例
    parms.Add(RfcConfigParameters.User, "SYRFC");//用户名
    parms.Add(RfcConfigParameters.Password, "123456"); //密码
    parms.Add(RfcConfigParameters.Client, "710");// 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;

    }
    #endregion

    public DataTable CreateSapToJSTable()
    {
    DataTable dt = new DataTable();
    dt.Columns.Add("fxqd"); //分销渠道
    dt.Columns.Add("fphm");//发票号码
    dt.Columns.Add("fphh");//发票行号
    dt.Columns.Add("fpcjsj");//发票创建时间
    dt.Columns.Add("khdm");//客户代码
    dt.Columns.Add("khmc");//客户名称
    dt.Columns.Add("khdzch");//客户地址(中文)
    dt.Columns.Add("sapddh");//sap订单号
    dt.Columns.Add("khddh");//客户订单号
    dt.Columns.Add("sapwlh");//sap物料号
    dt.Columns.Add("khwlh");//客户物料号
    dt.Columns.Add("spmc");//商品名称
    dt.Columns.Add("kpm");//开票名
    dt.Columns.Add("jldw");//计量单位
    dt.Columns.Add("sl");//数量
    dt.Columns.Add("bb");//币别
    dt.Columns.Add("dj");//含税单价
    dt.Columns.Add("jgdw");//价格单位
    dt.Columns.Add("zj");//总价
    dt.Columns.Add("shl");//税率
    dt.Columns.Add("se");//税额
    dt.Columns.Add("myxz");//贸易性质
    return dt;
    }
    public DataTable ReturnMessage()
    {
    DataTable dt = new DataTable();
    dt.Columns.Add("isSuccess"); //成功与否
    dt.Columns.Add("ReturnMessage");//Message
    return dt;
    }
    }

  • 相关阅读:
    [引用]SQLServer占CPU100%
    负能量程序员杂谈(2)- 管理中的情和义
    负能量程序员杂谈(1)-世界上最单纯的职业:程序员
    FLV文件格式官方规范详解
    rtmp官方标准规范详细解析
    万恶的KPI、新兴的OKR及让人纠结的程序员考核
    管理点滴(一)
    选拨管理者的一个必要条件
    团队管理的简单总结:少即是多,体力透支,负能量管理,自我进化团队,沟通
    我的2015计划,目标
  • 原文地址:https://www.cnblogs.com/JohnnyBao/p/3745000.html
Copyright © 2011-2022 走看看