那是一个 X12 文件,一个 850 采购订单。正如eppye在评论中所建议的那样,您需要确切地找出您获得的文件遵循的标准。为了帮助您入门,这里有一个 850版本。“Draft MEMA 4010 850”将帮助您了解格式。“GCommerce 4010 850V1.4.doc”是告诉您每个元素中的内容的数据字典。但请理解,除非您销售汽车零部件,否则这可能不是您正在使用的文件的确切规格。向您发送文件的人应将其提供给您。
我将为每个段和循环创建一个用户对象,一个代表采购订单本身。采购订单 UO 需要作为段和循环数据类型的变量。不要包括循环内的段,将它们放在循环的 UO 中。段的 UO 将具有段中数据元素的标准数据类型变量,如字符串、整数、日期等。有关数据类型,请参阅数据字典。
请注意,如果一个段重复,则保存该段的变量是一个数组。循环的变量将是数组。
处理段的对象将有一个方法,例如of_importLine
,在星号处拆分行并存储值。
处理循环的对象将有一个方法,例如of_readLoop
读取行(段)直到它读取循环的最后一段。对于每个段,它将为该类型的段创建 UO,将其分配给实例变量,或者如果段可以重复,则分配给下一个数组槽,并调用新对象的 of_importLine
.
处理采购订单的对象类似于循环的对象,除了当它看到循环的第一段时,它会为这种循环创建 UO,将其分配给循环的下一个数组槽,并调用新对象的 of_readLoop。请注意,当您的采购订单对象在循环内读取时,它将创建一个新对象来读取和存储循环的每个重复。
如果缺少所需的段或找到不属于循环的段,则读取循环的对象应记录错误并停止。错误应包括行号和内容。我无法详细说明如何验证采购订单本身,因为许多部分在规范中是可选的,但它们在您的应用程序中可能不是可选的。对于每个段和循环,对象都有一个变量,它需要项目出现的顺序以及最小和最大出现次数。然后 PO 对象可以检查分段和循环。
这会将文档中的数据获取到表示文档部分的对象中,以便您可以使用数据。