[ABAP]如何计算除中断时间以外的两个时间戳之间的差异

2020-09-22 09:31发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中) ABAP专家, 有一个...

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

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


ABAP专家,

有一个特殊要求,下图显示了班级时间表表,班级开始时间(ZAACH1381)和班级结束时间(ZAACH1382)存储在时间戳中,将有两个输入参数:学生加入时间和离开时间(以时间戳格式) 此外,还需要输出学生参加的总时间 (休息时间除外) (以秒为单位)。

PS。 学生可以在休息时间参加,也可以在休息时间离开。

让我们以此为例:

该学生加入20150408084000,然后离开201504081005,因此输出应为:

[20150408100500和20150408084000之间的间隔]-[20150408101000和20150408100500之间的间隔是休息时间]

= 5,100秒-300秒

= 4,800秒

如何实现这种复杂的情况?

百万感谢,

加兰(Galland)

(6.4 kB)
5条回答
四川大学会员
2020-09-22 10:21

嗨Galland Peng,

正如 Matthew Billingham 所述,我只是简单地使用SY-UZEIT而不是时间戳进行解释。 请在下面找到逻辑。 如果需要TIMESTAMP,则相应地转换逻辑。

选择项:s_time FOR l_time缺省'084000'至'100500'。
选择项:s_break FOR l_time缺省'090000'至'091000'。
数据:l_calc_time TYPE sy-uzeit。< br> IF s_time-low LE s_break-high和s_time-high GE s_break-low。
IF s_break-low IN s_time。
l_calc_time = s_break-low-s_time-low。
ENDIF。
如果s_break-high IN s_time。
l_calc_time = l_calc_time + s_time-high-s_break-high。
ENDIF。
ENDIF。
WRITE L_CALC_TIME。

一周热门 更多>