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

2020-08-23 13:02发布

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

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


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

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

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

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

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


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

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

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

付费偷看设置
发送
8条回答
空代码
1楼 · 2020-08-23 13:25.采纳回答

P_NUMB是星期几

星期一-> 1,.....星期日-> 7


 类别lc_date_finder定义。

   公共部分。
     方法get_nearest_date
       输入
         iv_date TYPE系统
         iv_day_number TYPE i
       正在返回
         VALUE(rv_nearest_date)TYPE系统。
 ENDCLASS。



 参数p_date类型sydatum缺省sy-data。
 参数p_numbd TYPE i默认值4。
 写新的lc_date_finder()-> get_nearest_date(iv_date = p_date
                                                iv_day_number = p_numbd)。



 类别lc_date_finder IMPLEMENTATION。
   方法get_nearest_date。
     DATA(lv_day_number)=(iv_date MOD 7)-1。
     DATA(lv_delta_pos)= abs(lv_day_number-iv_day_number)。
     DATA(lv_delta_neg)= abs(iv_day_number-(lv_day_number + 7))。
     rv_nearest_date = COND#(当lv_delta_pos GT lv_delta_neg
                                 然后iv_date-lv_delta_neg
                                 ELSE iv_date + lv_delta_pos)。
   终结法。
 ENDCLASS。




 
半个程序猿
2楼-- · 2020-08-23 13:22

制作一个Abap单元来测试您的方法可能很有趣

一周热门 更多>