当我致电FIMA_DATE_CREATE时,返回意外结果

2020-08-22 14:53发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨朋友,

当我致电" FIMA_DATE_CREATE"时。

 DATA:日期TYPE vtbbewe-dvalut,
 标志TYPE trff_flg,
 天TYPE trff_type_n_2。
 通话功能'FIMA_DATE_CREATE'
 出口
 i_date ='20200223'
 i_days = 6
 输入
 e_date =日期
 e_flg_end_of_month =标志
 e_days_of_i_date =天。  

e_date = 20200229。

当输入i_date ='20200224'。时,e_date也返回'20200229'..

有人可以告诉我为什么吗?

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨朋友,

当我致电" FIMA_DATE_CREATE"时。

 DATA:日期TYPE vtbbewe-dvalut,
 标志TYPE trff_flg,
 天TYPE trff_type_n_2。
 通话功能'FIMA_DATE_CREATE'
 出口
 i_date ='20200223'
 i_days = 6
 输入
 e_date =日期
 e_flg_end_of_month =标志
 e_days_of_i_date =天。  

e_date = 20200229。

当输入i_date ='20200224'。时,e_date也返回'20200229'..

有人可以告诉我为什么吗?

付费偷看设置
发送
5条回答
派大星 ヾ
1楼 · 2020-08-22 15:01.采纳回答
  1. 未发布FM FIMA_DATE_CREATE,既不用于内部SAP,也不用于外部CUSTOM
  2. 参数I_CALENDAR_DAYS用于添加实际日历天
  3. 参数I_DAYS用于添加利息日 (查找FM参数的德语翻译),而根据德国利息法(Deutsche Zinsmethode),每个月有30个利息日30/360

在上面的示例中,加了6和7个利息日 (I_DAYS)到日期23.02.2020,将使您到日期29.02.2020,因为您也总是获得30个2月的利息日。 第八个利息日将使您到达2020年3月1日。

因此,从技术上讲,在a年中,您将在2月29日获得2个利息日,而在非year年中,您将获得3个利息。 2月28日的几天。

=>这就是为什么您得到这些结果的原因。

您是否通过"意外"选择了此FM? 您是否只是想在日期中添加天?

最简单的方法是使用" +"或" ADD"运算符。 ABAP非常了解如何在ABAP类型DATS上处理此操作。

数据:lv_days TYPE int4。
 数据:lv_date TYPE基准。

 将lv_days加到lv_date。
 

如果要在给定日期添加工作日,则需要将SAP或自定义工厂日历与国家和/或区域性假日以及可能的自定义休息日一起应用到已发布的标准中 功能模块,例如

SAP小菜
2楼-- · 2020-08-22 15:10

谢谢,这对我非常有用。

木偶小白
3楼-- · 2020-08-22 14:53

因为FIMA是金融数学,并且有自己的规则。

p>

功能模块FIMA_DATE_CREATE未发布且未记录,只能由SAP使用。 换句话说,如果它不能按预期工作,那就是您的问题。

如果要添加6天,请使用ABAP类型D:

 ASSERT CONV d(CONV d  ('20200223')+ 6)='20200229'。
 ASSERT CONV d(CONV d('20200224')+ 6)='20200301'。

如果您想添加6个日历日,例如,不包括休息日的日历,请使用正式发布的功能

在论坛或ABAP文档中搜索以获取更多信息。

骆驼绵羊
4楼-- · 2020-08-22 15:02

此功能可以很好地处理leap年。 参数I_DAYS用于每个月有30个工作日的工作日,称为"德国利息法(Deutsche Zinsmethode)30/360"。其行为与设计相同。

在上面的示例中,将6和 到日期23.02.2020的7个利息日(I_DAYS)将使您到日期29.02.2020,因为您也始终获得2月的30利息日。 第八个利息日将使您到达2020年3月1日。

因此,从技术上讲,在a年中,您将在2月29日获得2个利息日,而在非year年中,您将获得3个利息。 2月28日。

Aaron 3364
5楼-- · 2020-08-22 15:20

你好

因为该功能无法管理双折年...

如果DATE_DD> 30 OR DATE_DD> 28 AND DATE_MM = 02。

塞德里克

一周热门 更多>