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) 上的报告。