3

以下代码应该从给定日期减去 10 天,将结果存储在字符串变量中并写入。

DATA str TYPE string.
DATA date TYPE d.

date = '20130418'. " 2013-04-18
str = date - 10.

WRITE str.

我希望输出为 2013-04-08 或至少是未格式化的 20130408。但实际输出是一个非常神秘的数字,对我来说根本没有意义:

734967

有人能解释一下这个数字是从哪里来的吗?

我已经找到了一种解决方法(只需将结果放入另一个 d 类型的变量中,然后将此变量分配给字符串),但我仍然对这个奇怪结果的解释感兴趣。

SAP_BASIS 版本是 702。

4

1 回答 1

3

看一下转换规则:对于减法,日期在内部转换为自 01.01.0001 以来的天数(源类型日期,目标类型 I),然后进行算术运算。如果结果是日期字段,则应用转换(源类型 I/Packed,目标类型 D)回到 YYYYMMDD 的形式。但是,转换 I/Packed 到字符串的定义不同 - 因此字符串包含结果日期和 01.01.0001 之间的天数。

于 2013-04-18T13:40:57.187 回答