Findind给定日期的最近日期(sap Abap)

2020-08-23 13:02发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我需要找到给定日期的最近的星期四...

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

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


我需要找到给定日期的最近的星期四。 有没有可用的功能模块?...

例如:如果给定日期为星期六的15/02/2020,则应将日期返回为最近的星期四13/02/2020。

如果给定的日期是星期二的18/02/2020,则应返回最近的星期四的20/02/2020。

8条回答
Nir深蓝
2020-08-23 13:18

1 。 使用FM DAY_IN_WEEK获取给定日期的星期几(1-7)。

  • (如果需要,也可以输入FM DATE_TO_DAY:星期一至星期日)

2。 计算从今天到下一个星期四的天数差:从今天开始减去星期四(4)(例如2 =星期二或7 =星期日)。 如果大于0,则这是到星期四的天数。 如果它小于零,则需要在负数上加上"一周",即7天,以获取下周的星期四。 如果为零,则需要确定是星期四还是下周四,具体取决于"截断"时间。
但是,您也可以直接在循环中直接使用下一个FM,始终添加1天 直到您打了星期四(除非已经是星期四并且您可以使用它;)

3。 使用FM RP_CALC_DATE_IN_INTERVAL计算给定日期以及到下一个星期四的天数之差,并得到结果日期

更新:

当然可以将上述伪代码"更改"为 符合您的"新"要求。 那是一个变更请求;)。 如果给定的日期已经是给定的工作日,则下一个实际的编码(抱歉,我没有对其进行测试)将为您提供以下(!)或与最近日期相同的日期。 如果一定是下一个工作日,则需要在第一次计算lv_current_weekday之前先将1添加到ev_nearest_date。 我正在等待下一个更改请求。...

所以您去了:

"输入/输出参数
 数据:iv_given_date TYPE系统数据VALUE系统数据,
       iv_given_weekday TYPE int4 VALUE'4',
       ev_nearest_date TYPE数据表。

 变量
 常量:lc_known_monday TYPE sydatum VALUE'19000101'。
 数据:lv_current_weekday TYPE int4。

 算法
 ev_nearest_date = iv_given_date。
 lv_current_weekday =(ev_nearest_date-lc_known_monday)mod 7 + 1。

 lv_current_weekday <> iv_given_weekday。
   将1加到ev_nearest_date。
   lv_current_weekday =(ev_nearest_date-lc_known_monday)mod 7 + 1。
 结束。

但是根据您的新示例,您再次想要其他东西。
所以应该是同一周内最近的一天??? 您需要提供一个完整的示例,说明用户何时结束和开始一周,以及一周的开始和结束的"最近"日期。

一周热门 更多>