/// <summary> /// 根据IDOC编号从SAP系统里读取一个idoc /// </summary> /// <param name="idocNumber"></param> /// <returns></returns> public Idoc GetIodcFromSapDataBase(String idocNumber) { SAPINT.Utils.ReadTable idocReadItem = null; SAPINT.Utils.ReadTable idocReadHeader = null; DataTable dtIdocItem = new DataTable(); DataTable dtIdocHeder = new DataTable(); idocNumber = idocNumber.TrimStart('0'); String criteria = idocNumber.PadLeft(16, '0'); criteria = String.Format("DOCNUM = '{0}'", criteria); String readTableFunction = ConfigFileTool.SAPGlobalSettings.GetReadTableFunction(); idocReadItem = new Utils.ReadTable(SystemName); idocReadItem.TableName = "EDID4"; idocReadItem.SetCustomFunctionName(readTableFunction); idocReadItem.AddCriteria(criteria); idocReadItem.Run(); dtIdocItem = idocReadItem.Result; if (dtIdocItem.Rows.Count == 0) { idocReadItem = new Utils.ReadTable(SystemName); idocReadItem.TableName = "EDID2"; idocReadItem.SetCustomFunctionName(readTableFunction); idocReadItem.AddCriteria(criteria); idocReadItem.Run(); dtIdocItem = idocReadItem.Result; } if (dtIdocItem.Rows.Count == 0) { idocReadItem = new Utils.ReadTable(SystemName); idocReadItem.TableName = "EDIDD_OLD"; idocReadItem.SetCustomFunctionName(readTableFunction); idocReadItem.AddCriteria(criteria); idocReadItem.Run(); dtIdocItem = idocReadItem.Result; } if (dtIdocItem.Rows.Count == 0) { throw new SAPException(String.Format("无法找到IDOC{0}明细", idocNumber)); } //读取IDOC头 idocReadHeader = new Utils.ReadTable(SystemName); idocReadHeader.TableName = "EDIDC"; idocReadHeader.SetCustomFunctionName(readTableFunction); idocReadHeader.AddCriteria(criteria); idocReadHeader.Run(); dtIdocHeder = idocReadHeader.Result; if (dtIdocHeder.Rows.Count != 1) { throw new SAPException(String.Format("无法找到IDOC{0}抬头定义", idocNumber)); } Idoc idoc = ProcessSingleIdocFromDataTable(dtIdocHeder, dtIdocItem); return(idoc); }
/// <summary> /// 根据IDOC编号从SAP系统里读取一个idoc /// </summary> /// <param name="idocNumber"></param> /// <returns></returns> public Idoc GetIodcFromSapDataBase(String idocNumber) { SAPINT.Utils.ReadTable idocReadItem = null; SAPINT.Utils.ReadTable idocReadHeader = null; DataTable dtIdocItem = new DataTable(); DataTable dtIdocHeder = new DataTable(); idocNumber = idocNumber.TrimStart('0'); String criteria = idocNumber.PadLeft(16, '0'); criteria = String.Format("DOCNUM = '{0}'", criteria); String readTableFunction = ConfigFileTool.SAPGlobalSettings.GetReadTableFunction(); idocReadItem = new Utils.ReadTable(SystemName); idocReadItem.TableName = "EDID4"; idocReadItem.SetCustomFunctionName(readTableFunction); idocReadItem.AddCriteria(criteria); idocReadItem.Run(); dtIdocItem = idocReadItem.Result; if (dtIdocItem.Rows.Count == 0) { idocReadItem = new Utils.ReadTable(SystemName); idocReadItem.TableName = "EDID2"; idocReadItem.SetCustomFunctionName(readTableFunction); idocReadItem.AddCriteria(criteria); idocReadItem.Run(); dtIdocItem = idocReadItem.Result; } if (dtIdocItem.Rows.Count == 0) { idocReadItem = new Utils.ReadTable(SystemName); idocReadItem.TableName = "EDIDD_OLD"; idocReadItem.SetCustomFunctionName(readTableFunction); idocReadItem.AddCriteria(criteria); idocReadItem.Run(); dtIdocItem = idocReadItem.Result; } if (dtIdocItem.Rows.Count == 0) { throw new SAPException(String.Format("无法找到IDOC{0}明细", idocNumber)); } //读取IDOC头 idocReadHeader = new Utils.ReadTable(SystemName); idocReadHeader.TableName = "EDIDC"; idocReadHeader.SetCustomFunctionName(readTableFunction); idocReadHeader.AddCriteria(criteria); idocReadHeader.Run(); dtIdocHeder = idocReadHeader.Result; if (dtIdocHeder.Rows.Count != 1) { throw new SAPException(String.Format("无法找到IDOC{0}抬头定义", idocNumber)); } Idoc idoc = ProcessSingleIdocFromDataTable(dtIdocHeder, dtIdocItem); return idoc; }