/// <summary> /// 创建费用单据 /// </summary> /// <param name="model"></param> /// <returns></returns> public static SapRetrun CreateAccounting(SapUpload model, string config) { string strConfig = String.Empty; if (config == "RFC") { strConfig = RFC; } else if (config == "RFG") { strConfig = RFG; } RfcDestination conn = SapConnection.GetConnection(strConfig); RETAIL retail = new RETAIL(conn); //零售系统 var obj = retail.CREATE_BAPI_ACC_DOCUMENT_POST(model); //执行创建凭证的原始方法 return(obj); }
///// <summary> ///// 获取物料状态 ///// </summary> ///// <param name="MatCode">物料编号</param> ///// <param name="rList"></param> ///// <returns></returns> //public List<MaterialStatus> ZRFC_GETMATORDER(string MatCode) //{ // List<MaterialStatus> rList = new List<MaterialStatus>(); // try // { // RfcRepository repo = Conn.Repository; // IRfcFunction rfcfunc = repo.CreateFunction("ZRFC_GETMATORDER"); // rfcfunc.SetValue("MATNR", MatCode); // rfcfunc.Invoke(Conn); // IRfcTable RfcTable = rfcfunc.GetTable("MATNRDATA"); // for (int i = 0; i < RfcTable.Count(); i++) // { // MaterialStatus model = new MaterialStatus(); // //model.MATNR = RfcTable[i].GetValue("MATNR").ToString(); // //model.ZCANORDER = RfcTable[i].GetValue("ZCANORDER").ToString(); // //model.ZREPROD = RfcTable[i].GetValue("ZREPROD").ToString(); // rList.Add(model); // } // } // catch // { // rList = null; // } // return rList; //} public SapRetrun CREATE_BAPI_ACC_DOCUMENT_POST(SapUpload model) { try { RfcRepository repo = Conn.Repository; IRfcFunction Fun = repo.CreateFunction("ZBAPI_ACC_DOCUMENT_POST"); //结构体doc IRfcStructure tb = Fun.GetStructure("DOCUMENTHEADER"); DOCUMENTHEADER doc = model.结构体DOC; tb.SetValue("USERNAME", doc.USERNAME); tb.SetValue("HEADER_TXT", doc.HEADER_TXT); tb.SetValue("COMP_CODE", doc.COMP_CODE); tb.SetValue("DOC_DATE", doc.DOC_DATE); tb.SetValue("PSTNG_DATE", doc.PSTNG_DATE); tb.SetValue("TRANS_DATE", doc.TRANS_DATE); tb.SetValue("DOC_TYPE", doc.DOC_TYPE); tb.SetValue("BUS_ACT", doc.BUS_ACT); tb.SetValue("OBJ_TYPE", doc.OBJ_TYPE); tb.SetValue("REF_DOC_NO", doc.REF_DOC_NO); //一般性总账科目 if (model.一般性总账 != null && model.一般性总账.Count > 0) { IRfcTable tb1 = Fun.GetTable("ACCOUNTGL"); foreach (var item in model.一般性总账) { tb1.Insert(); tb1.CurrentRow.SetValue("ITEMNO_ACC", item.ITEMNO_ACC); tb1.CurrentRow.SetValue("GL_ACCOUNT", item.GL_ACCOUNT); tb1.CurrentRow.SetValue("ITEM_TEXT", item.ITEM_TEXT); tb1.CurrentRow.SetValue("ALLOC_NMBR", item.ALLOC_NMBR); tb1.CurrentRow.SetValue("COSTCENTER", item.COSTCENTER); tb1.CurrentRow.SetValue("PROFIT_CTR", item.PROFIT_CTR); tb1.CurrentRow.SetValue("ACCT_TYPE", item.ACCT_TYPE); if (!string.IsNullOrEmpty(item.ASSET_NO)) { tb1.CurrentRow.SetValue("ASSET_NO", item.ASSET_NO); tb1.CurrentRow.SetValue("SUB_NUMBER", "0000"); tb1.CurrentRow.SetValue("ACCT_TYPE", "A"); } } } //科目D if (model.科目D != null && model.科目D.Count > 0) { IRfcTable tb1 = Fun.GetTable("ACCOUNTRECEIVABLE"); foreach (var item in model.科目D) { tb1.Insert(); tb1.CurrentRow.SetValue("ITEMNO_ACC", item.ITEMNO_ACC); tb1.CurrentRow.SetValue("CUSTOMER", item.CUSTOMER); tb1.CurrentRow.SetValue("ITEM_TEXT", item.ITEM_TEXT); tb1.CurrentRow.SetValue("ALLOC_NMBR", item.ALLOC_NMBR); tb1.CurrentRow.SetValue("PROFIT_CTR", item.PROFIT_CTR); } } //科目K if (model.科目K != null && model.科目K.Count > 0) { IRfcTable tb1 = Fun.GetTable("ACCOUNTPAYABLE"); foreach (var item in model.科目K) { tb1.Insert(); tb1.CurrentRow.SetValue("ITEMNO_ACC", item.ITEMNO_ACC); tb1.CurrentRow.SetValue("VENDOR_NO", item.VENDOR_NO); tb1.CurrentRow.SetValue("ITEM_TEXT", item.ITEM_TEXT); tb1.CurrentRow.SetValue("ALLOC_NMBR", item.ALLOC_NMBR); if (!string.IsNullOrEmpty(item.PO_NUMBER)) { tb1.CurrentRow.SetValue("SP_GL_IND", item.UMSKZ); tb1.CurrentRow.SetValue("GL_ACCOUNT", item.GL_ACCOUNT); tb1.CurrentRow.SetValue("PROFIT_CTR", item.PROFIT_CTR); } else if (!string.IsNullOrEmpty(item.PROFIT_CTR)) { tb1.CurrentRow.SetValue("GL_ACCOUNT", item.GL_ACCOUNT); tb1.CurrentRow.SetValue("PROFIT_CTR", item.PROFIT_CTR); } } } if (model.币种 != null && model.币种.Count > 0) { IRfcTable tb2 = Fun.GetTable("CURRENCYAMOUNT"); foreach (var item in model.币种) { tb2.Insert(); tb2.CurrentRow.SetValue("ITEMNO_ACC", item.ITEMNO_ACC); tb2.CurrentRow.SetValue("CURRENCY", item.CURRENCY); tb2.CurrentRow.SetValue("AMT_DOCCUR", item.AMT_DOCCUR); tb2.CurrentRow.SetValue("EXCH_RATE", item.EXCH_RATE); } } if (model.行项目 != null && model.行项目.Count > 0) { IRfcTable tb3 = Fun.GetTable("EXTENSION2"); foreach (var item in model.行项目) { tb3.Insert(); tb3.CurrentRow.SetValue("STRUCTURE", item.STRUCTURE); tb3.CurrentRow.SetValue("VALUEPART1", item.VALUEPART1); tb3.CurrentRow.SetValue("VALUEPART2", item.VALUEPART2); tb3.CurrentRow.SetValue("VALUEPART3", item.VALUEPART3); tb3.CurrentRow.SetValue("VALUEPART4", item.VALUEPART4); } } Fun.Invoke(Conn); SapRetrun result = new SapRetrun(); var voucher = Fun.GetValue("OBJ_KEY").ToString(); if (!string.IsNullOrEmpty(voucher) && voucher != "$") { result.TYPE = "S"; result.MESSAGE = "凭证上传成功"; result.VOUCHER = voucher; } else { var Return = Fun.GetTable("RETURN"); if (Return.RowCount >= 2) { result.TYPE = Return[1].GetValue("TYPE").ToString(); result.MESSAGE = Return[1].GetValue("MESSAGE").ToString(); result.VOUCHER = Return[1].GetValue("MESSAGE_V2").ToString(); } else { result.TYPE = Return[0].GetValue("TYPE").ToString(); result.MESSAGE = Return[0].GetValue("MESSAGE").ToString(); result.VOUCHER = Return[0].GetValue("MESSAGE_V2").ToString(); } } return(result); } catch (Exception ex) { throw; } }