String 将日期添加到日期,并以字符串形式存储新日期

String 将日期添加到日期,并以字符串形式存储新日期,string,abap,String,Abap,输出结果(特别是最后一行): 为了始终获得预期值,最好的方法是什么?可靠地添加/减去日期的一种方法是使用功能模块,例如RP_CALC_DATE_IN_INTERVAL SAP Wiki中有一个代码示例: 否则,您应该始终修改日期类型字段,然后在完成计算后(如果需要)将数据复制到字符串字段中 我必须同意,您显示的行为似乎不符合逻辑,我已在我们的系统中复制了它,并得到了相同的结果。可靠地添加/减去日期的一种方法是使用功能模块,例如RP_CALC_DATE_in_INTERVAL SAP Wiki中

输出结果(特别是最后一行):


为了始终获得预期值,最好的方法是什么?

可靠地添加/减去日期的一种方法是使用功能模块,例如RP_CALC_DATE_IN_INTERVAL

SAP Wiki中有一个代码示例:

否则,您应该始终修改日期类型字段,然后在完成计算后(如果需要)将数据复制到字符串字段中


我必须同意,您显示的行为似乎不符合逻辑,我已在我们的系统中复制了它,并得到了相同的结果。

可靠地添加/减去日期的一种方法是使用功能模块,例如RP_CALC_DATE_in_INTERVAL

SAP Wiki中有一个代码示例:

否则,您应该始终修改日期类型字段,然后在完成计算后(如果需要)将数据复制到字符串字段中


我必须同意,您显示的行为似乎不符合逻辑,我已在我们的系统中复制了它,并得到了相同的结果。

我怀疑对左侧(字符串)的赋值会导致加法结果在赋值之前转换为整数

对不起,我意识到你在其他测试中也这么做了,所以我删除了我的示例,只留下解释

从ABAP关键字doc访问日期字段和时间字段等字符时,请考虑以下内容:

对类似字符的日期字段和时间字段的数字访问利用 将类型d和t转换为数值 生成天数或秒数的整数。这是适用的 特别是在中使用类似于日期字段和时间字段的字符时 数值计算,其中这些字段转换为 对应的计算类型

由于系统执行隐式类型转换,因此可以想象,由于加法涉及整数,因此结果类型在赋值之前转换为整数


在您的其他示例中,赋值不是加法的结果,而是显式变量。

我怀疑对左侧(字符串)的赋值会导致加法的结果在赋值发生之前转换为整数

对不起,我意识到你在其他测试中也这么做了,所以我删除了我的示例,只留下解释

从ABAP关键字doc访问日期字段和时间字段等字符时,请考虑以下内容:

对类似字符的日期字段和时间字段的数字访问利用 将类型d和t转换为数值 生成天数或秒数的整数。这是适用的 特别是在中使用类似于日期字段和时间字段的字符时 数值计算,其中这些字段转换为 对应的计算类型

由于系统执行隐式类型转换,因此可以想象,由于加法涉及整数,因此结果类型在赋值之前转换为整数


在其他示例中,赋值不是加法的结果,而是显式变量。

这看起来是错误的,似乎与官方在线文档不匹配。如果我有这个问题,我可能会发布一条SAPnet消息,要求SAP修复或解释这个行为。这看起来是错误的,似乎与官方在线文档不匹配。如果我遇到这个问题,我可能会发出一条SAPnet消息,要求SAP修复或解释这种行为。
DATA: l_str TYPE string,
    l_dat TYPE d.

l_dat = sy-datum.
l_str = l_dat.
WRITE:/ l_str.

l_dat = ( sy-datum + 1 ).
l_str = l_dat.
WRITE:/ l_str.
l_dat = sy-datum.

l_dat = ( l_dat + 1 ).
l_str = l_dat.
WRITE:/ l_str.

l_dat = sy-datum.
l_str = ( l_dat + 1 ).
WRITE:/ l_str.
  20130222
  20130223
  20130223
  734909