2020-09-26 05:40发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨社区
我有一个艰巨的任务。 我需要获取报告中两个日期字段之间的分钟数。
这种差异需要排除周末时间,此外,还需要按工作时间计算分钟数。
这里是一个例子:
DATE1 20/09/2017 14:56 DATE2 27/09/2017 23:02
每天工作8小时(9:00 am至6:00 pm)需要像DATE2-DATE1这样的差异
如何解决?
任何帮助将不胜感激!
帕维尔,
我要说一句 Koen Hesters 所说的话,并说这样做最好在后端完成。 幸运的是,尽管首选后端解决方案,但我认为在Webi层尝试解决这一挑战非常有趣。 以下是我的解决方案-它将在博客文章中进行说明,因此我不会做过多的详细介绍,但是,如果您按照以下步骤进行操作,它将可以正常工作。 这里的主要目的是尝试从概念上分离周,天和分钟,然后将它们重新组合在一起,以获取您想要的计算。
由于您每天说8个小时,但引用了9到6个小时,因此我假设午餐时间是12点到1点。我还假设您有两个日期维度,分别称为[start_date]和[end_date]。 相应调整
首先"调整"您的日期,以将其移动到一周的开始或结束日期(假设它们是在周末)
创建变量调整后的开始
=如果DayNumberOfWeek([start_date])> 5然后ToDate(FormatDate(RelativeDate([start_date]; 8-DayNumberOfWeek([start_date])));" MM/dd/yyyy 09:00:00");" MM/dd/yyyy HH:mm:ss")其他[开始日期]
创建可变调整后的结束
=如果DayNumberOfWeek([end_date])> 5然后ToDate(FormatDate(RelativeDate([end_date]; 5-DayNumberOfWeek([end_date])));" MM/dd/yyyy 18:00:00");" MM/dd/yyyy HH:mm:ss")其他[结束日期]
现在,让我们计算已经过去了多少个完整的工作周,以及"剩余"工作日
创建变量可调增量
= DaysBetween([Adjusted Start]; [Adjusted End])
创建介于两周之间的可变调整周数
= Floor([Adj Delta]/7)
创建可变剩余天数
= Abs(DayNumberOfWeek([Adjusted End])-DayNumberOfWeek([Adjusted Start]))
现在,我们需要查看我们的开始/结束时间戳记,以计算出开始日期实际经过了多少"工作时间",或为结束日期留在了表格上。 还可以考虑从中午到下午1点的午餐时间
创建变量可调开始时间
= ToNumber(FormatDate([Adjusted Start];" HH"))
创建变量可调结束时间
= ToNumber(FormatDate([Adjusted End];" HH"))
创建变量可调启动总线最小时间
=如果[Adj Start Hour] <9然后480 ElseIf [Adj Start Hour]> = 18然后0 ElseIf [Adj Start Hour] = 12然后300 Else 1080-(([Adj Start Hour] +([Adj Start 小时] <12))* 60 + ToNumber(FormatDate([Adjusted Start];" mm")))
创建可变的末梢最小总线剩余量
=如果[Adj End Hour] <9然后480 ElseIf [Adj End Hour]> = 18然后0 ElseIf [Adj End Hour] = 12然后300 Else 1080-(([Adj End Hour] +([Adj End 小时] <12))* 60 + ToNumber(FormatDate([Adjusted End];" mm")))
现在您拥有了所需的一切,因此只需将所有内容放到最后一个变量中即可获得"业务记录"
= [调整周数之间] * 5 * 480 + [剩余可调整天数] * 480 + [可调整的起始巴士最小时间]-[可调整的最低巴士结束时间]
这真的很简单
上午9点到下午6点是9个小时-您是否认为午休时间在12点到1点之间?
嗨,
如果您的后端是BW,则建议您尽可能在该级别进行计算。 这样您就可以使用工厂日历
Grtz
科恩
最多设置5个标签!
帕维尔,
我要说一句 Koen Hesters 所说的话,并说这样做最好在后端完成。 幸运的是,尽管首选后端解决方案,但我认为在Webi层尝试解决这一挑战非常有趣。 以下是我的解决方案-它将在博客文章中进行说明,因此我不会做过多的详细介绍,但是,如果您按照以下步骤进行操作,它将可以正常工作。 这里的主要目的是尝试从概念上分离周,天和分钟,然后将它们重新组合在一起,以获取您想要的计算。
由于您每天说8个小时,但引用了9到6个小时,因此我假设午餐时间是12点到1点。我还假设您有两个日期维度,分别称为[start_date]和[end_date]。 相应调整
首先"调整"您的日期,以将其移动到一周的开始或结束日期(假设它们是在周末)
创建变量调整后的开始
创建可变调整后的结束
现在,让我们计算已经过去了多少个完整的工作周,以及"剩余"工作日
创建变量可调增量
创建介于两周之间的可变调整周数
创建可变剩余天数
现在,我们需要查看我们的开始/结束时间戳记,以计算出开始日期实际经过了多少"工作时间",或为结束日期留在了表格上。 还可以考虑从中午到下午1点的午餐时间
创建变量可调开始时间
创建变量可调结束时间
创建变量可调启动总线最小时间
创建可变的末梢最小总线剩余量
现在您拥有了所需的一切,因此只需将所有内容放到最后一个变量中即可获得"业务记录"
这真的很简单
上午9点到下午6点是9个小时-您是否认为午休时间在12点到1点之间?
嗨,
如果您的后端是BW,则建议您尽可能在该级别进行计算。 这样您就可以使用工厂日历
Grtz
科恩
一周热门 更多>