Esempio n. 1
0
        /// <summary>
        /// 根据IDOC内容,递归创建一个IDOC树。
        /// </summary>
        /// <param name="idocSegment">IDOC 段节点</param>
        /// <param name="node2"></param>
        private void buildTreeNode(SAPINT.Idocs.IdocSegment idocSegment, TreeNode node2)
        {
            var      segmentName = idocSegment.SegmentName + " " + idocSegment.SegmentNumber.PadLeft(3, '0');
            TreeNode node3       = node2.Nodes.Add(segmentName);

            idocSegmentList.Add(segmentName, idocSegment);
            if (idocSegment.HasChildren)
            {
                foreach (SAPINT.Idocs.IdocSegment item in idocSegment.ChildSegments)
                {
                    buildTreeNode(item, node3);
                }
            }
        }
Esempio n. 2
0
        public IdocSegment Clone()
        {
            IdocSegment segment = new IdocSegment {
                _DataBuffer  = this._DataBuffer,
                _Description = this._Description,
                _SegmentName = this._SegmentName,
                _SegmentType = this._SegmentType,
                _MaxOccur    = this._MaxOccur
            };

            for (int i = 0; i < this._Fields.Count; i++)
            {
                IdocSegmentField newParameter = this._Fields[i].Clone();
                segment.Fields.Add(newParameter);
            }
            return(segment);
        }
Esempio n. 3
0
        /// <summary>
        /// 根据IDOC内容,递归创建一个IDOC树。
        /// </summary>
        /// <param name="idocSegment">IDOC 段节点</param>
        /// <param name="node2"></param>
        private void BuildTreeNode(SAPINT.Idocs.IdocSegment idocSegment, TreeNode node2)
        {
            var segmentName = string.Empty;

            if (idocSegment.SegmentNumber == null)
            {
                segmentName = idocSegment.SegmentName;
            }
            else
            {
                segmentName = idocSegment.SegmentName + " " + idocSegment.SegmentNumber.PadLeft(3, '0');
            }

            TreeNode node3 = node2.Nodes.Add(segmentName);

            idocSegmentList.Add(segmentName, idocSegment);
            if (idocSegment.HasChildren)
            {
                foreach (SAPINT.Idocs.IdocSegment item in idocSegment.ChildSegments)
                {
                    BuildTreeNode(item, node3);
                }
            }
        }
