XML 文件的设计和结构
本文档解释了 XML 文件的设计和结构。根据XML 结构。打开 (CMS006) 中选择的格式,有两种不同的标准可用。
常用标准用于所有格式。
数据类型“小数”
根据以下规则,数据类型为“小数”的数据包含在 XML 中:
- 无千位分隔符
- 小数格式,始终为句点 (.)
-
舍入到正确的小数位数,并根据价格数量进行调整
示例:9999999.99
Localization 部分包含了应如何设置小数字段格式的元数据。
<DecimalFormat>,</DecimalFormat> <ThousandSeparator>.<ThousandSeparator> <Locale>en-GB<Locale>
建议使用区域设置来设置小数格式。
借方/贷方代码
DocumentInformation 部分的 DebitCreditCodeUsed (true/false) 要素中指示是否应使用借方/贷方代码。
<DocumentInformation> <DebitCreditCodeUsed>true</DebitCreditCodeUsed>
应使用借方/贷方代码的货币金额字段具有附加特性“D-C”,包括借方/贷方代码符号。
<VFORTO D-C="D">68325.00</VFORTO> <VFTOPY D-C="D">68325.00</VFTOPY>
数据类型日期
数据类型为日期的数据采用以下格式:YYYY-MM-DD。
- [YYYY] 表示四位数年份,[MM] 表示两位数月份,[DD] 表示两位数日期。
- 每个日期值都有固定位数的数字,以前导零填充。
- 日期值之间使用的分隔符为连字符 (-)。
与时区无关的 XML 示例:
<UHIVDT>2016-03-21</UHIVDT>
与时区相关的 XML 示例:
如果日期与时区相关,则会在日期之后以正值或负值的形式添加与通用标准时间的偏移量。在文档上使用日期时,无需使用通用标准时间偏移量,只有在需要将日期转换为通用标准时间时才会使用它。
<UHIVDT>2016-03-21+5:00</UHIVDT>
Localization 部分包含了应如何设置日期字段格式的元数据:
<DateFormat>YYMMDD</DateFormat> <DateEditing>/<DateEditing> <Locale>en-GB<Locale>
我们还建议使用区域设置来设置日期格式。
数据类型时间
数据类型为时间的数据采用 hh:mm:ss 格式
- [hh] 表示小时,[mm] 表示分钟,[ss] 表示秒。
- 每个时间值都有固定位数的数字,以前导零填充。
- 日期值之间使用的分隔符为 (:)。
与时区无关的 XML 示例:
14:05:23 <UHTIID>14:05:23</UHTIID>
与时区相关的 XML 示例:
如果日期与时区相关,则会在时间之后以正值或负值的形式添加与通用标准时间的偏移量。在文档上使用时间时,无需使用通用标准时间偏移量,只有在需要将时间转换为通用标准时间时才会使用它。
<UHTIID>14:05:23+5:00</UHTIID>
格式化
格式设置是一个包含元数据的部分,用于帮助外部输出管理应用程序进行布局设计。
<Formatting> <M3StandardFormatVersion>1</M3StandardFormatVersion> <ReportLayout>M3_STD_03-01</ReportLayout> <Structure>M3_STD_03-01</Structure> <PaperSize>A4</PaperSize> <Localization> <DocumentDivision>AAA</DocumentDivision> <CountryVersion>GB</CountryVersion> <BaseCountry>GB</BaseCountry> <FromToCountry>GB</FromToCountry> <DocumentLanguage>GB</DocumentLanguage> <Locale>en-GB</Locale> <DateFormat>YYMMDD</DateFormat> <DecimalFormat>,</DecimalFormat> <ThousandSeparator>.</ThousandSeparator> /Localization> <DocumentInformation> </Formatting
- M3StandardFormatVersion(必填),始终设置为 1。
- ReportLayout(必填),使用的报表布局。
- DocumentDivision(必填),文档分部(不是用户运行输出功能的分部)。
- CountryVersion(必填),来自 (MNS100/L) 的国家/地区版本,基于 documentDivision。
- BaseCountry(必填),生成文档的分部所在国家/地区。通常是文档分部所在的国家/地区,唯一的例外是使用财务代表的情况。
- FromToCountry(必填),文档接收者的国家/地区代码。基于用户、客户或供应商。基于 (CRS045)。
- DocumentLanguage(必填),文档接收方的语言代码。基于用户、客户或供应商。基于 (CRS010)。
-
区域设置(必填),设置格式为 xx-yy。xx 是基于 DocumentLanguage 的语言 (CRS010) 的 ISO 代码。yy 是基于 FromToCountry 的国家/地区 (CRS045) 的 ISO 代码。用于格式化日期和小数。
语言 国家/地区 区域设置 M3 代码 ISO 代码 M3 代码 ISO 代码 GB en US US en-US GB en GB GB en-GB DE de DE DE de-DE SE sv SE SE sv-SE - DateFormat(必填),基于用户或客户/供应商的文档的日期格式(来自 M3 BE 设置)。我们建议使用区域设置来设置日期格式,而不是使用此字段。
日期格式的 BE 设置 要素 DateFormat 中的文本 YMD YYMMDD DMY DDMMY MDY MMDDYY YWD YYWWD - DecimalFormat(必填),基于用户或客户/供应商的文档的小数格式(来自 BE 设置)。我们建议使用区域设置来设置小数格式,而不是使用此字段。
- ThousandSeparator(必填),始终设置为与小数格式中相反的分隔符。
格式 1 - M3 标准文档和 3 - 开放
对于“格式 1 - M3 标准文档”,以下是最重要的标准:
- 要素名称等于 M3 Business Engine 表中的字段名称。如果了解 M3 数据库,则可以轻松识别源。
- 包含标签作为特性“标签”。这些是根据文档语言翻译的。
-
具有描述的代码分组在共享同一标签的部分中。例如,交货条款和其他条款文本。
M3OutDocument <M3OutDocument> <Metadata> <DataArea> <Document> <Document> <Document> </DataArea> </M3OutDocument>
- M3OutDocument(必填),根节点,对于“格式 1 - M3 标准文档”始终为 M3OutDocument。
- Metadata(必填),有关 XML 文件的一般信息。
- DataArea(必填),包含 XML 文件中的所有数据。DataArea 包含一个或多个 Document。
-
Document(必填),可以出现一次或多次。例如,文档可以是一张发票、一个采购订单或一个对账单编号。
文档
例如,一个文档可以是一张发票或一个采购订单。
<Document> <Cover> <Formatting/> <Header/> <Footer/> <DocumentHeader/> <TextBlock/> <SubDocument/> <TextBlock/> <Lines/> <TextBlock /> <TextBlock/> <VATSummaryBox/> <DocumentTotal/> <Media/> </Document>
- Cover(可选),选择和筛选字段。始终出现一次。
- Formatting(对于格式 1 是必填的),关于应如何设置数据格式的信息。
- Header(必填),用于在布局顶部重复信息的数据。
- Footer(必填),用于在布局底部重复信息的数据。
- DocumentHeader(可选),文档标题信息。
- iTextBlock(可选)。
- SubDocument(必填),在文档拆分为多个子文档的情况下。通常是单个。
- TextBlock(可选)。
- Lines(可选),对所有行进行分组。
- TextBlock(可选)。
- TextBlock(可选)。
- DocumentTotal(可选)。
- Media(对于格式 1 是必填的),用于分发打印输出的信息。
对于格式 3 – “开放”,可以在 (CMS025/E) 中停用 Cover、Formatting 或 Media 部分。对于格式 1 和 2,可以在 (CMS025/E) 中取消解除 Cover 部分。
DocumentHeader
DocumentHeader 是 Document 的常用信息。Address 部分位于 Document 中。
包含一个地址的 XML 示例:
<DocumentHeader Label="Document header"> <UIIVNO Label="Invoice no">201401561</UIIVNO> <OAORNO Label="CO no">1000025077</OAORNO> <OAWHLO Label="Warehouse">110</OAWHLO> <Address Label="Delivery Address Type="Delivery"> </DocumentHeader>
包含两个地址的 XML 示例:
<DocumentHeader Label="Document header"> <UIIVNO Label="Invoice no">201401561</UIIVNO> <OAORNO Label="CO no">1000025077</OAORNO> <OAWHLO Label="Warehouse">110</OAWHLO> <Address Label="Delivery Address Type="Delivery"> <Address Label="Payer Address Type="Payer"> </DocumentHeader>
地址按类型分隔。包含了类型作为特性,并且可以具有以下值:
类型 | 描述 |
---|---|
交货 | 交货地址 |
客户 | 客户地址 |
付款方 | 付款方地址 |
发票 | 发票地址 |
供应商 | 供应商地址 |
收款方 | 收款方地址 |
公司 | 公司地址 |
库位 | 位置地址 |
报价 | 报价地址 |
银行 | 银行地址 |
以下要素始终包含在 Address 部分中:
- CUNM - 名字
- ADR1 - 地址行 1
- ADR2 - 地址行 2
- ADR3 - 地址行 3
- ADR4 - 地址行 4
包含一个地址的 XML 示例:
<Address Label="Delivery Address Type="Delivery"> <VFCUNM>Infor company</ VFCUNM > <VFADR1>Utterstreet</VFADR1> <VFADR2>Number 4</VFADR2> <VFADR3>187 Taby</VFADR3> <VFADR4>Sweden</VFADR4> </Address>
包含两个地址的 XML 示例:
<Address Label="Delivery Address Type="Delivery"> <VFCUNM>Infor company</ VFCUNM> <VFADR1>Utterstreet</VFADR1> <VFADR2>Number 4</VFADR2> <VFADR3>187 Taby</VFADR3> <VFADR4>Sweden</VFADR4> </Address> <Address Label="Payer Address Type="Payer"> <VFCUNM>Infor Sweden AB</ VFCUNM > <VFADR1>Borgarfjordsgatan 9</VFADR1> <VFADR2></VFADR2> <VFADR3>164 40 Kista</VFADR3> <VFADR4>Sweden</VFADR4> </Address
文本块按类型分隔。包含了类型作为特性,并且可以具有以下值:
类型 | 子类型 |
---|---|
ExemptionText | |
DocumentText | PreText 或 PostText |
CustomerText | PreText 或 PostText |
OrderText | PreText 或 PostText |
OrderLineText | PreText 或 PostText |
ItemText | PreText 或 PostText |
CoreTerms | |
ConfigText | |
AssignmentText | PreText 或 PostText |
AgreementText | PreText 或 PostText |
GeneralText | |
AttributeText | |
FinReasonText |
包含一个文本块的 XML 示例:
<TextBlock Label="Document text" Type="DocumentText" SubType="PreText"> <BD-3>asldfjasljfalsjfaslfdj</BD-3> <BD-3>hhdftdgsdfsfsfs</BD-3> <BD-3>sdwe63gdfg34te</BD-3> <BD-3>xxrwrwtey567</BD-3> …… </TextBlock>
包含两个文本块的 XML 示例:
<TextBlock Label="Document text" Type="DocumentText" SubType="PreText"> <BD-3>asldfjasljfalsjfaslfdj</BD-3> <BD-3>hhdftdgsdfsfsfs</BD-3> <BD-3>sdwe63gdfg34te</BD-3> <BD-3>xxrwrwtey567</BD-3> …… </TextBlock> <TextBlock Label="Order text" Type="OrderText" SubType="PreText"> < BD-3>ddddfafj</BD-3> < BD-3>dddddddddsss</BD-3> < BD-3>4353333333</BD-3> </TextBlock>
行重复,并按行分组。
在任何 Line 部分之前,标签仅包含一次。
在许多情况下,小计值 (SublineValues) 包含在关键字字段的中断处,并用于排序。
没有小计值的 XML 示例(最简单的示例,仅包含一个具有一行或多行的列表):
<Lines Label="Lines"> <UBPONR Label="Line"/> <UBITNO Label="Item number"/> <Line> <UBPONR>1</UBPONR> <UBITNO>MB_101</UBITNO> </Line> <Line> <UBPONR>2</UBPONR> <UBITNO>MB_202</UBITNO> </Line> <Line> <UBPONR>3</UBPONR> <UBITNO>MB_303</UBITNO> </Line> </Lines>
包含小计值的 XML 示例(包含小计值 (SublineValues) 的示例):
<Lines Label="Lines"> <UBPONR Label="Line"/> <UBITNO Label="Item number"/> <Line> <UBPONR>1</UBPONR> <UBITNO>MB_101</UBITNO> </Line> <Line> <UBPONR>2</UBPONR> <UBITNO>MB_202</UBITNO> <SublineValues> <Element 1/> <Element 2/> </SublineValues> <Line> <UBPONR>3</UBPONR> <UBITNO>MB_303</UBITNO> </Line> <Line> <UBPONR>4</UBPONR> <UBITNO>MB_404</UBITNO> <SublineValues> <Element 1/> <Element 2/> </SublineValues> </Line> </Lines>
按地址排序的 XML 示例:
如果按照小计以外的任何其他原因对行进行分组,则还必须使用子行。以下是按地址排序的行。然后,每个子行都包含地址信息。
<Lines Label="Lines"> <UBPONR Label="Line"/> <UBITNO Label="Item number"/> <Subline> <Address Label="Delivery Address Type="Delivery"> <Line> <UBPONR>3</UBPONR> <UBITNO>MB_303</UBITNO> </Line> </Subline> <Subline> <Address Label="Delivery Address Type="Delivery"> <Line> <UBPONR>4</UBPONR> <UBITNO>MB_404</UBITNO> </Line> <Line> <UBPONR>5</UBPONR> <UBITNO>MB_505</UBITNO> </Line> </Subline> </Lines>
包含前文本和后文本的 XML 示例:
如果前文本和后文本用于该行,则它们应位于行中。
<Lines Label="Lines"> <UBPONR Label="Line"/> <UBITNO Label="Item number"/> <Line> <UBPONR>3</UBPONR> <UBITNO>MB_303</UBITNO> <TextBlock Label="Item text" Type="ItemText" SubType="PreText"> <TextBlock Label="Item text" Type="ItemText" SubType="PostText"> </Line> </Lines>
HeadCharges
- 始终为 HeadCharges 部分
- Charge 重复,并按 HeadCharges 分组
- 标签在任何收费部分之前仅包含一次
包含一个 Charge 的 XML 示例:
<HeadCharges> <USCRD0 Label="Description"/> <USCRID Label="Charge"/> <VFCHAM Label="Charge amount"/> <VFVTCD Label="Vcd"/> <Charge Label="Charge"> <USCRD0>Monica's Head charge_VATcd01</USCRD0> <USCRID>MBHC1</USCRID> <VFCHAM>200.00</VFCHAM> <VFVTCD>1</VFVTCD> </Charge> </HeadCharges>
包含两个 Charge 的 XML 示例:
<HeadCharges> <USCRD0 Label="Description"/> <USCRID Label="Charge"/> <VFCHAM Label="Charge amount"/> <VFVTCD Label="Vcd"/> <Charge Label="Charge"> <USCRD0>Monica's Head charge_VATcd01</USCRD0> <USCRID>MBHC1</USCRID> <VFCHAM>200.00</VFCHAM> <VFVTCD>1</VFVTCD> </Charge> <Charge Label="Charge"> <USCRD0>Monica's Head charge_VATcd03</USCRD0> <USCRID>MBHC3</USCRID> <VFCHAM>400.00</VFCHAM> <VFVTCD>1</VFVTCD> </Charge> </HeadCharges>
DocumentTotal
- 始终为部分类型 022 - DocumentTotal
- 始终为级别 03
- 应包括包含整个文档总数的所有要素。
附加标签
- 包含了与任何数据都不相关的标签作为普通标签,但要素值为 true 或 false。
- 其他标签始终首先包含在一个部分中。
示例 1
包含在 DocumentHead 中的文本“***PRELIMINARY***”
<DocumentHead Label="Document header"> <VFPREL Label="Preliminary">true</VFRELI> ….. </DocumentHead> <DocumentTotal Label="Document total"> <VFPLAC Label="Place">true</VFPLAC> <VFDATE Label="Date">true</VFDATE> <VFSIGN Label="Signature">true</VFSIGN> ….. </DocumentTotal>
示例 2
DocumentTotal 中具有“Place”、“Date”和“Signature”的签名行:
地点 | 日期 | 签名 |
XML 示例
<DocumentTotal Label="Document total"> <VFPLAC Label="Place">true</VFPLAC> <VFDATE Label="Date">true</VFDATE> <VFSIGN Label="Signature">true</VFSIGN> ….. </DocumentTotal>
格式 2 - M3 标准报表
对于“格式 2 - M3 标准报表”,以下是最重要的标准:
- 要素名称等于 M3 Business Engine 表中的字段名称。如果了解 M3 数据库,则可以轻松识别源。
- 包含标签作为特性“标签”。这些是根据文档语言翻译的。
- 具有描述的代码分组在共享同一标签的部分中。例如,交货条款和其他条款文本。
M3OutReport
<M3OutReport> <Metadata> <DataArea> <Report> <Report> <Report> </DataArea> </M3OutReport>
- M3OutReport(必填),根节点,始终为 M3OutReport
- Metadata(必填),有关 XML 文件的一般信息。
- DataArea(必填),包含 XML 文件中的所有数据。DataArea 包含一个或多个报表。
- Report(必填),通常出现一次。
报表
<Report> <Cover> <Formatting> <Header> <Subreport> <Media> </Report>
- Cover(可选),选择和筛选字段。始终出现一次。
- Formatting(必填),关于应如何设置数据格式的信息。
- Header(必填),用于在布局顶部重复信息的数据
- Subreport(必填),在报表拆分为多个子报表的情况下。通常出现一次
- Media(必填),用于分发的信息。
要在 (CMS025/E) 上解除的 Cover 部分。
Subreport
<Subreport> <TableInformation Type="xx"> <TableInformation Type="yy"> <TableInformation Type="zz"> <Table Type="xx" </Subreport>
自由字段
在 XML 结构。打开 (CMS006/H) 中定义了称为“自由字段”的其他字段。自由字段可以让您在 IDM Output Management 中为布局建立搜索查询。这些字段还用于设置 IDM 中的特性值。
自由字段的选择
要在 (CMS006/H) 中设置自由字段,必须首先在文档类型。打开 (MNS060/E) 中设置值。
以下是在 (MNS060/E) 上定义的自由字段:
- 60 - 自由字段 1
- 61 - FF02 - 自由字段 2
- 62 - FF03 - 自由字段 3
- 63 - FF04 - 自由字段 4
- 64 - FF05 - 自由字段 5
- 65 - FF06 - 自由字段 6
- 66 - FF07 - 自由字段 7
- 67 - FF08 - 自由字段 8
- 68 - FF09 - 自由字段 9
- 69 - FF010 - 自由字段 10
- 70 - RGS655PF 报告
(MNS060/E) 上的选定特性值 (60-69) 应该对应 (CMS006/H) 上的自由字段。
(MNS060/E) 上的选定特性值 (70) 应该对应 (RGS600/E) 上的报告。