public string GetVoucherNo(DataTable dt, string Plant, string Username)
        {
            
            try
            {
                string nowDate = DateTime.Now.ToString("yyyyMMdd");
                RfcDestination dest = rfc_public.GetRfcDestination("SMP");
                IRfcFunction func = dest.Repository.CreateFunction("ZGOODS_MOVE");
                func.SetValue("I_OPTYPE", "A1");//操作类别
                IRfcStructure rfcstr = func.GetStructure("I_GOODSMVT_HEADER");//所属结构 传入
                rfcstr.SetValue("HEADER_TXT", "凭证抬头文本");//凭证抬头文本
                rfcstr = func.GetStructure("ZLF_LOG");//所属结构 传入
                rfcstr.SetValue("OP_USER", Username);//用户名
                rfcstr.SetValue("MACHINE_NAME", Username);//电脑名
                IRfcTable rfcTable = func.GetTable("T_GM_ITEM");//所属表  传入
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    string Material_Code = dt.Rows[i]["物料编码"].ToString();
                    string Count = dt.Rows[i]["数量"].ToString();
                    string CompanyNo = dt.Rows[i]["公司代号"].ToString();
                    DataSet dsCompanyNo = _bll.GetCompanyNo(CompanyNo);
                    string UNITCODE = dsCompanyNo.Tables[0].Rows[0]["UNITCODE"].ToString();
                    rfcTable.Insert();
                    rfcTable.CurrentRow.SetValue("MATERIAL", dt.Rows[i]["物料编码"].ToString());//物料号  物料编码
                    rfcTable.CurrentRow.SetValue("PLANT", UNITCODE);//工厂
                    rfcTable.CurrentRow.SetValue("STGE_LOC", "");//库存地点 
                    rfcTable.CurrentRow.SetValue("BATCH", dt.Rows[i]["炉批号"].ToString());//批次
                    rfcTable.CurrentRow.SetValue("STCK_TYPE", "X");//库存类别
                    rfcTable.CurrentRow.SetValue("ENTRY_UOM", dt.Rows[i]["单位"].ToString());//单位
                    rfcTable.CurrentRow.SetValue("ENTRY_QNT", dt.Rows[i]["数量"].ToString());//数量
                    rfcTable.CurrentRow.SetValue("PO_NUMBER", dt.Rows[i]["订单号"].ToString());//采购订单
                    rfcTable.CurrentRow.SetValue("PO_ITEM", dt.Rows[i]["行号"].ToString());//采购订单行号
                    rfcTable.CurrentRow.SetValue("ITEM_TEXT", "");//项目文本
}
                func.Invoke(dest);
                rfcstr = func.GetStructure("O_GOODSMVT_HEADRET");//所属结构 传出
                string VoucherNo = rfcstr.GetValue("MAT_DOC").ToString();//物料凭证编号
                if (VoucherNo != "")
                    return VoucherNo;
rfcTable = func.GetTable("RETURN");//所属表 传出
                if (rfcTable.RowCount > 0)
                {
                    rfcTable.CurrentIndex = 0;
                    string type = rfcTable.GetString("TYPE");//返回消息类型
                    string message = rfcTable.GetString("MESSAGE");//消息文本
                }
                return "";
            }
            catch (Exception ex)
            {
                return "";
            }
接口文档
}
原文:https://www.cnblogs.com/codejimmygao/p/14604775.html