Esempio n. 4
0
        private static void processSingleIdoc(IRfcStructure tControl, IRfcTable datarows)
        {
            Idoc idoc = new Idoc
            {
                TABNAM = tControl["TABNAM"].GetValue().ToString().Trim(),
                MANDT = tControl["MANDT"].GetValue().ToString().Trim(),
                DOCNUM = tControl["DOCNUM"].GetValue().ToString().Trim(),
                DOCREL = tControl["DOCREL"].GetValue().ToString().Trim(),
                STATUS = tControl["STATUS"].GetValue().ToString().Trim(),
                DIRECT = tControl["DIRECT"].GetValue().ToString().Trim(),
                OUTMOD = tControl["OUTMOD"].GetValue().ToString().Trim(),
                EXPRSS = tControl["EXPRSS"].ToString().Trim(),
                IDOCTYP = tControl["IDOCTYP"].GetValue().ToString().Trim(),
                CIMTYP = tControl["CIMTYP"].GetValue().ToString().Trim(),
                MESTYP = tControl["MESTYP"].GetValue().ToString().Trim(),
                MESCOD = tControl["MESCOD"].GetValue().ToString().Trim(),
                MESFCT = tControl["MESFCT"].GetValue().ToString().Trim(),
                STD = tControl["STD"].GetValue().ToString().Trim(),
                STDVRS = tControl["STDVRS"].GetValue().ToString().Trim(),
                STDMES = tControl["STDMES"].GetValue().ToString().Trim(),
                SNDPOR = tControl["SNDPOR"].GetValue().ToString().Trim(),
                SNDPRT = tControl["SNDPRT"].GetValue().ToString().Trim(),
                SNDPFC = tControl["SNDPFC"].GetValue().ToString().Trim(),
                SNDPRN = tControl["SNDPRN"].GetValue().ToString().Trim(),
                SNDSAD = tControl["SNDSAD"].GetValue().ToString().Trim(),
                SNDLAD = tControl["SNDLAD"].GetValue().ToString().Trim(),
                RCVPOR = tControl["RCVPOR"].GetValue().ToString().Trim(),
                RCVPRT = tControl["RCVPRT"].GetValue().ToString().Trim(),
                RCVPFC = tControl["RCVPFC"].GetValue().ToString().Trim(),
                RCVPRN = tControl["RCVPRN"].GetValue().ToString().Trim(),
                RCVSAD = tControl["RCVSAD"].GetValue().ToString().Trim(),
                RCVLAD = tControl["RCVLAD"].GetValue().ToString().Trim(),
                CREDAT = tControl["CREDAT"].GetValue().ToString().Trim(),
                CRETIM = tControl["CRETIM"].GetValue().ToString().Trim(),
                REFINT = tControl["REFINT"].GetValue().ToString().Trim(),
                REFGRP = tControl["REFGRP"].GetValue().ToString().Trim(),
                REFMES = tControl["REFMES"].GetValue().ToString().Trim(),
                ARCKEY = tControl["ARCKEY"].GetValue().ToString().Trim(),
                SERIAL = tControl["SERIAL"].GetValue().ToString().Trim()
            };

            Hashtable hashtable = new Hashtable();
            for (int i = 0; i < datarows.RowCount; i++)
            {
                IRfcStructure structure = datarows[i];
                if (structure["DOCNUM"].GetValue().ToString().Trim().Equals(tControl["DOCNUM"].GetValue().ToString().Trim()))
                {
                    IdocSegment newSegment = new IdocSegment();
                    if (structure["PSGNUM"].GetValue().ToString() == "000000")
                    {
                        idoc.Segments.Add(newSegment);
                    }
                    else
                    {
                        IdocSegment segment2 = (IdocSegment)hashtable[structure["PSGNUM"].GetValue().ToString()];
                        if (segment2 != null)
                        {
                            segment2.ChildSegments.Add(newSegment);
                        }
                        else
                        {
                            idoc.Segments.Add(newSegment);
                        }
                    }
                    newSegment.SegmentName = structure["SEGNAM"].GetValue().ToString();
                    string content = structure["SDATA"].GetValue().ToString();
                    newSegment.WriteDataBuffer(content, 0, 0x3e8);
                    if (!hashtable.ContainsKey(structure["SEGNUM"].GetValue().ToString()))
                    {
                        hashtable.Add(structure["SEGNUM"].GetValue().ToString(), newSegment);
                    }
                }
            }

               // IdocMeta idocMeta = new IdocMeta(ConfigFileTool.SAPGlobalSettings.GetDefaultSapCient(), idoc);
               // idocMeta.getIdocTypeDefinition();
               // idocMeta.deCompileIdoc();

            idoc.SavePlainData(@"d:/test.txt");

            //idocsegment e1maram = idoc.segments["E2MARAM006", 0];

            //// loop through segments and find the right ones
            //for (int i = 0; i < e1maram.childsegments.count; i++)
            //    if (e1maram.childsegments[i].segmentname == "e2maktm001")
            //        console.writeline("materialtext found: " +
            //            e1maram.childsegments[i].readdatabuffer(4, 40));
        }
 public virtual void Add(IdocSegment NewSegment)
 {
     base.List.Add(NewSegment);
 }
Esempio n. 6
0
 public IdocSegment CreateSegment(string SegmentName)
 {
     SegmentName = SegmentName.Trim();
     if (SegmentName.Length < 3)
     {
         //  throw new ERPException(string.Format(Messages.Segment_0_notvalidforthisIdoc, SegmentName));
         throw new Exception(string.Format("{0} not valid for this Idoc", SegmentName));
     }
     IdocSegment segment = null;
     segment = (IdocSegment)this.StoredSegments[SegmentName];
     if (segment == null)
     {
         string str = SegmentName.Substring(0, SegmentName.Length - 3);
         segment = (IdocSegment)this.StoredSegments[str];
         if (segment == null)
         {
             if (SegmentName.Substring(1, 1) == "2")
             {
                 str = SegmentName.Substring(0, 1) + "1" + SegmentName.Substring(2);
             }
             else
             {
                 str = SegmentName.Substring(0, 1) + "2" + SegmentName.Substring(2);
             }
             segment = (IdocSegment)this.StoredSegments[str];
             if (segment == null)
             {
                 str = str.Substring(0, str.Length - 3);
                 segment = (IdocSegment)this.StoredSegments[str];
                 if (segment == null)
                 {
                     segment = new IdocSegment();
                 }
             }
         }
     }
     segment.SegmentName = SegmentName;
     return segment.Clone();
 }
