时区概述
摘要
本文档描述了 M3 Business Engine 中的时区处理的概念。
背景
M3 Business Engine 是一个多本地 ERP 系统,使时区处理成为解决方案的重要组成部分。
时区概述
时区处理分为以下区域:
- 在考虑时区的情况下显示和打印时间/日期
- 在考虑时区的情况下更新数据库中的数据
- 考虑仓库/物流交易的时区差异
- API 交易中的时区处理。
对于 M3 BE 中的特定屏幕,存在应处理时差以支持时区差异的位置。与旅行的类比非常好。当您从一个时区飞到另一个时区时,通常只对将在当地什么时间到达感兴趣。知道您将在当地时间 13:00 抵达芝加哥就足够了。并不需要知道其他时区的同等时间。对于 M3 BE 中的交易和信息也是如此 - 您通常只对交易的约定时间(当地时间)感兴趣。
只有在不同时区工作的人员访问相同数据并根据各自的当地时间制定决策时,才需要进行时区转换。
基于上述内容,我们认为 M3 BE 的每个仓库都在当地时区工作。因此,当地计划和输入的所有内容也都以当地时间值注册。例如,这意味着物料计划 (MITPLO) 包含每个仓库的当地时间。制造订单和计划工序也在当地时间进行计划,因此指的是仓库时区。
&SYS 时区定义了服务器相对于 UTC 的位置。请注意,对于 M3 CE,服务器时间为 UTC,因此 &SYS 的时区与 UTC 的时差应始终为 0 小时。movexDate() 和 movexTime() 应视作始终与 &SYS 时区相关。RGDT、RGTM 和 LMDT 存储在 &SYS 中的数据库内(例如:这些字段始终显示为服务器时间而未进行转换)。
LMTS 是 UTC 时区中的时间戳(以毫秒为单位)。
限制
只在最需要的功能中实现了时区处理。在许多功能中,未实现时区处理,因为并未发现它是必需的。例如,在财务领域中,日期和时间通常基于发票上已定义的日期和时间。
在显示和打印时间时,请注意以下附加限制:
- 只能转换 RGDT/RGTM、SGDT/SGTM 和 XLRD/XLRT。
- 日期和时间都必须是视图的一部分。
- 不能下溯至聚合的转换日期/时间。
- 仅当日期和时间为筛选/选择值的一部分时才可以进行筛选和选择。
- 对于 CMS100MI,相同的限制适用于可配置的视图。
- 对于专项,不支持时区转换。
M3 BE 的打印输出可分为以下区域:
- 内部列表和文档
- 外部业务文档。
对于内部列表,打印在右上角的时间和日期已经过时区调整,或根据服务器时间和用户时间之间的时区差异进行了调整。如果在日本的用户打印物料列表,则时间和日期将从系统时间转换为日本时间。对于拣货单和收货单据等内部文档,是否应该进行时区转换是根据打印数据的具体情况决定的。
外部文档很少包含根据系统时间生成的时间。需根据具体情况考虑是否应对这些文档进行时区转换。
时区设置
要处理时区要求,将在系统中的以下区域内完成时区定义:
- 用户 (MNS150/MNS151)
- 仓库 (MMS005)
- 分部 (MNS100)
- 客户 (CRS610)。
将在以下层次中检索所使用的时区:
- 每个公司/分部的用户 (MNS151)
- 一般用户记录 (MNS150)
- 分部 (MNS100)。
(MMS005) 中的仓库已关联到 (MMS008) 中与时区关联的“装货地点”。将仓库时区视为该仓库中用于计划交易的当地时区。
(MNS100) 中的分部已关联到默认时区。这是时区定义的最高层次。
(CRS610) 中的客户已关联到时区。这是间接关联,就像仓库关联一样。(CRS002) 中的客户已关联到交货地址,该地址已在 (MMS008) 中关联到“卸货地点”,而后者已关联到时区。客户交货地址时区用于根据客户要求的交货日期和时间计算出货日期和时间。
在考虑时区的情况下显示和打印时间
如上所述,“输入日期”、“输入时间”和“更改日期”以系统时间表示。
系统中显示的时间和日期非常类似于金额:必须定义要使用的单位,例如 15 美元或 200 瑞典克朗。因此,如果表示正确,则时间或日期应始终后跟 11:00 CET 或 17:12 PAC。由于我们并未对 M3 BE 中显示每个时间和日期都使用单位,因此以下规则适用:
进入可能会出现时区转换字段的功能时,我们将始终显示用户时区。
通过使用功能键 F13 参数,用户可以通过定义他/她自己的时区以用在特定功能中来覆盖该参数。如果在此字段中定义了一个值,则启动程序后,将使用此时区作为默认值。
为了使用户知道人员正在查看的时区,而不必在屏幕上的字段中显示该时区,我们引入了提示功能。提示功能有两个目的:
- 它将使用/突出显示/标记屏幕中当前使用的时区。
- 如果需要显示另一个时区,则它将显示可用的时区供用户选择。
要激活提示并向用户发出可以进行时区转换的信号,请使用 UI 中的按钮。
对于可配置的列表视图,可以在用户的时区中显示系统日期/时间。为此,请选中字段组。显示允许的字段 (CRS109) 中系统时间字段的“时区转换”复选框。这样您能够定位、选择和过滤转换后的系统日期/时间。
在考虑时区的情况下更新数据库中的数据
更新 M3 BE 中的数据时,系统日期将用作创建/上次维护日期。
考虑仓库/物流交易的时区差异
M3 中的后勤交易考虑了在系统中计划和显示交易时时区之间的时差。
对于一些交易,M3 必须考虑交易中涉及的两个物理位置之间可能存在时差的事实。关于此内容的最佳示例为提前期非常短的配送单。计划此内容和包含时区差异是解决方案的一部分。
示例:某个配送单计划在 15:00 通过空运离开斯德哥尔摩。它计划在 2 小时后抵达赫尔辛基仓库(配送订货交付时间为 2 小时)。由于斯德哥尔摩和赫尔辛基的时差为一小时,因此赫尔辛基的配送单接收时间为 18:00——向东行进时会“损失”一小时。
与仓库相关的日期和时间通常使用该仓库的时区存储在数据库中。当用户输入仓库的日期/时间时,通常对用户暗指与该仓库相关的日期/时间。因此,不需要对所输入的数据进行时区转换。
时区和 API
MI 与交互式程序具有相同行为,或假定用户在与交易的地理参考关联的时区中进行报告。这存在差异,具体根据使用哪种类型的交易。例如如果用户正在报告制造订单,则假定地理参考基于制造订单所属的仓库。知道特定交易中使用的时区非常困难,因此以下内容可能有所帮助:
- 例如,使用 DRS045MI,您可以在其中询问哪个时区用于特定仓库。还可以返回与 UTC 相关的时区差异。
- 一些 MI 程序交易包含一个 UTCM 参数。通过激活该参数,可以假定所有时间(来回时间)都以 UTC 时区表示。
- MI 元数据中应清除地描述地理参考。