如何在交叉表中按部门报告加班

2020-09-08 03:08发布

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

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


我有一个加班报告,该报告根据每周40小时计算加班时间,并按部门总计加班。 但是,我需要在报告页脚的交叉表中按部门显示总计。 我无法使用加班公式,因为它是根据WhilePrintingRecords计算得出的,并且不可用。 我该怎么做?

这是我目前拥有的。

我对记录进行排序:
1。 年
2。 月
3。 周结束日期
4。 部门
5。 员工姓名

我使用的公式:

1。 @hoursforPDBAHrly =不是PTO,陪审义务等的小时数。
2.#RTHoursWorked = @hoursforPDBAHrly在EmployeeName
3上重置。 OTperWeek =如果{#RTHoursWorked}> 40,则{#RTHoursWorked}-40
4 .. OT BY Dept = numbervar ot; ot:= ot + {@OTperWeek}
5。 resetOT = WhilePrintingRecords; 如果{DeptName} <>上一个{DeptName},则numbervar ot:= 0;
我将重设放在部门4的组头中

除了我无法在报表末尾的交叉表中按部显示总OT之外,此方法有效。 如何调整报告,以便可以在交叉表中按部门显示加班总数。 我想在列中显示年和月,在行中显示部门。

非常感谢!

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

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


我有一个加班报告,该报告根据每周40小时计算加班时间,并按部门总计加班。 但是,我需要在报告页脚的交叉表中按部门显示总计。 我无法使用加班公式,因为它是根据WhilePrintingRecords计算得出的,并且不可用。 我该怎么做?

这是我目前拥有的。

我对记录进行排序:
1。 年
2。 月
3。 周结束日期
4。 部门
5。 员工姓名

我使用的公式:

1。 @hoursforPDBAHrly =不是PTO,陪审义务等的小时数。
2.#RTHoursWorked = @hoursforPDBAHrly在EmployeeName
3上重置。 OTperWeek =如果{#RTHoursWorked}> 40,则{#RTHoursWorked}-40
4 .. OT BY Dept = numbervar ot; ot:= ot + {@OTperWeek}
5。 resetOT = WhilePrintingRecords; 如果{DeptName} <>上一个{DeptName},则numbervar ot:= 0;
我将重设放在部门4的组头中

除了我无法在报表末尾的交叉表中按部显示总OT之外,此方法有效。 如何调整报告,以便可以在交叉表中按部门显示加班总数。 我想在列中显示年和月,在行中显示部门。

非常感谢!

付费偷看设置
发送
2条回答
大道至简
1楼 · 2020-09-08 03:26.采纳回答

嗨,芭芭拉,

这是一种解决方法,涉及创建嵌入式摘要。

1。 创建#RTHoursWorked的副本,并将其设置为在"结束日期"组的更改时重置(如果该字段上没有组,则需要插入并隐藏它)

2 。 插入交叉表。 将"部门"字段用作"行",并将"日期"字段用作"列"

3。 插入Employee字段作为First Summary字段,并将其摘要设置为Distinct Count

4。 插入在步骤1中创建的运行总计作为第二个摘要字段

5。 在预览模式下,右键单击第二个摘要字段>选择"嵌入式摘要">"插入嵌入式摘要"。

6。 右键单击新的摘要单元>嵌入式摘要>编辑计算公式。 使用此代码:

如果GridValueAt(CurrentRowIndex,CurrentColumnIndex,1)> GridValueAt(CurrentRowIndex,CurrentColumnIndex,0)* 40,则
 GridValueAt(CurrentRowIndex,CurrentColumnIndex,1)-(GridValueAt(CurrentRowIndex,CurrentColumnIndex,0)* 40)
 其他
 0 

7。 右键单击汇总单元格之一>汇总字段标签>水平汇总

8。 禁止前两个摘要单元格("雇员"和"总计")并减小其宽度,以使空白非常少。

我希望这会有所帮助。

-阿比拉什

宇峰Kouji
2楼-- · 2020-09-08 03:41

没有一种简单的方法可以使用每日级别的数据来执行此操作-看来您正在执行此操作。

这是我可能尝试的方法:

1。 在报表页脚中创建一个子报表。

2。 对于子报表的数据,请使用命令(SQL select语句)求和每个员工每周的小时数。 在查询中包括交叉表所需的所有其他数据。

3。 创建一个类似于以下的加班公式(HoursWorked是一周的总小时数):

如果{Command.HoursWorked}> 40,然后{Command.HoursWorked}-40否则0 

4。 在交叉表中,列是星期几,行是部门,请使用上方的{@OverTime}公式。

如果您不熟悉Commands,请参见此博客以获取更多信息。 如果您对自己的SQL技能不满意,请告诉我,我可能会帮助您。

-Dell

一周热门 更多>