Esempio n. 7
0
 private IdocSegment GetSegmentFromNode(XmlNode node)
 {
     IdocSegment segment;
     string segmentName = Converts.XmlNameToOriginalName(node.Name);
     try
     {
         segment = this.CreateSegment(segmentName);
     }
     catch
     {
         segment = new IdocSegment
         {
             SegmentName = segmentName
         };
     }
     for (int i = 0; i < node.ChildNodes.Count; i++)
     {
         XmlNode node2 = node.ChildNodes[i];
         if (node2.Name.Equals("BUFFER"))
         {
             segment.WriteDataBuffer(node2.InnerText, 0, 0x3e8);
             segment.Fields.Clear();
             this.RegenerateSegment(segment);
         }
         else if ((node2.ChildNodes.Count > 0) && node2.ChildNodes[0].Name.Equals("BUFFER"))
         {
             segment.ChildSegments.Add(this.GetSegmentFromNode(node2));
         }
         else
         {
             string str2 = Converts.XmlNameToOriginalName(node2.Name);
             if (this.IsSegmentValid(str2))
             {
                 segment.ChildSegments.Add(this.GetSegmentFromNode(node2));
             }
             else
             {
                 try
                 {
                     segment.Fields[str2].FieldValue = node2.InnerText;
                 }
                 catch
                 {
                     segment.WriteDataBuffer(node2.InnerText.PadRight(0x3e8), 0, 0x3e8);
                 }
             }
         }
     }
     return segment;
 }
Esempio n. 8
0
 private void WriteSegment(ref StringBuilder st, IdocSegment seg)
 {
     int maxOccur = seg.MaxOccur;
     if (maxOccur <= 0)
     {
         maxOccur = 1;
     }
     st.Append(string.Concat(new object[] { "<xsd:element name=\"", Converts.OriginalNameToXmlName(seg.SegmentName), "\" msprop:SEGMENTMAXOCCUR=\"", maxOccur, "\" maxOccurs=\"", maxOccur, "\">" }));
     st.Append("<xsd:annotation>\n");
     st.Append("<xsd:documentation>" + Converts.OriginalNameToXmlName(seg.Description.Replace("&", "")) + "</xsd:documentation>\n ");
     st.Append("</xsd:annotation>\n");
     st.Append("<xsd:complexType>\n");
     st.Append("<xsd:sequence>\n");
     foreach (IdocSegmentField field in seg.Fields)
     {
         st.Append("<xsd:element name=\"" + Converts.OriginalNameToXmlName(field.FieldName) + "\" minOccurs=\"0\">\n");
         st.Append("<xsd:annotation>\n");
         st.Append("<xsd:documentation>" + Converts.OriginalNameToXmlName(field.Description.Replace("&", "")) + "</xsd:documentation> \n");
         st.Append("</xsd:annotation>\n");
         st.Append("<xsd:simpleType>\n");
         st.Append("<xsd:restriction base=\"xsd:string\">\n");
         st.Append("<xsd:maxLength value=\"" + field.ExternalLength + "\" /> \n");
         st.Append("</xsd:restriction>\n");
         st.Append("</xsd:simpleType>\n");
         st.Append("</xsd:element>\n");
     }
     foreach (IdocSegment segment in seg.ChildSegments)
     {
         this.WriteSegment(ref st, segment);
     }
     st.Append("</xsd:sequence>\n");
     st.Append("<xsd:attribute name=\"SEGMENT\" use=\"required\">\n");
     st.Append("<xsd:simpleType>\n");
     st.Append("<xsd:restriction base=\"xsd:string\">\n");
     st.Append("<xsd:enumeration value=\"1\"/>\n");
     st.Append("</xsd:restriction>\n");
     st.Append("</xsd:simpleType>\n");
     st.Append("</xsd:attribute>\n");
     st.Append("</xsd:complexType>\n");
     st.Append("</xsd:element>\n");
 }
Esempio n. 9
0
 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
     {
     }
 }
Esempio n. 10
0
 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]);
     }
 }
