How to meet the Affordable Care Act’s “30 hour” reporting requirement

How do I love healthcare?  Let me count the ways. And, in this case, let me also count the hours and the days. With the new Affordable Care Act (or ACA) becoming effective soon here in the US, I’m often asked how SpinfexIT’s Easy Reporter for SAP HR and Payroll can help to determine which employees will be eligible for coverage under the new law. The good news for SAP customers is that since Easy Reporter reports on real-time data and results from PA, Time, Benefits, Payroll and more, it is more than capable of creating the eligibility reports US employers need to comply with the ACA’s regulations.

One aspect of the new regulation states that if you have 50 or more employees in the US, any employee who averages at least 30 hours a week is entitled to medical benefits.  That sounds easy enough, right?  Just add up all of the hours an employee worked over a period, divide it by the number of weeks, and you get the average hours.

Unfortunately like many things in life, it’s not that simple. Over the course of a year, or a month, or any period of time, an employee may have periods of inactivity in which they are not working. For purposes of calculating an average, we do not want the periods of inactivity to be counted when we calculate the average. This is where a seemingly simple report can get tricky. Fortunately for us, SAP keeps track of employment status on infotype 0000 which allows us to look at an employee’s status dates to determine the number of active days to use as the basis for our average.

Employee Status





Let’s see how to do this (click on any screenshot in this blog to see a larger version). We’ll run a report to determine which employees have averaged at least 30 hours for the period of 1/1/2013 through 12/31/2013. If we look at employee 12321, we can see that he was for all 365 days of 2013.  But how did I come up with that data?  I looked at the first record and saw he was active from 1/1/2013-4/30/2013, which equals 120 days. Looking at the second record we see that he was active from 5/1/2013-12/31/2013, for 245 days. Add those and it totals 365. We also need to evaluate each of these records and their start and end dates in relativity to the report run dates.  This way, regardless of the dates for which we run the report, for we can determine the number of days an employee was active during that period.

Calculating Days

Click to view larger image


Looking at columns I, J and K, we are taking into consideration the report dates in relation to our infotype dates. For our two employees, I have highlighted some boxes in blue.  These are the key pieces of data I will need to total up the number of days an employee worked in column L.  Because I’m using Easy Reporter, I can apply some column filters to column I, J, and K so when L totals it only has the values I want. For the purposes of keeping this blog at a reasonable length, I’m not going to walk through the creation of those filters, but they were created using standard Easy Reporter functionality.

Filtered data

Click to view larger image


This is what the report looks like when it’s run in SAP using Easy Reporter.  Take a look at employee 10451 and you’ll see that his records in the total days column are correct.

Viewing the report in Easy Reporter

Click to view larger image


Using the filters I discussed earlier, the hours in the total column will work out and if we hide all the data that we don’t need, Easy Reporter will merge the records down to show us what we are looking for.  A tip for anyone building this with Easy Reporter, don’t hide anything until you have the desired numbers you are looking for. We often assume things are working, but by hiding columns before we’re done, we lose visibility into the data we need to verify the accuracy of our calculations.

The second part of this report is actually fairly easy.  We need to add in the time data. Easy Reporter has the ability to pull time data from CATSDB, Payroll (hours on a wage type) 2010, and Time Eval.  So, regardless of your method of time capture, if the data is in SAP, you can include it in your report.  Earlier, we reported on average days, but below I’ve added a CATSDB attendance column to total up my attendance types by hours, and used a few calculation fields to determine the number of weeks for which the report was run as well as the average hours worked.  I also included each employee’s benefit groupings.  From the output below, it appears as if there are a few people in my list who averaged over 30 hours that I do not have showing as being eligible for benefits.

Final report in Easy Reporter

Click to view larger image


This is just one report that supports the employer requirements of the ACA and it’s meant to show the capabilities of Easy Reporter. Many SAP HR customers we speak with are considering using ABAP to create the complex reports they need and Easy Reporter can do all of that and more for a fraction of the time and cost.

As a last caveat, customers and potential customers have been asking me how long it takes be to build reports like these with Easy Reporter. As most of you know, Easy Reporter does not require programming or scripts, so everything I have done here is with “out-of-the-box” Easy Reporter features that any user can use. I’ll be honest and tell you that this one was one of the more challenging reports I have been asked to create in a while due to the filters, calculations, etc. Despite that, it still only took me 4 hours to build and test. We all know a report with these complexities going through a standard SDLC process (since you would need ABAP to do this without Easy Reporter) would take much longer than 4 hours.  Happy Reporting!

Latest Blog Post

SpinifexIT News

Follow SpinifexIT

twitter facebook linkedin email  



Cool Vendor