private void WriteSegmentToTable(string ParentNr, IRfcTable tData, IdocSegment SegToWrite, int HLevel) { tData.Append(); IRfcStructure structure = tData.CurrentRow; //RFCStructure structure = tData.AddRow(); string parentNr = tData.RowCount.ToString(); string str2 = SegToWrite.ReadDataBuffer(0, 0x3e8); structure["SEGNAM"].SetValue(SegToWrite.SegmentName); structure["MANDT"].SetValue(this.MANDT); structure["DOCNUM"].SetValue(this.DOCNUM); structure["SEGNUM"].SetValue(parentNr.PadLeft(6, "0".ToCharArray()[0])); structure["PSGNUM"].SetValue(ParentNr.PadLeft(6, "0".ToCharArray()[0])); if ((HLevel == 1) && (SegToWrite.MaxOccur > 1)) { HLevel++; } if (this._SkipHLevel) { structure["HLEVEL"].SetValue(" "); } else { structure["HLEVEL"].SetValue(Convert.ToString(HLevel).PadLeft(2, "0".ToCharArray()[0])); } structure["SDATA"].SetValue(str2); if (SegToWrite.HasChildren) { for (int i = 0; i < SegToWrite.ChildSegments.Count; i++) { this.WriteSegmentToTable(parentNr, tData, SegToWrite.ChildSegments[i], HLevel + 1); } } }
private void WriteSegmentToFile(string ParentNr, StreamWriter writer, IdocSegment SegToWrite, int HLevel) { string str = ""; str = SegToWrite.SegmentName.PadRight(30) + this.MANDT.PadRight(3) + this.DOCNUM.PadRight(0x10); string input = SegToWrite.ReadDataBuffer(0, 0x3e8).TrimEnd(new char[] { " ".ToCharArray()[0] }); string parentNr = this.SegNumForPlainFile.ToString().PadLeft(6, "0".ToCharArray()[0]); string str4 = ParentNr.PadLeft(6, "0".ToCharArray()[0]); this.SegNumForPlainFile++; str = str + parentNr + str4; if ((HLevel == 1) && (SegToWrite.MaxOccur > 1)) { HLevel++; } if (this._SkipHLevel) { str = str + " "; } else { str = str + HLevel.ToString().PadLeft(2, "0".ToCharArray()[0]); } str = str + Converts.Escape(input, plainTextEscapes, '\\'); writer.WriteLine(str); if (SegToWrite.HasChildren) { for (int i = 0; i < SegToWrite.ChildSegments.Count; i++) { this.WriteSegmentToFile(parentNr, writer, SegToWrite.ChildSegments[i], HLevel + 1); } } }
private void RegenerateSegment(IdocSegment seg) { try { if (seg.Fields.Count == 0) { try { IdocSegment segment = this.CreateSegment(seg.SegmentName); string str = seg.ReadDataBuffer(0, 0x3e8); seg.Fields = segment.Fields; foreach (IdocSegmentField field in seg.Fields) { field.FieldValue = str.Substring(field.OffsetInBuffer, field.ExternalLength); } } catch { } } for (int i = 0; i < seg.ChildSegments.Count; i++) { this.RegenerateSegment(seg.ChildSegments[i]); } } catch { } }
private void WriteSegment(ref string ret, IdocSegment seg) { string str = ret; ret = str + seg.SegmentName + " " + seg.Description + "\r\n"; ret = ret + seg.ReadDataBuffer(0, 0x3e8) + "\r\n"; for (int i = 0; i < seg.ChildSegments.Count; i++) { this.WriteSegment(ref ret, seg.ChildSegments[i]); } }
private XmlNode GetXMLNodeFromSegment(IdocSegment seg, XmlDocument doc) { XmlNode node = doc.CreateNode(XmlNodeType.Element, Converts.OriginalNameToXmlName(seg.SegmentName), ""); if (seg.Fields.Count > 0) { foreach (IdocSegmentField field in seg.Fields) { if (!field.FieldValue.ToString().Trim().Equals("")) { XmlNode newChild = doc.CreateNode(XmlNodeType.Element, Converts.OriginalNameToXmlName(field.FieldName), ""); newChild.InnerText = field.FieldValue.ToString().TrimEnd(new char[0]); node.AppendChild(newChild); } } } else { XmlNode node3 = doc.CreateNode(XmlNodeType.Element, "BUFFER", ""); node3.InnerText = seg.ReadDataBuffer(0, 0x3e8).TrimEnd(" ".ToCharArray()); node.AppendChild(node3); } foreach (IdocSegment segment in seg.ChildSegments) { node.AppendChild(this.GetXMLNodeFromSegment(segment, doc)); } return node; }