Esempio n. 11
0
 private void LoadSegmentFromPlainString(string SegmentString, bool UseStoredSegments)
 {
     IdocSegment segment;
     string segmentName = SegmentString.Substring(0, 30).Trim();
     SegmentString.Substring(30, 3).Trim();
     SegmentString.Substring(0x21, 0x10).Trim();
     string key = SegmentString.Substring(0x31, 6).Trim();
     string str3 = SegmentString.Substring(0x37, 6).Trim();
     SegmentString.Substring(0x3d, 2).Trim();
     string str4 = Converts.Unescape(SegmentString.Substring(0x3f), plainTextUnescapes, '\\');
     if (UseStoredSegments)
     {
         segment = this.CreateSegment(segmentName);
     }
     else
     {
         segment = new IdocSegment
         {
             SegmentName = segmentName
         };
     }
     segment.WriteDataBuffer(str4.PadRight(0x3e8), 0, 0x3e8);
     segment.SegmentNumberForPlainLoad = key;
     if (str3.Equals("000000"))
     {
         this.Segments.Add(segment);
     }
     else if (this.PlainLoadSegmentHash[str3] == null)
     {
         this.Segments.Add(segment);
     }
     else
     {
         ((IdocSegment)this.PlainLoadSegmentHash[str3]).ChildSegments.Add(segment);
     }
     if (!key.Trim().Equals(""))
     {
         try
         {
             this.PlainLoadSegmentHash.Add(key, segment);
         }
         catch
         {
         }
     }
     foreach (IdocSegmentField field in segment.Fields)
     {
         field.FieldValue = str4.Substring(field.OffsetInBuffer, field.ExternalLength).Trim();
     }
 }
Esempio n. 12
0
 private void LoadIdocSchema(DataSet ds)
 {
     for (int i = 0; i < ds.Tables.Count; i++)
     {
         DataTable table = ds.Tables[i];
         int num2 = 1;
         if (((table.ExtendedProperties != null) && table.ExtendedProperties.ContainsKey("SEGMENTMAXOCCUR")) && ((table.ExtendedProperties["SEGMENTMAXOCCUR"] is string) && !string.IsNullOrEmpty((string)table.ExtendedProperties["SEGMENTMAXOCCUR"])))
         {
             num2 = Convert.ToInt32(table.ExtendedProperties["SEGMENTMAXOCCUR"]);
         }
         string str = Converts.XmlNameToOriginalName(table.TableName);
         IdocSegment seg = new IdocSegment
         {
             SegmentName = str,
             MaxOccur = num2
         };
         int offset = 0;
         for (int j = 0; j < table.Columns.Count; j++)
         {
             if (table.Columns[j].MaxLength > 0)
             {
                 seg.Fields.Add(Converts.XmlNameToOriginalName(table.Columns[j].ColumnName), table.Columns[j].Caption, table.Columns[j].MaxLength, offset, "CHAR", "");
                 offset += table.Columns[j].MaxLength;
             }
         }
         this.StoreSegmentForFurtherUse(seg);
     }
     this.RegenerateFields();
 }
Esempio n. 13
0
 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;
 }
 /// <summary>
 /// 内部处理,根据IDOC类型与扩展类型,创建空的IDOC。
 /// </summary>
 /// <param name="IdocType">IDOC类型</param>
 /// <param name="Enhancement">IDOC扩展类型</param>
 /// <param name="CreateEmpty">如果是TRUE,将不会复制标准的IDOC段</param>
 /// <returns></returns>
 private Idoc InternalCreateIdoc(string IdocType, string Enhancement, bool CreateEmpty)
 {
     des = SAPDestination.GetDesByName(m_sysName);
     IdocType = IdocType.ToUpper();
     IRfcFunction function = des.Repository.CreateFunction("IDOCTYPE_READ_COMPLETE");
     function["PI_IDOCTYP"].SetValue(IdocType);
     function["PI_CIMTYP"].SetValue(Enhancement);
     try
     {
         if (this.Logging)
         {
             //   function.SaveToXML("IDOCTYPE_READ_COMPLETE_01_" + DateTime.Now.Ticks.ToString() + ".xml");
             //   function.
         }
         function.Invoke(des);
         if (this.Logging)
         {
             //   function.SaveToXML("IDOCTYPE_READ_COMPLETE_02_" + DateTime.Now.Ticks.ToString() + ".xml");
         }
     }
     catch (RfcAbapException exception)
     {
         if (!exception.Message.Trim().Equals("SEGMENT_UNKNOWN"))
         {
             throw new Exception("Get IDoc failed: " + exception.ToString());
         }
         function["PI_RELEASE"].SetValue("    ");
         function.Invoke(des);
     }
     IRfcStructure structure = function.GetStructure("PE_HEADER");
     Idoc idoc = new Idoc(IdocType, Enhancement)
     {
         Connection = this,
         MANDT = this.des.Client,
         Description = structure["DESCRP"].ToString()
     };
     //IDOC类型的段定义
     IRfcTable table = function.GetTable("PT_SEGMENTS");
     Hashtable hashtable = new Hashtable();
     for (int i = 0; i < table.RowCount; i++)
     {
         //一般来说,第一行都是主要的段定义。表示一个抬头定义。
         if (table[i]["PARPNO"].GetValue().ToString() == "0000")
         {
             IdocSegment newSegment = new IdocSegment();
             if (!CreateEmpty)
             {
                 idoc.Segments.Add(newSegment);
             }
             newSegment.SegmentName = table[i]["SEGMENTTYP"].GetValue().ToString();
             newSegment.SegmentType = table[i]["SEGMENTDEF"].GetValue().ToString();
             newSegment.Description = table[i]["DESCRP"].GetValue().ToString();
             int num2 = Convert.ToInt32(table[i]["GRP_OCCMAX"].GetValue().ToString().Substring(5, 5));
             newSegment.MaxOccur = (num2 == 0) ? Convert.ToInt32(table[i]["OCCMAX"].GetValue().ToString().Substring(5, 5)) : num2;
             if (newSegment.MaxOccur == 0)
             {
                 newSegment.MaxOccur = 1;
             }
             string key = table[i]["NR"].GetValue().ToString();
             hashtable.Add(key, newSegment);
         }
         else
         {
             string str2 = table[i]["PARPNO"].GetValue().ToString();
             string str3 = table[i]["NR"].GetValue().ToString();
             IdocSegment segment2 = (IdocSegment)hashtable[str2];
             if (segment2 == null)
             {
                 throw new Exception("The idoc structure is not valid");
             }
             IdocSegment segment3 = new IdocSegment();
             if (!CreateEmpty)
             {
                 segment2.ChildSegments.Add(segment3);
             }
             segment3.SegmentName = table[i]["SEGMENTTYP"].GetValue().ToString();
             segment3.SegmentType = table[i]["SEGMENTDEF"].GetValue().ToString();
             segment3.Description = table[i]["DESCRP"].GetValue().ToString();
             int num3 = Convert.ToInt32(table[i]["GRP_OCCMAX"].GetValue().ToString().Substring(5, 5));
             segment3.MaxOccur = (num3 == 0) ? Convert.ToInt32(table[i]["OCCMAX"].GetValue().ToString().Substring(5, 5)) : num3;
             if (segment3.MaxOccur == 0)
             {
                 segment3.MaxOccur = 1;
             }
             hashtable.Add(str3, segment3);
         }
     }
     //查找段节点的结构定义。
     IRfcTable table2 = function.GetTable("PT_FIELDS");
     IDictionaryEnumerator enumerator = hashtable.GetEnumerator();
     while (enumerator.MoveNext())
     {
         IdocSegment segment4 = (IdocSegment)enumerator.Value;
         for (int j = 0; j < table2.RowCount; j++)
         {
             if (table2[j]["SEGMENTTYP"].GetValue().ToString().Trim() == segment4.SegmentName.Trim())
             {
                 segment4.Fields.Add(table2[j]["FIELDNAME"].GetValue().ToString(), table2[j]["DESCRP"].GetValue().ToString(), Convert.ToInt32(table2[j]["EXTLEN"].GetValue().ToString()), Convert.ToInt32(table2[j]["BYTE_FIRST"].GetValue().ToString()) - 0x40, table2[j]["DATATYPE"].GetValue().ToString(), "");
             }
         }
         idoc.StoreSegmentForFurtherUse(segment4.Clone());
     }
     return idoc;
 }
Esempio n. 15
0
 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);
         }
     }
 }
 public virtual void Add(IdocSegment NewSegment)
 {
     base.List.Add(NewSegment);
 }
Esempio n. 17
0
 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);
         }
     }
 }
 public IdocSegment Clone()
 {
     IdocSegment segment = new IdocSegment {
         _DataBuffer = this._DataBuffer,
         _Description = this._Description,
         _SegmentName = this._SegmentName,
         _SegmentType = this._SegmentType,
         _MaxOccur = this._MaxOccur
     };
     for (int i = 0; i < this._Fields.Count; i++)
     {
         IdocSegmentField newParameter = this._Fields[i].Clone();
         segment.Fields.Add(newParameter);
     }
     return segment;
 }
Esempio n. 19
0
 internal void StoreSegmentForFurtherUse(IdocSegment seg)
 {
     if (!this.StoredSegments.Contains(seg.SegmentName))
     {
         this.StoredSegments.Add(seg.SegmentName, seg);
     }
 }